diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 |
| commit | 01095a5d43bbfde13731688ddcf6048ebb8b7721 (patch) | |
| tree | 4def12e759965de927d963ac65840d663ef9d1ea /test/MC | |
| parent | f0f4822ed4b66e3579e92a89f368f8fb860e218e (diff) | |
Vendor import of llvm release_39 branch r276489:vendor/llvm/llvm-release_39-r276489
Diffstat (limited to 'test/MC')
460 files changed, 64739 insertions, 2888 deletions
diff --git a/test/MC/AArch64/arm64-advsimd.s b/test/MC/AArch64/arm64-advsimd.s index 294f09082916..6c68673360c1 100644 --- a/test/MC/AArch64/arm64-advsimd.s +++ b/test/MC/AArch64/arm64-advsimd.s @@ -931,19 +931,19 @@ foo: bic.2s v0, #1, lsl #16 bic.2s v0, #1, lsl #24 -; CHECK: bic.2s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x2f] -; CHECK: bic.2s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x2f] -; CHECK: bic.2s v0, #0x1, lsl #8 ; encoding: [0x20,0x34,0x00,0x2f] -; CHECK: bic.2s v0, #0x1, lsl #16 ; encoding: [0x20,0x54,0x00,0x2f] -; CHECK: bic.2s v0, #0x1, lsl #24 ; encoding: [0x20,0x74,0x00,0x2f] +; CHECK: bic.2s v0, #1 ; encoding: [0x20,0x14,0x00,0x2f] +; CHECK: bic.2s v0, #1 ; encoding: [0x20,0x14,0x00,0x2f] +; CHECK: bic.2s v0, #1, lsl #8 ; encoding: [0x20,0x34,0x00,0x2f] +; CHECK: bic.2s v0, #1, lsl #16 ; encoding: [0x20,0x54,0x00,0x2f] +; CHECK: bic.2s v0, #1, lsl #24 ; encoding: [0x20,0x74,0x00,0x2f] bic.4h v0, #1 bic.4h v0, #1, lsl #0 bic.4h v0, #1, lsl #8 -; CHECK: bic.4h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x2f] -; CHECK: bic.4h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x2f] -; CHECK: bic.4h v0, #0x1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x2f] +; CHECK: bic.4h v0, #1 ; encoding: [0x20,0x94,0x00,0x2f] +; CHECK: bic.4h v0, #1 ; encoding: [0x20,0x94,0x00,0x2f] +; CHECK: bic.4h v0, #1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x2f] bic.4s v0, #1 bic.4s v0, #1, lsl #0 @@ -951,19 +951,19 @@ foo: bic.4s v0, #1, lsl #16 bic.4s v0, #1, lsl #24 -; CHECK: bic.4s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x6f] -; CHECK: bic.4s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x6f] -; CHECK: bic.4s v0, #0x1, lsl #8 ; encoding: [0x20,0x34,0x00,0x6f] -; CHECK: bic.4s v0, #0x1, lsl #16 ; encoding: [0x20,0x54,0x00,0x6f] -; CHECK: bic.4s v0, #0x1, lsl #24 ; encoding: [0x20,0x74,0x00,0x6f] +; CHECK: bic.4s v0, #1 ; encoding: [0x20,0x14,0x00,0x6f] +; CHECK: bic.4s v0, #1 ; encoding: [0x20,0x14,0x00,0x6f] +; CHECK: bic.4s v0, #1, lsl #8 ; encoding: [0x20,0x34,0x00,0x6f] +; CHECK: bic.4s v0, #1, lsl #16 ; encoding: [0x20,0x54,0x00,0x6f] +; CHECK: bic.4s v0, #1, lsl #24 ; encoding: [0x20,0x74,0x00,0x6f] bic.8h v0, #1 bic.8h v0, #1, lsl #0 bic.8h v0, #1, lsl #8 -; CHECK: bic.8h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x6f] -; CHECK: bic.8h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x6f] -; CHECK: bic.8h v0, #0x1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x6f] +; CHECK: bic.8h v0, #1 ; encoding: [0x20,0x94,0x00,0x6f] +; CHECK: bic.8h v0, #1 ; encoding: [0x20,0x94,0x00,0x6f] +; CHECK: bic.8h v0, #1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x6f] fmov.2d v0, #1.250000e-01 @@ -981,19 +981,19 @@ foo: orr.2s v0, #1, lsl #16 orr.2s v0, #1, lsl #24 -; CHECK: orr.2s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x0f] -; CHECK: orr.2s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x0f] -; CHECK: orr.2s v0, #0x1, lsl #8 ; encoding: [0x20,0x34,0x00,0x0f] -; CHECK: orr.2s v0, #0x1, lsl #16 ; encoding: [0x20,0x54,0x00,0x0f] -; CHECK: orr.2s v0, #0x1, lsl #24 ; encoding: [0x20,0x74,0x00,0x0f] +; CHECK: orr.2s v0, #1 ; encoding: [0x20,0x14,0x00,0x0f] +; CHECK: orr.2s v0, #1 ; encoding: [0x20,0x14,0x00,0x0f] +; CHECK: orr.2s v0, #1, lsl #8 ; encoding: [0x20,0x34,0x00,0x0f] +; CHECK: orr.2s v0, #1, lsl #16 ; encoding: [0x20,0x54,0x00,0x0f] +; CHECK: orr.2s v0, #1, lsl #24 ; encoding: [0x20,0x74,0x00,0x0f] orr.4h v0, #1 orr.4h v0, #1, lsl #0 orr.4h v0, #1, lsl #8 -; CHECK: orr.4h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x0f] -; CHECK: orr.4h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x0f] -; CHECK: orr.4h v0, #0x1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x0f] +; CHECK: orr.4h v0, #1 ; encoding: [0x20,0x94,0x00,0x0f] +; CHECK: orr.4h v0, #1 ; encoding: [0x20,0x94,0x00,0x0f] +; CHECK: orr.4h v0, #1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x0f] orr.4s v0, #1 orr.4s v0, #1, lsl #0 @@ -1001,19 +1001,19 @@ foo: orr.4s v0, #1, lsl #16 orr.4s v0, #1, lsl #24 -; CHECK: orr.4s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x4f] -; CHECK: orr.4s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x4f] -; CHECK: orr.4s v0, #0x1, lsl #8 ; encoding: [0x20,0x34,0x00,0x4f] -; CHECK: orr.4s v0, #0x1, lsl #16 ; encoding: [0x20,0x54,0x00,0x4f] -; CHECK: orr.4s v0, #0x1, lsl #24 ; encoding: [0x20,0x74,0x00,0x4f] +; CHECK: orr.4s v0, #1 ; encoding: [0x20,0x14,0x00,0x4f] +; CHECK: orr.4s v0, #1 ; encoding: [0x20,0x14,0x00,0x4f] +; CHECK: orr.4s v0, #1, lsl #8 ; encoding: [0x20,0x34,0x00,0x4f] +; CHECK: orr.4s v0, #1, lsl #16 ; encoding: [0x20,0x54,0x00,0x4f] +; CHECK: orr.4s v0, #1, lsl #24 ; encoding: [0x20,0x74,0x00,0x4f] orr.8h v0, #1 orr.8h v0, #1, lsl #0 orr.8h v0, #1, lsl #8 -; CHECK: orr.8h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x4f] -; CHECK: orr.8h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x4f] -; CHECK: orr.8h v0, #0x1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x4f] +; CHECK: orr.8h v0, #1 ; encoding: [0x20,0x94,0x00,0x4f] +; CHECK: orr.8h v0, #1 ; encoding: [0x20,0x94,0x00,0x4f] +; CHECK: orr.8h v0, #1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x4f] movi d0, #0x000000000000ff movi.2d v0, #0x000000000000ff @@ -1027,11 +1027,11 @@ foo: movi.2s v0, #1, lsl #16 movi.2s v0, #1, lsl #24 -; CHECK: movi.2s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x0f] -; CHECK: movi.2s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x0f] -; CHECK: movi.2s v0, #0x1, lsl #8 ; encoding: [0x20,0x24,0x00,0x0f] -; CHECK: movi.2s v0, #0x1, lsl #16 ; encoding: [0x20,0x44,0x00,0x0f] -; CHECK: movi.2s v0, #0x1, lsl #24 ; encoding: [0x20,0x64,0x00,0x0f] +; CHECK: movi.2s v0, #1 ; encoding: [0x20,0x04,0x00,0x0f] +; CHECK: movi.2s v0, #1 ; encoding: [0x20,0x04,0x00,0x0f] +; CHECK: movi.2s v0, #1, lsl #8 ; encoding: [0x20,0x24,0x00,0x0f] +; CHECK: movi.2s v0, #1, lsl #16 ; encoding: [0x20,0x44,0x00,0x0f] +; CHECK: movi.2s v0, #1, lsl #24 ; encoding: [0x20,0x64,0x00,0x0f] movi.4s v0, #1 movi.4s v0, #1, lsl #0 @@ -1039,43 +1039,43 @@ foo: movi.4s v0, #1, lsl #16 movi.4s v0, #1, lsl #24 -; CHECK: movi.4s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x4f] -; CHECK: movi.4s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x4f] -; CHECK: movi.4s v0, #0x1, lsl #8 ; encoding: [0x20,0x24,0x00,0x4f] -; CHECK: movi.4s v0, #0x1, lsl #16 ; encoding: [0x20,0x44,0x00,0x4f] -; CHECK: movi.4s v0, #0x1, lsl #24 ; encoding: [0x20,0x64,0x00,0x4f] +; CHECK: movi.4s v0, #1 ; encoding: [0x20,0x04,0x00,0x4f] +; CHECK: movi.4s v0, #1 ; encoding: [0x20,0x04,0x00,0x4f] +; CHECK: movi.4s v0, #1, lsl #8 ; encoding: [0x20,0x24,0x00,0x4f] +; CHECK: movi.4s v0, #1, lsl #16 ; encoding: [0x20,0x44,0x00,0x4f] +; CHECK: movi.4s v0, #1, lsl #24 ; encoding: [0x20,0x64,0x00,0x4f] movi.4h v0, #1 movi.4h v0, #1, lsl #0 movi.4h v0, #1, lsl #8 -; CHECK: movi.4h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x0f] -; CHECK: movi.4h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x0f] -; CHECK: movi.4h v0, #0x1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x0f] +; CHECK: movi.4h v0, #1 ; encoding: [0x20,0x84,0x00,0x0f] +; CHECK: movi.4h v0, #1 ; encoding: [0x20,0x84,0x00,0x0f] +; CHECK: movi.4h v0, #1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x0f] movi.8h v0, #1 movi.8h v0, #1, lsl #0 movi.8h v0, #1, lsl #8 -; CHECK: movi.8h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x4f] -; CHECK: movi.8h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x4f] -; CHECK: movi.8h v0, #0x1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x4f] +; CHECK: movi.8h v0, #1 ; encoding: [0x20,0x84,0x00,0x4f] +; CHECK: movi.8h v0, #1 ; encoding: [0x20,0x84,0x00,0x4f] +; CHECK: movi.8h v0, #1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x4f] movi.2s v0, #1, msl #8 movi.2s v0, #1, msl #16 movi.4s v0, #1, msl #8 movi.4s v0, #1, msl #16 -; CHECK: movi.2s v0, #0x1, msl #8 ; encoding: [0x20,0xc4,0x00,0x0f] -; CHECK: movi.2s v0, #0x1, msl #16 ; encoding: [0x20,0xd4,0x00,0x0f] -; CHECK: movi.4s v0, #0x1, msl #8 ; encoding: [0x20,0xc4,0x00,0x4f] -; CHECK: movi.4s v0, #0x1, msl #16 ; encoding: [0x20,0xd4,0x00,0x4f] +; CHECK: movi.2s v0, #1, msl #8 ; encoding: [0x20,0xc4,0x00,0x0f] +; CHECK: movi.2s v0, #1, msl #16 ; encoding: [0x20,0xd4,0x00,0x0f] +; CHECK: movi.4s v0, #1, msl #8 ; encoding: [0x20,0xc4,0x00,0x4f] +; CHECK: movi.4s v0, #1, msl #16 ; encoding: [0x20,0xd4,0x00,0x4f] movi.8b v0, #1 movi.16b v0, #1 -; CHECK: movi.8b v0, #0x1 ; encoding: [0x20,0xe4,0x00,0x0f] -; CHECK: movi.16b v0, #0x1 ; encoding: [0x20,0xe4,0x00,0x4f] +; CHECK: movi.8b v0, #1 ; encoding: [0x20,0xe4,0x00,0x0f] +; CHECK: movi.16b v0, #1 ; encoding: [0x20,0xe4,0x00,0x4f] mvni.2s v0, #1 mvni.2s v0, #1, lsl #0 @@ -1083,11 +1083,11 @@ foo: mvni.2s v0, #1, lsl #16 mvni.2s v0, #1, lsl #24 -; CHECK: mvni.2s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x2f] -; CHECK: mvni.2s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x2f] -; CHECK: mvni.2s v0, #0x1, lsl #8 ; encoding: [0x20,0x24,0x00,0x2f] -; CHECK: mvni.2s v0, #0x1, lsl #16 ; encoding: [0x20,0x44,0x00,0x2f] -; CHECK: mvni.2s v0, #0x1, lsl #24 ; encoding: [0x20,0x64,0x00,0x2f] +; CHECK: mvni.2s v0, #1 ; encoding: [0x20,0x04,0x00,0x2f] +; CHECK: mvni.2s v0, #1 ; encoding: [0x20,0x04,0x00,0x2f] +; CHECK: mvni.2s v0, #1, lsl #8 ; encoding: [0x20,0x24,0x00,0x2f] +; CHECK: mvni.2s v0, #1, lsl #16 ; encoding: [0x20,0x44,0x00,0x2f] +; CHECK: mvni.2s v0, #1, lsl #24 ; encoding: [0x20,0x64,0x00,0x2f] mvni.4s v0, #1 mvni.4s v0, #1, lsl #0 @@ -1095,37 +1095,37 @@ foo: mvni.4s v0, #1, lsl #16 mvni.4s v0, #1, lsl #24 -; CHECK: mvni.4s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x6f] -; CHECK: mvni.4s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x6f] -; CHECK: mvni.4s v0, #0x1, lsl #8 ; encoding: [0x20,0x24,0x00,0x6f] -; CHECK: mvni.4s v0, #0x1, lsl #16 ; encoding: [0x20,0x44,0x00,0x6f] -; CHECK: mvni.4s v0, #0x1, lsl #24 ; encoding: [0x20,0x64,0x00,0x6f] +; CHECK: mvni.4s v0, #1 ; encoding: [0x20,0x04,0x00,0x6f] +; CHECK: mvni.4s v0, #1 ; encoding: [0x20,0x04,0x00,0x6f] +; CHECK: mvni.4s v0, #1, lsl #8 ; encoding: [0x20,0x24,0x00,0x6f] +; CHECK: mvni.4s v0, #1, lsl #16 ; encoding: [0x20,0x44,0x00,0x6f] +; CHECK: mvni.4s v0, #1, lsl #24 ; encoding: [0x20,0x64,0x00,0x6f] mvni.4h v0, #1 mvni.4h v0, #1, lsl #0 mvni.4h v0, #1, lsl #8 -; CHECK: mvni.4h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x2f] -; CHECK: mvni.4h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x2f] -; CHECK: mvni.4h v0, #0x1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x2f] +; CHECK: mvni.4h v0, #1 ; encoding: [0x20,0x84,0x00,0x2f] +; CHECK: mvni.4h v0, #1 ; encoding: [0x20,0x84,0x00,0x2f] +; CHECK: mvni.4h v0, #1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x2f] mvni.8h v0, #1 mvni.8h v0, #1, lsl #0 mvni.8h v0, #1, lsl #8 -; CHECK: mvni.8h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x6f] -; CHECK: mvni.8h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x6f] -; CHECK: mvni.8h v0, #0x1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x6f] +; CHECK: mvni.8h v0, #1 ; encoding: [0x20,0x84,0x00,0x6f] +; CHECK: mvni.8h v0, #1 ; encoding: [0x20,0x84,0x00,0x6f] +; CHECK: mvni.8h v0, #1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x6f] mvni.2s v0, #1, msl #8 mvni.2s v0, #1, msl #16 mvni.4s v0, #1, msl #8 mvni.4s v0, #1, msl #16 -; CHECK: mvni.2s v0, #0x1, msl #8 ; encoding: [0x20,0xc4,0x00,0x2f] -; CHECK: mvni.2s v0, #0x1, msl #16 ; encoding: [0x20,0xd4,0x00,0x2f] -; CHECK: mvni.4s v0, #0x1, msl #8 ; encoding: [0x20,0xc4,0x00,0x6f] -; CHECK: mvni.4s v0, #0x1, msl #16 ; encoding: [0x20,0xd4,0x00,0x6f] +; CHECK: mvni.2s v0, #1, msl #8 ; encoding: [0x20,0xc4,0x00,0x2f] +; CHECK: mvni.2s v0, #1, msl #16 ; encoding: [0x20,0xd4,0x00,0x2f] +; CHECK: mvni.4s v0, #1, msl #8 ; encoding: [0x20,0xc4,0x00,0x6f] +; CHECK: mvni.4s v0, #1, msl #16 ; encoding: [0x20,0xd4,0x00,0x6f] ;===-------------------------------------------------------------------------=== ; AdvSIMD scalar x index diff --git a/test/MC/AArch64/arm64-aliases.s b/test/MC/AArch64/arm64-aliases.s index c3affe37aa9c..3ace7a0f7183 100644 --- a/test/MC/AArch64/arm64-aliases.s +++ b/test/MC/AArch64/arm64-aliases.s @@ -1,4 +1,4 @@ -; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -output-asm-variant=1 -show-encoding < %s | FileCheck %s +; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -output-asm-variant=1 -show-encoding -print-imm-hex < %s | FileCheck %s foo: ;----------------------------------------------------------------------------- @@ -66,8 +66,8 @@ foo: cmn x2, w3, uxtb #1 cmn x4, x5, uxtx #1 -; CHECK: cmn w1, #3 ; encoding: [0x3f,0x0c,0x00,0x31] -; CHECK: cmn x2, #1024, lsl #12 ; encoding: [0x5f,0x00,0x50,0xb1] +; CHECK: cmn w1, #0x3 ; encoding: [0x3f,0x0c,0x00,0x31] +; CHECK: cmn x2, #0x400, lsl #12 ; encoding: [0x5f,0x00,0x50,0xb1] ; CHECK: cmn w4, w5 ; encoding: [0x9f,0x00,0x05,0x2b] ; CHECK: cmn x6, x7 ; encoding: [0xdf,0x00,0x07,0xab] ; CHECK: cmn w8, w9, asr #3 ; encoding: [0x1f,0x0d,0x89,0x2b] @@ -92,8 +92,8 @@ foo: cmp w9, w8, uxtw cmp wsp, w9, lsl #0 -; CHECK: cmp w1, #1024, lsl #12 ; encoding: [0x3f,0x00,0x50,0x71] -; CHECK: cmp x2, #1024 ; encoding: [0x5f,0x00,0x10,0xf1] +; CHECK: cmp w1, #0x400, lsl #12 ; encoding: [0x3f,0x00,0x50,0x71] +; CHECK: cmp x2, #0x400 ; encoding: [0x5f,0x00,0x10,0xf1] ; CHECK: cmp w4, w5 ; encoding: [0x9f,0x00,0x05,0x6b] ; CHECK: cmp x6, x7 ; encoding: [0xdf,0x00,0x07,0xeb] ; CHECK: cmp w8, w9, asr #3 ; encoding: [0x1f,0x0d,0x89,0x6b] @@ -134,18 +134,101 @@ foo: mov x0, #281470681743360 mov x0, #18446744073709486080 -; CHECK: movz x0, #0xffff, lsl #32 -; CHECK: movn x0, #0xffff +; CHECK: mov x0, #0xffff00000000 +; CHECK: mov x0, #-0x10000 mov w0, #0xffffffff mov w0, #0xffffff00 mov wzr, #0xffffffff mov wzr, #0xffffff00 -; CHECK: movn w0, #0 -; CHECK: movn w0, #0xff -; CHECK: movn wzr, #0 -; CHECK: movn wzr, #0xff +; CHECK: mov w0, #-0x1 +; CHECK: mov w0, #-0x100 +; CHECK: mov wzr, #-0x1 +; CHECK: mov wzr, #-0x100 + + ; 0 can be encoded by MOVZ in multiple ways, only "lsl #0" is a MOV alias. + movz x0, #0 + movz x0, #0, lsl #16 + movz x0, #0, lsl #32 + movz x0, #0, lsl #48 + movz w0, #0 + movz w0, #0, lsl #16 +; CHECK: mov x0, #0x0 +; CHECK: movz x0, #0x0, lsl #16 +; CHECK: movz x0, #0x0, lsl #32 +; CHECK: movz x0, #0x0, lsl #48 +; CHECK: mov w0, #0x0 +; CHECK: movz w0, #0x0, lsl #16 + + ; Similarly to MOVZ, -1 can be encoded in multiple ways, only one of which is + ; "MOV". + movn x0, #0 + movn x0, #0, lsl #16 + movn x0, #0, lsl #32 + movn x0, #0, lsl #48 + movn w0, #0 + movn w0, #0, lsl #16 +; CHECK: mov x0, #-0x1 +; CHECK: movn x0, #0x0, lsl #16 +; CHECK: movn x0, #0x0, lsl #32 +; CHECK: movn x0, #0x0, lsl #48 +; CHECK: mov w0, #-0x1 +; CHECK: movn w0, #0x0, lsl #16 + + ; Two 32-bit immediates are encodable by both MOVN and MOVZ, make sure the MOV + ; corresponds to the MOVZ version. + movz w0, #0xffff + movz w0, #0xffff, lsl #16 + movn w0, #0xffff + movn w0, #0xffff, lsl #16 +; CHECK: mov w0, #0xffff +; CHECK: mov w0, #-0x10000 +; CHECK: movn w0, #0xffff +; CHECK: movn w0, #0xffff, lsl #16 + + orr x20, xzr, #0xaaaaaaaaaaaaaaaa + orr w15, wzr, #0xaaaaaaaa +; CHECK: mov x20, #-0x5555555555555556 +; CHECK: mov w15, #-0x55555556 + + ; ORR is mostly repeating bit sequences and cannot encode -1, so it only + ; overlaps with MOVZ or MOVN if the repeat-width is the whole register. In + ; both cases MOVZ/MOVN are preferred. + orr x3, xzr, #0x1 + orr w3, wzr, #0x1 + orr x3, xzr, #0x10000 + orr w3, wzr, #0x10000 + orr x3, xzr, #0x700000000 + orr x3, xzr, #0x3000000000000 +; CHECK: orr x3, xzr, #0x1 +; CHECK: orr w3, wzr, #0x1 +; CHECK: orr x3, xzr, #0x10000 +; CHECK: orr w3, wzr, #0x10000 +; CHECK: orr x3, xzr, #0x700000000 +; CHECK: orr x3, xzr, #0x3000000000000 + + + orr x5, xzr, #0xfffffffffffffff0 + orr w2, wzr, #0xfffffffe + orr x5, xzr, #0xfffffffffcffffff + orr w2, wzr, #0xf0ffffff + orr x5, xzr, #0xffffff00ffffffff + orr x5, xzr, #0x8000ffffffffffff +; CHECK: orr x5, xzr, #0xfffffffffffffff0 +; CHECK: orr w2, wzr, #0xfffffffe +; CHECK: orr x5, xzr, #0x8000ffffffffffff + + ; 0xffff is interesting because there are exceptions in the MOVN rules for + ; it. Make sure we don't accidentally fall down any of those holes. + orr w3, wzr, #0xffff0000 + orr w3, wzr, #0xffff + orr x3, xzr, #0xffff000000000000 + orr x5, xzr, #0x0000ffffffffffff +; CHECK: orr w3, wzr, #0xffff0000 +; CHECK: orr w3, wzr, #0xffff +; CHECK: orr x3, xzr, #0xffff000000000000 +; CHECK: orr x5, xzr, #0xffffffffffff ;----------------------------------------------------------------------------- ; MVN aliases @@ -218,8 +301,8 @@ foo: ubfm x0, x0, #63, #62 ubfm w0, w0, #4, #31 ubfm x0, x0, #4, #63 -; CHECK: ror w1, w3, #5 -; CHECK: ror x1, x3, #5 +; CHECK: ror w1, w3, #0x5 +; CHECK: ror x1, x3, #0x5 ror w1, w3, #5 ror x1, x3, #5 ; CHECK: lsl w1, wzr, #3 @@ -745,7 +828,7 @@ foo: movi v1.2d, #0x000000000000ff movi v2.2D, #0x000000000000ff -; CHECK: movi.16b v4, #0 ; encoding: [0x04,0xe4,0x00,0x4f] +; CHECK: movi.16b v4, #0x0 ; encoding: [0x04,0xe4,0x00,0x4f] ; CHECK: movi.16b v4, #0x1 ; encoding: [0x24,0xe4,0x00,0x4f] ; CHECK: movi.8b v4, #0x2 ; encoding: [0x44,0xe4,0x00,0x0f] ; CHECK: movi.8b v4, #0x3 ; encoding: [0x64,0xe4,0x00,0x0f] diff --git a/test/MC/AArch64/arm64-arithmetic-encoding.s b/test/MC/AArch64/arm64-arithmetic-encoding.s index 5fd591240e25..7b090692de31 100644 --- a/test/MC/AArch64/arm64-arithmetic-encoding.s +++ b/test/MC/AArch64/arm64-arithmetic-encoding.s @@ -494,30 +494,30 @@ foo: movz w0, #1, lsl #16 movz x0, #1, lsl #16 -; CHECK: movz w0, #0x1 ; encoding: [0x20,0x00,0x80,0x52] -; CHECK: movz x0, #0x1 ; encoding: [0x20,0x00,0x80,0xd2] -; CHECK: movz w0, #0x1, lsl #16 ; encoding: [0x20,0x00,0xa0,0x52] -; CHECK: movz x0, #0x1, lsl #16 ; encoding: [0x20,0x00,0xa0,0xd2] +; CHECK: mov w0, #1 ; encoding: [0x20,0x00,0x80,0x52] +; CHECK: mov x0, #1 ; encoding: [0x20,0x00,0x80,0xd2] +; CHECK: mov w0, #65536 ; encoding: [0x20,0x00,0xa0,0x52] +; CHECK: mov x0, #65536 ; encoding: [0x20,0x00,0xa0,0xd2] movn w0, #2 movn x0, #2 movn w0, #2, lsl #16 movn x0, #2, lsl #16 -; CHECK: movn w0, #0x2 ; encoding: [0x40,0x00,0x80,0x12] -; CHECK: movn x0, #0x2 ; encoding: [0x40,0x00,0x80,0x92] -; CHECK: movn w0, #0x2, lsl #16 ; encoding: [0x40,0x00,0xa0,0x12] -; CHECK: movn x0, #0x2, lsl #16 ; encoding: [0x40,0x00,0xa0,0x92] +; CHECK: mov w0, #-3 ; encoding: [0x40,0x00,0x80,0x12] +; CHECK: mov x0, #-3 ; encoding: [0x40,0x00,0x80,0x92] +; CHECK: mov w0, #-131073 ; encoding: [0x40,0x00,0xa0,0x12] +; CHECK: mov x0, #-131073 ; encoding: [0x40,0x00,0xa0,0x92] movk w0, #1 movk x0, #1 movk w0, #1, lsl #16 movk x0, #1, lsl #16 -; CHECK: movk w0, #0x1 ; encoding: [0x20,0x00,0x80,0x72] -; CHECK: movk x0, #0x1 ; encoding: [0x20,0x00,0x80,0xf2] -; CHECK: movk w0, #0x1, lsl #16 ; encoding: [0x20,0x00,0xa0,0x72] -; CHECK: movk x0, #0x1, lsl #16 ; encoding: [0x20,0x00,0xa0,0xf2] +; CHECK: movk w0, #1 ; encoding: [0x20,0x00,0x80,0x72] +; CHECK: movk x0, #1 ; encoding: [0x20,0x00,0x80,0xf2] +; CHECK: movk w0, #1, lsl #16 ; encoding: [0x20,0x00,0xa0,0x72] +; CHECK: movk x0, #1, lsl #16 ; encoding: [0x20,0x00,0xa0,0xf2] ;==---------------------------------------------------------------------------== ; Conditionally set flags instructions diff --git a/test/MC/AArch64/arm64-spsel-sysreg.s b/test/MC/AArch64/arm64-spsel-sysreg.s index f1d94d8c2d8b..f1c675f6edf4 100644 --- a/test/MC/AArch64/arm64-spsel-sysreg.s +++ b/test/MC/AArch64/arm64-spsel-sysreg.s @@ -8,11 +8,11 @@ msr ESR_EL1, x0 mrs x0, SPSel mrs x0, ESR_EL1 -// CHECK: msr SPSEL, #0 // encoding: [0xbf,0x40,0x00,0xd5] -// CHECK: msr SPSEL, x0 // encoding: [0x00,0x42,0x18,0xd5] -// CHECK: msr DAIFSET, #0 // encoding: [0xdf,0x40,0x03,0xd5] +// CHECK: msr SPSel, #0 // encoding: [0xbf,0x40,0x00,0xd5] +// CHECK: msr SPSel, x0 // encoding: [0x00,0x42,0x18,0xd5] +// CHECK: msr DAIFSet, #0 // encoding: [0xdf,0x40,0x03,0xd5] // CHECK: msr ESR_EL1, x0 // encoding: [0x00,0x52,0x18,0xd5] -// CHECK: mrs x0, SPSEL // encoding: [0x00,0x42,0x38,0xd5] +// CHECK: mrs x0, SPSel // encoding: [0x00,0x42,0x38,0xd5] // CHECK: mrs x0, ESR_EL1 // encoding: [0x00,0x52,0x38,0xd5] diff --git a/test/MC/AArch64/arm64-system-encoding.s b/test/MC/AArch64/arm64-system-encoding.s index eb29117428fd..ef4037b7bf3f 100644 --- a/test/MC/AArch64/arm64-system-encoding.s +++ b/test/MC/AArch64/arm64-system-encoding.s @@ -167,7 +167,7 @@ foo: ; CHECK: msr CPTR_EL2, x3 ; encoding: [0x43,0x11,0x1c,0xd5] ; CHECK: msr CPTR_EL3, x3 ; encoding: [0x43,0x11,0x1e,0xd5] ; CHECK: msr CSSELR_EL1, x3 ; encoding: [0x03,0x00,0x1a,0xd5] -; CHECK: msr CURRENTEL, x3 ; encoding: [0x43,0x42,0x18,0xd5] +; CHECK: msr CurrentEL, x3 ; encoding: [0x43,0x42,0x18,0xd5] ; CHECK: msr DACR32_EL2, x3 ; encoding: [0x03,0x30,0x1c,0xd5] ; CHECK: msr ESR_EL1, x3 ; encoding: [0x03,0x52,0x18,0xd5] ; CHECK: msr ESR_EL2, x3 ; encoding: [0x03,0x52,0x1c,0xd5] @@ -213,7 +213,7 @@ foo: ; CHECK: msr VPIDR_EL2, x3 ; encoding: [0x03,0x00,0x1c,0xd5] ; CHECK: msr VTCR_EL2, x3 ; encoding: [0x43,0x21,0x1c,0xd5] ; CHECK: msr VTTBR_EL2, x3 ; encoding: [0x03,0x21,0x1c,0xd5] -; CHECK: msr SPSEL, x3 ; encoding: [0x03,0x42,0x18,0xd5] +; CHECK: msr SPSel, x3 ; encoding: [0x03,0x42,0x18,0xd5] ; CHECK: msr S3_2_C11_C6_4, x1 ; encoding: [0x81,0xb6,0x1a,0xd5] ; CHECK: msr S0_0_C0_C0_0, x0 ; encoding: [0x00,0x00,0x00,0xd5] ; CHECK: msr S1_2_C3_C4_5, x2 ; encoding: [0xa2,0x34,0x0a,0xd5] @@ -439,7 +439,7 @@ foo: ; CHECK: mrs x3, CPTR_EL3 ; encoding: [0x43,0x11,0x3e,0xd5] ; CHECK: mrs x3, CSSELR_EL1 ; encoding: [0x03,0x00,0x3a,0xd5] ; CHECK: mrs x3, CTR_EL0 ; encoding: [0x23,0x00,0x3b,0xd5] -; CHECK: mrs x3, CURRENTEL ; encoding: [0x43,0x42,0x38,0xd5] +; CHECK: mrs x3, CurrentEL ; encoding: [0x43,0x42,0x38,0xd5] ; CHECK: mrs x3, DACR32_EL2 ; encoding: [0x03,0x30,0x3c,0xd5] ; CHECK: mrs x3, DCZID_EL0 ; encoding: [0xe3,0x00,0x3b,0xd5] ; CHECK: mrs x3, REVIDR_EL1 ; encoding: [0xc3,0x00,0x38,0xd5] diff --git a/test/MC/AArch64/basic-a64-instructions.s b/test/MC/AArch64/basic-a64-instructions.s index f8e49432145b..8a82c99eb8c1 100644 --- a/test/MC/AArch64/basic-a64-instructions.s +++ b/test/MC/AArch64/basic-a64-instructions.s @@ -3267,8 +3267,8 @@ _func: mov w3, #0xf000f mov x10, #0xaaaaaaaaaaaaaaaa -// CHECK: orr w3, wzr, #0xf000f // encoding: [0xe3,0x8f,0x00,0x32] -// CHECK: orr x10, xzr, #0xaaaaaaaaaaaaaaaa // encoding: [0xea,0xf3,0x01,0xb2] +// CHECK: mov w3, #983055 // encoding: [0xe3,0x8f,0x00,0x32] +// CHECK: mov x10, #-6148914691236517206 // encoding: [0xea,0xf3,0x01,0xb2] // The Imm field of logicalImm operations has to be truncated to the // register width, i.e. 32 bits @@ -3355,13 +3355,13 @@ _func: movz w1, #65535, lsl #0 movz w2, #0, lsl #16 movn w2, #1234, lsl #0 -// CHECK: movz w1, #{{65535|0xffff}} // encoding: [0xe1,0xff,0x9f,0x52] +// CHECK: mov w1, #65535 // encoding: [0xe1,0xff,0x9f,0x52] // CHECK: movz w2, #0, lsl #16 // encoding: [0x02,0x00,0xa0,0x52] -// CHECK: movn w2, #{{1234|0x4d2}} // encoding: [0x42,0x9a,0x80,0x12] +// CHECK: mov w2, #-1235 // encoding: [0x42,0x9a,0x80,0x12] movz x2, #1234, lsl #32 movk xzr, #4321, lsl #48 -// CHECK: movz x2, #{{1234|0x4d2}}, lsl #32 // encoding: [0x42,0x9a,0xc0,0xd2] +// CHECK: mov x2, #5299989643264 // encoding: [0x42,0x9a,0xc0,0xd2] // CHECK: movk xzr, #{{4321|0x10e1}}, lsl #48 // encoding: [0x3f,0x1c,0xe2,0xf2] movz x2, #:abs_g0:sym @@ -3571,9 +3571,9 @@ _func: msr spsel, #0 msr daifset, #15 msr daifclr, #12 -// CHECK: msr {{spsel|SPSEL}}, #0 // encoding: [0xbf,0x40,0x00,0xd5] -// CHECK: msr {{daifset|DAIFSET}}, #15 // encoding: [0xdf,0x4f,0x03,0xd5] -// CHECK: msr {{daifclr|DAIFCLR}}, #12 // encoding: [0xff,0x4c,0x03,0xd5] +// CHECK: msr {{SPSel|SPSEL}}, #0 // encoding: [0xbf,0x40,0x00,0xd5] +// CHECK: msr {{DAIFSet|DAIFSET}}, #15 // encoding: [0xdf,0x4f,0x03,0xd5] +// CHECK: msr {{DAIFClr|DAIFCLR}}, #12 // encoding: [0xff,0x4c,0x03,0xd5] sys #7, c5, c9, #7, x5 sys #0, c15, c15, #2 @@ -4070,14 +4070,14 @@ _func: // CHECK: msr {{sp_el0|SP_EL0}}, x12 // encoding: [0x0c,0x41,0x18,0xd5] // CHECK: msr {{sp_el1|SP_EL1}}, x12 // encoding: [0x0c,0x41,0x1c,0xd5] // CHECK: msr {{sp_el2|SP_EL2}}, x12 // encoding: [0x0c,0x41,0x1e,0xd5] -// CHECK: msr {{spsel|SPSEL}}, x12 // encoding: [0x0c,0x42,0x18,0xd5] +// CHECK: msr {{SPSel|SPSEL}}, x12 // encoding: [0x0c,0x42,0x18,0xd5] // CHECK: msr {{nzcv|NZCV}}, x12 // encoding: [0x0c,0x42,0x1b,0xd5] // CHECK: msr {{daif|DAIF}}, x12 // encoding: [0x2c,0x42,0x1b,0xd5] -// CHECK: msr {{currentel|CURRENTEL}}, x12 // encoding: [0x4c,0x42,0x18,0xd5] -// CHECK: msr {{spsr_irq|SPSR_IRQ}}, x12 // encoding: [0x0c,0x43,0x1c,0xd5] -// CHECK: msr {{spsr_abt|SPSR_ABT}}, x12 // encoding: [0x2c,0x43,0x1c,0xd5] -// CHECK: msr {{spsr_und|SPSR_UND}}, x12 // encoding: [0x4c,0x43,0x1c,0xd5] -// CHECK: msr {{spsr_fiq|SPSR_FIQ}}, x12 // encoding: [0x6c,0x43,0x1c,0xd5] +// CHECK: msr {{CurrentEL|CURRENTEL}}, x12 // encoding: [0x4c,0x42,0x18,0xd5] +// CHECK: msr {{SPSR_irq|SPSR_IRQ}}, x12 // encoding: [0x0c,0x43,0x1c,0xd5] +// CHECK: msr {{SPSR_abt|SPSR_ABT}}, x12 // encoding: [0x2c,0x43,0x1c,0xd5] +// CHECK: msr {{SPSR_und|SPSR_UND}}, x12 // encoding: [0x4c,0x43,0x1c,0xd5] +// CHECK: msr {{SPSR_fiq|SPSR_FIQ}}, x12 // encoding: [0x6c,0x43,0x1c,0xd5] // CHECK: msr {{fpcr|FPCR}}, x12 // encoding: [0x0c,0x44,0x1b,0xd5] // CHECK: msr {{fpsr|FPSR}}, x12 // encoding: [0x2c,0x44,0x1b,0xd5] // CHECK: msr {{dspsr_el0|DSPSR_EL0}}, x12 // encoding: [0x0c,0x45,0x1b,0xd5] @@ -4665,14 +4665,14 @@ _func: // CHECK: mrs x9, {{sp_el0|SP_EL0}} // encoding: [0x09,0x41,0x38,0xd5] // CHECK: mrs x9, {{sp_el1|SP_EL1}} // encoding: [0x09,0x41,0x3c,0xd5] // CHECK: mrs x9, {{sp_el2|SP_EL2}} // encoding: [0x09,0x41,0x3e,0xd5] -// CHECK: mrs x9, {{spsel|SPSEL}} // encoding: [0x09,0x42,0x38,0xd5] +// CHECK: mrs x9, {{SPSel|SPSEL}} // encoding: [0x09,0x42,0x38,0xd5] // CHECK: mrs x9, {{nzcv|NZCV}} // encoding: [0x09,0x42,0x3b,0xd5] // CHECK: mrs x9, {{daif|DAIF}} // encoding: [0x29,0x42,0x3b,0xd5] -// CHECK: mrs x9, {{currentel|CURRENTEL}} // encoding: [0x49,0x42,0x38,0xd5] -// CHECK: mrs x9, {{spsr_irq|SPSR_IRQ}} // encoding: [0x09,0x43,0x3c,0xd5] -// CHECK: mrs x9, {{spsr_abt|SPSR_ABT}} // encoding: [0x29,0x43,0x3c,0xd5] -// CHECK: mrs x9, {{spsr_und|SPSR_UND}} // encoding: [0x49,0x43,0x3c,0xd5] -// CHECK: mrs x9, {{spsr_fiq|SPSR_FIQ}} // encoding: [0x69,0x43,0x3c,0xd5] +// CHECK: mrs x9, {{CurrentEL|CURRENTEL}} // encoding: [0x49,0x42,0x38,0xd5] +// CHECK: mrs x9, {{SPSR_irq|SPSR_IRQ}} // encoding: [0x09,0x43,0x3c,0xd5] +// CHECK: mrs x9, {{SPSR_abt|SPSR_ABT}} // encoding: [0x29,0x43,0x3c,0xd5] +// CHECK: mrs x9, {{SPSR_und|SPSR_UND}} // encoding: [0x49,0x43,0x3c,0xd5] +// CHECK: mrs x9, {{SPSR_fiq|SPSR_FIQ}} // encoding: [0x69,0x43,0x3c,0xd5] // CHECK: mrs x9, {{fpcr|FPCR}} // encoding: [0x09,0x44,0x3b,0xd5] // CHECK: mrs x9, {{fpsr|FPSR}} // encoding: [0x29,0x44,0x3b,0xd5] // CHECK: mrs x9, {{dspsr_el0|DSPSR_EL0}} // encoding: [0x09,0x45,0x3b,0xd5] diff --git a/test/MC/AArch64/cyclone-crc.s b/test/MC/AArch64/cyclone-crc.s new file mode 100644 index 000000000000..5786df51ddeb --- /dev/null +++ b/test/MC/AArch64/cyclone-crc.s @@ -0,0 +1,27 @@ +// RUN: not llvm-mc -triple arm64-apple-ios -mcpu=cyclone %s 2>&1 | FileCheck %s + + crc32b w0, w1, w5 + crc32h w3, w5, w6 + crc32w w19, wzr, w20 + crc32x w3, w5, x20 +CHECK: error: instruction requires: crc +CHECK: crc32b w0, w1, w5 +CHECK: error: instruction requires: crc +CHECK: crc32h w3, w5, w6 +CHECK: error: instruction requires: crc +CHECK: crc32w w19, wzr, w20 +CHECK: error: instruction requires: crc +CHECK: crc32x w3, w5, x20 + + crc32cb w5, w10, w15 + crc32ch w3, w5, w7 + crc32cw w11, w13, w17 + crc32cx w19, w23, x29 +CHECK: error: instruction requires: crc +CHECK: crc32cb w5, w10, w15 +CHECK: error: instruction requires: crc +CHECK: crc32ch w3, w5, w7 +CHECK: error: instruction requires: crc +CHECK: crc32cw w11, w13, w17 +CHECK: error: instruction requires: crc +CHECK: crc32cx w19, w23, x29 diff --git a/test/MC/AArch64/directive-arch-negative.s b/test/MC/AArch64/directive-arch-negative.s new file mode 100644 index 000000000000..47e8176cb593 --- /dev/null +++ b/test/MC/AArch64/directive-arch-negative.s @@ -0,0 +1,35 @@ +// RUN: not llvm-mc -triple aarch64-unknown-none-eabi -filetype asm -o - %s 2>&1 | FileCheck %s + + .arch axp64 +# CHECK: error: unknown arch name +# CHECK: .arch axp64 +# CHECK: ^ + + .arch armv8 + + fminnm d0, d0, d1 + +# CHECK: error: instruction requires: fp-armv8 +# CHECK: fminnm d0, d0, d1 +# CHECK: ^ + + .arch armv8+fp + +# CHECK: '+fp' is not a recognized feature for this target (ignoring feature) + + fminnm d0, d0, d1 + +# CHECK: error: instruction requires: fp-armv8 +# CHECK: fminnm d0, d0, d1 +# CHECK: ^ + + .arch armv8+neon + + .arch armv8 + + fminnm d0, d0, d1 + +# CHECK: error: instruction requires: fp-armv8 +# CHECK: fminnm d0, d0, d1 +# CHECK: ^ + diff --git a/test/MC/AArch64/directive-arch.s b/test/MC/AArch64/directive-arch.s new file mode 100644 index 000000000000..9a9a5691d1ba --- /dev/null +++ b/test/MC/AArch64/directive-arch.s @@ -0,0 +1,13 @@ +// RUN: llvm-mc -triple aarch64-unknown-none-eabi -filetype asm -o - %s 2>&1 | FileCheck %s + + .arch armv8-a+crypto + + aesd v0.16b, v2.16b + +# CHECK: aesd v0.16b, v2.16b + + .arch armv8.1-a+ras + esb + +# CHECK: esb + diff --git a/test/MC/AArch64/directive-cpu.s b/test/MC/AArch64/directive-cpu.s new file mode 100644 index 000000000000..8e7d45337445 --- /dev/null +++ b/test/MC/AArch64/directive-cpu.s @@ -0,0 +1,63 @@ +// RUN: not llvm-mc -triple aarch64-unknown-none-eabi -filetype asm -o - %s 2>&1 | FileCheck %s + + .cpu generic + + fminnm d0, d0, d1 + + .cpu generic+fp + + fminnm d0, d0, d1 + + .cpu generic+nofp + + fminnm d0, d0, d1 + + .cpu generic+simd + + addp v0.4s, v0.4s, v0.4s + + .cpu generic+nosimd + + addp v0.4s, v0.4s, v0.4s + + .cpu generic+crc + + crc32cx w0, w1, x3 + + .cpu generic+nocrc + + crc32cx w0, w1, x3 + + .cpu generic+crypto+nocrc + + aesd v0.16b, v2.16b + + .cpu generic+nocrypto+crc + + aesd v0.16b, v2.16b + +// NOTE: the errors precede the actual output! The errors appear in order +// though, so validate by hoisting them to the top and preservering relative +// ordering + +// CHECK: error: instruction requires: fp-armv8 +// CHECK: fminnm d0, d0, d1 +// CHECK: ^ + +// CHECK: error: instruction requires: neon +// CHECK: addp v0.4s, v0.4s, v0.4s +// CHECK: ^ + +// CHECK: error: instruction requires: crc +// CHECK: crc32cx w0, w1, x3 +// CHECK: ^ + +// CHECK: error: instruction requires: crypto +// CHECK: aesd v0.16b, v2.16b +// CHECK: ^ + +// CHECK: fminnm d0, d0, d1 +// CHECK: fminnm d0, d0, d1 +// CHECK: addp v0.4s, v0.4s, v0.4s +// CHECK: crc32cx w0, w1, x3 +// CHECK: aesd v0.16b, v2.16b diff --git a/test/MC/AArch64/error-location.s b/test/MC/AArch64/error-location.s index 02504368f004..6bb75f8cb5f8 100644 --- a/test/MC/AArch64/error-location.s +++ b/test/MC/AArch64/error-location.s @@ -16,8 +16,23 @@ // CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Cannot represent a difference across sections .word x_a - y_a -// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Cannot represent a subtraction with a weak symbol - .word a - w +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: 1-byte data relocations not supported + .byte undef + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: 1-byte data relocations not supported + .byte undef-. + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Unsupported pc-relative fixup kind + ldr x0, [x1, :lo12:undef-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: invalid fixup for 8-bit load/store instruction + ldrb w0, [x1, :gottprel_lo12:undef] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: invalid fixup for 16-bit load/store instruction + ldrh w0, [x1, :gottprel_lo12:undef] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: invalid fixup for 32-bit load/store instruction + ldr w0, [x1, :gottprel_lo12:undef] // CHECK: <unknown>:0: error: expression could not be evaluated .set v1, -undef @@ -26,9 +41,6 @@ // CHECK: <unknown>:0: error: Common symbol 'common' cannot be used in assignment expr .set v3, common -// CHECK: <unknown>:0: error: Undefined temporary symbol - .word 5f - // CHECK: <unknown>:0: error: symbol 'undef' could not be evaluated in a subtraction expression .set v2, a-undef diff --git a/test/MC/AArch64/fixup-out-of-range.s b/test/MC/AArch64/fixup-out-of-range.s new file mode 100644 index 000000000000..0d0d2ffb0bf3 --- /dev/null +++ b/test/MC/AArch64/fixup-out-of-range.s @@ -0,0 +1,64 @@ +// RUN: not llvm-mc -triple aarch64--none-eabi -filetype obj < %s -o /dev/null 2>&1 | FileCheck %s + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + adr x0, distant + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + ldr x0, distant + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup not sufficiently aligned + ldr x0, unaligned + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + b.eq distant + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup not sufficiently aligned + b.eq unaligned + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + ldr x0, [x1, distant-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup must be 8-byte aligned + ldr x0, [x1, unaligned-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + ldr w0, [x1, distant-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup must be 4-byte aligned + ldr w0, [x1, unaligned-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + ldrh w0, [x1, distant-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup must be 2-byte aligned + ldrh w0, [x1, unaligned-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + ldrb w0, [x1, distant-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + ldr q0, [x1, distant-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup must be 16-byte aligned + ldr q0, [x1, unaligned-.] + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + tbz x0, #1, distant + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup not sufficiently aligned + tbz x0, #1, unaligned + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range + b distant + +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup not sufficiently aligned + b unaligned + + .byte 0 +unaligned: + .byte 0 + + .space 1<<27 + .balign 8 +distant: + .word 0 diff --git a/test/MC/AArch64/inst-directive.s b/test/MC/AArch64/inst-directive.s index 7fd5200b9e57..1a44fd186203 100644 --- a/test/MC/AArch64/inst-directive.s +++ b/test/MC/AArch64/inst-directive.s @@ -12,13 +12,13 @@ .section .inst.aarch64_inst - .align 2 + .p2align 2 .global aarch64_inst .type aarch64_inst,%function aarch64_inst: .inst 0x5e104020 -// CHECK-ASM: .align 2 +// CHECK-ASM: .p2align 2 // CHECK-ASM: .globl aarch64_inst // CHECK-ASM: .type aarch64_inst,@function // CHECK-ASM: aarch64_inst: diff --git a/test/MC/AArch64/ldr-pseudo-obj-errors.s b/test/MC/AArch64/ldr-pseudo-obj-errors.s index 7f1b64262c4f..d851917b7140 100644 --- a/test/MC/AArch64/ldr-pseudo-obj-errors.s +++ b/test/MC/AArch64/ldr-pseudo-obj-errors.s @@ -8,6 +8,6 @@ .text foo: +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: fixup value out of range ldr x0, =0x10111 .space 0xdeadb0 -// CHECK: LVM ERROR: fixup value out of range diff --git a/test/MC/AArch64/ldr-pseudo.s b/test/MC/AArch64/ldr-pseudo.s index 1bdb5d69f6ff..6d2bbe8db169 100644 --- a/test/MC/AArch64/ldr-pseudo.s +++ b/test/MC/AArch64/ldr-pseudo.s @@ -1,4 +1,4 @@ -//RUN: llvm-mc -triple=aarch64-linux-gnu %s | FileCheck %s +//RUN: llvm-mc -triple=aarch64-linux-gnu -print-imm-hex %s | FileCheck %s // // Check that large constants are converted to ldr from constant pool @@ -8,17 +8,17 @@ // CHECK-LABEL: f1: f1: ldr x0, =0x1234 -// CHECK: movz x0, #0x1234 +// CHECK: mov x0, #0x1234 ldr w1, =0x4567 -// CHECK: movz w1, #0x4567 +// CHECK: mov w1, #0x4567 ldr x0, =0x12340000 -// CHECK: movz x0, #0x1234, lsl #16 +// CHECK: mov x0, #0x12340000 ldr w1, =0x45670000 -// CHECK: movz w1, #0x4567, lsl #16 +// CHECK: mov w1, #0x45670000 ldr x0, =0xabc00000000 -// CHECK: movz x0, #0xabc, lsl #32 +// CHECK: mov x0, #0xabc00000000 ldr x0, =0xbeef000000000000 -// CHECK: movz x0, #0xbeef, lsl #48 +// CHECK: mov x0, #-0x4111000000000000 .section b,"ax",@progbits // CHECK-LABEL: f3: @@ -128,7 +128,7 @@ f13: adds x0, x0, #1 adds x0, x0, #1 ldr w0, =0x101 -// CHECK: movz w0, #0x101 +// CHECK: mov w0, #0x101 adds x0, x0, #1 adds x0, x0, #1 ldr w0, =bar @@ -209,31 +209,31 @@ f18: // Constant Pools // // CHECK: .section b,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP0]] // CHECK: .word 65537 // CHECK: .section c,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP1]] // CHECK: .word 65538 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP2]] // CHECK: .word 65539 // CHECK: .section d,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP3]] // CHECK: .word 65540 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP4]] // CHECK: .word 65540 // CHECK: .section e,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP5]] // CHECK: .word 65542 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP6]] // CHECK: .word 65543 @@ -241,79 +241,79 @@ f18: // CHECK-NOT: .section f,"ax",@progbits // CHECK: .section g,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP7]] // CHECK: .word foo // CHECK: .section h,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP8]] // CHECK: .word f5 // CHECK: .section i,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP9]] // CHECK: .word f12 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP10]] // CHECK: .word 245760 // CHECK: .section j,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP11]] // CHECK: .word bar // CHECK: .section k,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP12]] // CHECK: .word 65544 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP13]] // CHECK: .word baz // CHECK: .section l,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP14]] // CHECK: .word 65545 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP15]] // CHECK: .word bar+4 // CHECK: .section m,"ax",@progbits -// CHECK: .align 3 +// CHECK: .p2align 3 // CHECK: .Ltmp[[TMP16]] // CHECK: .xword 72623859790382856 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP17]] // CHECK: .word bar -// CHECK: .align 3 +// CHECK: .p2align 3 // CHECK: .Ltmp[[TMP18]] // CHECK: .xword bar+16 -// CHECK: .align 3 +// CHECK: .p2align 3 // CHECK: .Ltmp[[TMP19]] // CHECK: .xword 4294967297 -// CHECK: .align 3 +// CHECK: .p2align 3 // CHECK: .Ltmp[[TMP20]] // CHECK: .xword -2147483649 -// CHECK: .align 3 +// CHECK: .p2align 3 // CHECK: .Ltmp[[TMP21]] // CHECK: .xword 65537 // CHECK: .section n,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP22]] // CHECK: .word 4294967295 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP23]] // CHECK: .word -2147483647 -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP24]] // CHECK: .word -1 // CHECK: .section o,"ax",@progbits -// CHECK: .align 2 +// CHECK: .p2align 2 // CHECK: .Ltmp[[TMP25]] // CHECK: .word 3276900 -// CHECK: .align 3 +// CHECK: .p2align 3 // CHECK: .Ltmp[[TMP26]] // CHECK: .xword 3276900 diff --git a/test/MC/AArch64/optional-hash.s b/test/MC/AArch64/optional-hash.s index 3922b5be34a1..6573d3e8001c 100644 --- a/test/MC/AArch64/optional-hash.s +++ b/test/MC/AArch64/optional-hash.s @@ -1,6 +1,6 @@ // PR18929 // RUN: llvm-mc < %s -triple=aarch64-linux-gnueabi -mattr=+fp-armv8,+neon -filetype=obj -o - \ -// RUN: | llvm-objdump --disassemble -arch=arm64 -mattr=+fp-armv8,+neon - | FileCheck %s +// RUN: | llvm-objdump --disassemble -arch=arm64 - | FileCheck %s .text // CHECK: cmp w0, #123 diff --git a/test/MC/AArch64/ras-extension.s b/test/MC/AArch64/ras-extension.s new file mode 100644 index 000000000000..ac4a8099e359 --- /dev/null +++ b/test/MC/AArch64/ras-extension.s @@ -0,0 +1,55 @@ +// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+ras < %s | FileCheck %s + + esb +// CHECK: esb // encoding: [0x1f,0x22,0x03,0xd5] + + msr errselr_el1, x0 + msr errselr_el1, x15 + msr errselr_el1, x25 + msr erxctlr_el1, x1 + msr erxstatus_el1, x2 + msr erxaddr_el1, x3 + msr erxmisc0_el1, x4 + msr erxmisc1_el1, x5 + msr disr_el1, x6 + msr vdisr_el2, x7 + msr vsesr_el2, x8 +// CHECK: msr ERRSELR_EL1, x0 // encoding: [0x20,0x53,0x18,0xd5] +// CHECK: msr ERRSELR_EL1, x15 // encoding: [0x2f,0x53,0x18,0xd5] +// CHECK: msr ERRSELR_EL1, x25 // encoding: [0x39,0x53,0x18,0xd5] +// CHECK: msr ERXCTLR_EL1, x1 // encoding: [0x21,0x54,0x18,0xd5] +// CHECK: msr ERXSTATUS_EL1, x2 // encoding: [0x42,0x54,0x18,0xd5] +// CHECK: msr ERXADDR_EL1, x3 // encoding: [0x63,0x54,0x18,0xd5] +// CHECK: msr ERXMISC0_EL1, x4 // encoding: [0x04,0x55,0x18,0xd5] +// CHECK: msr ERXMISC1_EL1, x5 // encoding: [0x25,0x55,0x18,0xd5] +// CHECK: msr DISR_EL1, x6 // encoding: [0x26,0xc1,0x18,0xd5] +// CHECK: msr VDISR_EL2, x7 // encoding: [0x27,0xc1,0x1c,0xd5] +// CHECK: msr VSESR_EL2, x8 // encoding: [0x68,0x52,0x1c,0xd5] + + mrs x0, errselr_el1 + mrs x15, errselr_el1 + mrs x25, errselr_el1 + mrs x1, erxctlr_el1 + mrs x2, erxstatus_el1 + mrs x3, erxaddr_el1 + mrs x4, erxmisc0_el1 + mrs x5, erxmisc1_el1 + mrs x6, disr_el1 + mrs x7, vdisr_el2 + mrs x8, vsesr_el2 +// CHECK: mrs x0, ERRSELR_EL1 // encoding: [0x20,0x53,0x38,0xd5] +// CHECK: mrs x15, ERRSELR_EL1 // encoding: [0x2f,0x53,0x38,0xd5] +// CHECK: mrs x25, ERRSELR_EL1 // encoding: [0x39,0x53,0x38,0xd5] +// CHECK: mrs x1, ERXCTLR_EL1 // encoding: [0x21,0x54,0x38,0xd5] +// CHECK: mrs x2, ERXSTATUS_EL1 // encoding: [0x42,0x54,0x38,0xd5] +// CHECK: mrs x3, ERXADDR_EL1 // encoding: [0x63,0x54,0x38,0xd5] +// CHECK: mrs x4, ERXMISC0_EL1 // encoding: [0x04,0x55,0x38,0xd5] +// CHECK: mrs x5, ERXMISC1_EL1 // encoding: [0x25,0x55,0x38,0xd5] +// CHECK: mrs x6, DISR_EL1 // encoding: [0x26,0xc1,0x38,0xd5] +// CHECK: mrs x7, VDISR_EL2 // encoding: [0x27,0xc1,0x3c,0xd5] +// CHECK: mrs x8, VSESR_EL2 // encoding: [0x68,0x52,0x3c,0xd5] + + mrs x0, erridr_el1 + mrs x1, erxfr_el1 +// CHECK: mrs x0, ERRIDR_EL1 // encoding: [0x00,0x53,0x38,0xd5] +// CHECK: mrs x1, ERXFR_EL1 // encoding: [0x01,0x54,0x38,0xd5] diff --git a/test/MC/AArch64/single-slash.s b/test/MC/AArch64/single-slash.s index c4c266c6b06a..83e87bc95d2f 100644 --- a/test/MC/AArch64/single-slash.s +++ b/test/MC/AArch64/single-slash.s @@ -2,5 +2,5 @@ // Test that a single slash is not mistaken as the start of comment. -//CHECK: movz x0, #0x10 +//CHECK: mov x0, #16 movz x0, #(32 / 2) diff --git a/test/MC/AMDGPU/buffer_wbinv1l_vol_vi.s b/test/MC/AMDGPU/buffer_wbinv1l_vol_vi.s index aa0a1ab86460..144818481b03 100644 --- a/test/MC/AMDGPU/buffer_wbinv1l_vol_vi.s +++ b/test/MC/AMDGPU/buffer_wbinv1l_vol_vi.s @@ -1,7 +1,4 @@ -// XFAIL: * // RUN: llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck -check-prefix=VI %s -; When assembled, this emits a different encoding value than codegen for the intrinsic - buffer_wbinvl1_vol // VI: buffer_wbinvl1_vol ; encoding: [0x00,0x00,0xfc,0xe0,0x00,0x00,0x00,0x00] diff --git a/test/MC/AMDGPU/ds-err.s b/test/MC/AMDGPU/ds-err.s index 52c2740bec25..3951efbb60f9 100644 --- a/test/MC/AMDGPU/ds-err.s +++ b/test/MC/AMDGPU/ds-err.s @@ -2,15 +2,15 @@ // RUN: not llvm-mc -arch=amdgcn -mcpu=SI %s 2>&1 | FileCheck %s // offset too big -// CHECK: invalid operand for instruction +// CHECK: error: invalid operand for instruction ds_add_u32 v2, v4 offset:1000000000 // offset0 twice -// CHECK: error: not a valid operand. +// CHECK: error: invalid operand for instruction ds_write2_b32 v2, v4, v6 offset0:4 offset0:8 // offset1 twice -// CHECK: error: not a valid operand. +// CHECK: error: invalid operand for instruction ds_write2_b32 v2, v4, v6 offset1:4 offset1:8 // offset0 too big diff --git a/test/MC/AMDGPU/ds.s b/test/MC/AMDGPU/ds.s index ad63229ba2e1..767afd60341e 100644 --- a/test/MC/AMDGPU/ds.s +++ b/test/MC/AMDGPU/ds.s @@ -1,337 +1,456 @@ -// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s -// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s --check-prefix=SICI +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s --check-prefix=SICI +// RUN: llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck %s --check-prefix=VI //===----------------------------------------------------------------------===// // Checks for 16-bit Offsets //===----------------------------------------------------------------------===// ds_add_u32 v2, v4 offset:16 -// CHECK: ds_add_u32 v2, v4 offset:16 ; encoding: [0x10,0x00,0x00,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_add_u32 v2, v4 offset:16 ; encoding: [0x10,0x00,0x00,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_add_u32 v2, v4 offset:16 ; encoding: [0x10,0x00,0x00,0xd8,0x02,0x04,0x00,0x00] //===----------------------------------------------------------------------===// // Checks for 2 8-bit Offsets //===----------------------------------------------------------------------===// +ds_write_src2_b32 v2 offset0:4 offset1:8 +// SICI: ds_write_src2_b32 v2 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x34,0xda,0x02,0x00,0x00,0x00] +// VI: ds_write_src2_b32 v2 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x1a,0xd9,0x02,0x00,0x00,0x00] + +ds_write_src2_b64 v2 offset0:4 offset1:8 +// SICI: ds_write_src2_b64 v2 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x34,0xdb,0x02,0x00,0x00,0x00] +// VI: ds_write_src2_b64 v2 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x9a,0xd9,0x02,0x00,0x00,0x00] + ds_write2_b32 v2, v4, v6 offset0:4 -// CHECK: ds_write2_b32 v2, v4, v6 offset0:4 ; encoding: [0x04,0x00,0x38,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_write2_b32 v2, v4, v6 offset0:4 ; encoding: [0x04,0x00,0x38,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_write2_b32 v2, v4, v6 offset0:4 ; encoding: [0x04,0x00,0x1c,0xd8,0x02,0x04,0x06,0x00] ds_write2_b32 v2, v4, v6 offset0:4 offset1:8 -// CHECK: ds_write2_b32 v2, v4, v6 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x38,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_write2_b32 v2, v4, v6 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x38,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_write2_b32 v2, v4, v6 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x1c,0xd8,0x02,0x04,0x06,0x00] ds_write2_b32 v2, v4, v6 offset1:8 -// CHECK: ds_write2_b32 v2, v4, v6 offset1:8 ; encoding: [0x00,0x08,0x38,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_write2_b32 v2, v4, v6 offset1:8 ; encoding: [0x00,0x08,0x38,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_write2_b32 v2, v4, v6 offset1:8 ; encoding: [0x00,0x08,0x1c,0xd8,0x02,0x04,0x06,0x00] ds_read2_b32 v[8:9], v2 offset0:4 -// CHECK: ds_read2_b32 v[8:9], v2 offset0:4 ; encoding: [0x04,0x00,0xdc,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read2_b32 v[8:9], v2 offset0:4 ; encoding: [0x04,0x00,0xdc,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read2_b32 v[8:9], v2 offset0:4 ; encoding: [0x04,0x00,0x6e,0xd8,0x02,0x00,0x00,0x08] ds_read2_b32 v[8:9], v2 offset0:4 offset1:8 -// CHECK: ds_read2_b32 v[8:9], v2 offset0:4 offset1:8 ; encoding: [0x04,0x08,0xdc,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read2_b32 v[8:9], v2 offset0:4 offset1:8 ; encoding: [0x04,0x08,0xdc,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read2_b32 v[8:9], v2 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x6e,0xd8,0x02,0x00,0x00,0x08] ds_read2_b32 v[8:9], v2 offset1:8 -// CHECK: ds_read2_b32 v[8:9], v2 offset1:8 ; encoding: [0x00,0x08,0xdc,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read2_b32 v[8:9], v2 offset1:8 ; encoding: [0x00,0x08,0xdc,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read2_b32 v[8:9], v2 offset1:8 ; encoding: [0x00,0x08,0x6e,0xd8,0x02,0x00,0x00,0x08] + //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// ds_add_u32 v2, v4 -// CHECK: ds_add_u32 v2, v4 ; encoding: [0x00,0x00,0x00,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_add_u32 v2, v4 ; encoding: [0x00,0x00,0x00,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_add_u32 v2, v4 ; encoding: [0x00,0x00,0x00,0xd8,0x02,0x04,0x00,0x00] ds_sub_u32 v2, v4 -// CHECK: ds_sub_u32 v2, v4 ; encoding: [0x00,0x00,0x04,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_sub_u32 v2, v4 ; encoding: [0x00,0x00,0x04,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_sub_u32 v2, v4 ; encoding: [0x00,0x00,0x02,0xd8,0x02,0x04,0x00,0x00] ds_rsub_u32 v2, v4 -// CHECK: ds_rsub_u32 v2, v4 ; encoding: [0x00,0x00,0x08,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_rsub_u32 v2, v4 ; encoding: [0x00,0x00,0x08,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_rsub_u32 v2, v4 ; encoding: [0x00,0x00,0x04,0xd8,0x02,0x04,0x00,0x00] ds_inc_u32 v2, v4 -// CHECK: ds_inc_u32 v2, v4 ; encoding: [0x00,0x00,0x0c,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_inc_u32 v2, v4 ; encoding: [0x00,0x00,0x0c,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_inc_u32 v2, v4 ; encoding: [0x00,0x00,0x06,0xd8,0x02,0x04,0x00,0x00] ds_dec_u32 v2, v4 -// CHECK: ds_dec_u32 v2, v4 ; encoding: [0x00,0x00,0x10,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_dec_u32 v2, v4 ; encoding: [0x00,0x00,0x10,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_dec_u32 v2, v4 ; encoding: [0x00,0x00,0x08,0xd8,0x02,0x04,0x00,0x00] ds_min_i32 v2, v4 -// CHECK: ds_min_i32 v2, v4 ; encoding: [0x00,0x00,0x14,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_min_i32 v2, v4 ; encoding: [0x00,0x00,0x14,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_min_i32 v2, v4 ; encoding: [0x00,0x00,0x0a,0xd8,0x02,0x04,0x00,0x00] ds_max_i32 v2, v4 -// CHECK: ds_max_i32 v2, v4 ; encoding: [0x00,0x00,0x18,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_max_i32 v2, v4 ; encoding: [0x00,0x00,0x18,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_max_i32 v2, v4 ; encoding: [0x00,0x00,0x0c,0xd8,0x02,0x04,0x00,0x00] ds_min_u32 v2, v4 -// CHECK: ds_min_u32 v2, v4 ; encoding: [0x00,0x00,0x1c,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_min_u32 v2, v4 ; encoding: [0x00,0x00,0x1c,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_min_u32 v2, v4 ; encoding: [0x00,0x00,0x0e,0xd8,0x02,0x04,0x00,0x00] ds_max_u32 v2, v4 -// CHECK: ds_max_u32 v2, v4 ; encoding: [0x00,0x00,0x20,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_max_u32 v2, v4 ; encoding: [0x00,0x00,0x20,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_max_u32 v2, v4 ; encoding: [0x00,0x00,0x10,0xd8,0x02,0x04,0x00,0x00] ds_and_b32 v2, v4 -// CHECK: ds_and_b32 v2, v4 ; encoding: [0x00,0x00,0x24,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_and_b32 v2, v4 ; encoding: [0x00,0x00,0x24,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_and_b32 v2, v4 ; encoding: [0x00,0x00,0x12,0xd8,0x02,0x04,0x00,0x00] ds_or_b32 v2, v4 -// CHECK: ds_or_b32 v2, v4 ; encoding: [0x00,0x00,0x28,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_or_b32 v2, v4 ; encoding: [0x00,0x00,0x28,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_or_b32 v2, v4 ; encoding: [0x00,0x00,0x14,0xd8,0x02,0x04,0x00,0x00] ds_xor_b32 v2, v4 -// CHECK: ds_xor_b32 v2, v4 ; encoding: [0x00,0x00,0x2c,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_xor_b32 v2, v4 ; encoding: [0x00,0x00,0x2c,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_xor_b32 v2, v4 ; encoding: [0x00,0x00,0x16,0xd8,0x02,0x04,0x00,0x00] ds_mskor_b32 v2, v4, v6 -// CHECK: ds_mskor_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x30,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_mskor_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x30,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_mskor_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x18,0xd8,0x02,0x04,0x06,0x00] ds_write_b32 v2, v4 -// CHECK: ds_write_b32 v2, v4 ; encoding: [0x00,0x00,0x34,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_write_b32 v2, v4 ; encoding: [0x00,0x00,0x34,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_write_b32 v2, v4 ; encoding: [0x00,0x00,0x1a,0xd8,0x02,0x04,0x00,0x00] ds_write2_b32 v2, v4, v6 -// CHECK: ds_write2_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x38,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_write2_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x38,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_write2_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x1c,0xd8,0x02,0x04,0x06,0x00] ds_write2st64_b32 v2, v4, v6 -// CHECK: ds_write2st64_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x3c,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_write2st64_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x3c,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_write2st64_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x1e,0xd8,0x02,0x04,0x06,0x00] ds_cmpst_b32 v2, v4, v6 -// CHECK: ds_cmpst_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x40,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_cmpst_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x40,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_cmpst_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x20,0xd8,0x02,0x04,0x06,0x00] ds_cmpst_f32 v2, v4, v6 -// CHECK: ds_cmpst_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x44,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_cmpst_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x44,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_cmpst_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x22,0xd8,0x02,0x04,0x06,0x00] ds_min_f32 v2, v4, v6 -// CHECK: ds_min_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x48,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_min_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x48,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_min_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x24,0xd8,0x02,0x04,0x06,0x00] ds_max_f32 v2, v4, v6 -// CHECK: ds_max_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x4c,0xd8,0x02,0x04,0x06,0x00] +// SICI: ds_max_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x4c,0xd8,0x02,0x04,0x06,0x00] +// VI: ds_max_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x26,0xd8,0x02,0x04,0x06,0x00] ds_gws_init v2 gds -// CHECK: ds_gws_init v2 gds ; encoding: [0x00,0x00,0x66,0xd8,0x02,0x00,0x00,0x00] +// SICI: ds_gws_init v2 gds ; encoding: [0x00,0x00,0x66,0xd8,0x02,0x00,0x00,0x00] +// VI: ds_gws_init v2 gds ; encoding: [0x00,0x00,0x33,0xd8,0x02,0x00,0x00,0x00] ds_gws_sema_v v2 gds -// CHECK: ds_gws_sema_v v2 gds ; encoding: [0x00,0x00,0x6a,0xd8,0x02,0x00,0x00,0x00] +// SICI: ds_gws_sema_v v2 gds ; encoding: [0x00,0x00,0x6a,0xd8,0x02,0x00,0x00,0x00] +// VI: ds_gws_sema_v v2 gds ; encoding: [0x00,0x00,0x35,0xd8,0x02,0x00,0x00,0x00] ds_gws_sema_br v2 gds -// CHECK: ds_gws_sema_br v2 gds ; encoding: [0x00,0x00,0x6e,0xd8,0x02,0x00,0x00,0x00] +// SICI: ds_gws_sema_br v2 gds ; encoding: [0x00,0x00,0x6e,0xd8,0x02,0x00,0x00,0x00] +// VI: ds_gws_sema_br v2 gds ; encoding: [0x00,0x00,0x37,0xd8,0x02,0x00,0x00,0x00] ds_gws_sema_p v2 gds -// CHECK: ds_gws_sema_p v2 gds ; encoding: [0x00,0x00,0x72,0xd8,0x02,0x00,0x00,0x00] +// SICI: ds_gws_sema_p v2 gds ; encoding: [0x00,0x00,0x72,0xd8,0x02,0x00,0x00,0x00] +// VI: ds_gws_sema_p v2 gds ; encoding: [0x00,0x00,0x39,0xd8,0x02,0x00,0x00,0x00] ds_gws_barrier v2 gds -// CHECK: ds_gws_barrier v2 gds ; encoding: [0x00,0x00,0x76,0xd8,0x02,0x00,0x00,0x00] +// SICI: ds_gws_barrier v2 gds ; encoding: [0x00,0x00,0x76,0xd8,0x02,0x00,0x00,0x00] +// VI: ds_gws_barrier v2 gds ; encoding: [0x00,0x00,0x3b,0xd8,0x02,0x00,0x00,0x00] ds_write_b8 v2, v4 -// CHECK: ds_write_b8 v2, v4 ; encoding: [0x00,0x00,0x78,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_write_b8 v2, v4 ; encoding: [0x00,0x00,0x78,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_write_b8 v2, v4 ; encoding: [0x00,0x00,0x3c,0xd8,0x02,0x04,0x00,0x00] ds_write_b16 v2, v4 -// CHECK: ds_write_b16 v2, v4 ; encoding: [0x00,0x00,0x7c,0xd8,0x02,0x04,0x00,0x00] +// SICI: ds_write_b16 v2, v4 ; encoding: [0x00,0x00,0x7c,0xd8,0x02,0x04,0x00,0x00] +// VI: ds_write_b16 v2, v4 ; encoding: [0x00,0x00,0x3e,0xd8,0x02,0x04,0x00,0x00] ds_add_rtn_u32 v8, v2, v4 -// CHECK: ds_add_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x80,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_add_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x80,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_add_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x40,0xd8,0x02,0x04,0x00,0x08] ds_sub_rtn_u32 v8, v2, v4 -// CHECK: ds_sub_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x84,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_sub_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x84,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_sub_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x42,0xd8,0x02,0x04,0x00,0x08] ds_rsub_rtn_u32 v8, v2, v4 -// CHECK: ds_rsub_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x88,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_rsub_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x88,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_rsub_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x44,0xd8,0x02,0x04,0x00,0x08] ds_inc_rtn_u32 v8, v2, v4 -// CHECK: ds_inc_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x8c,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_inc_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x8c,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_inc_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x46,0xd8,0x02,0x04,0x00,0x08] ds_dec_rtn_u32 v8, v2, v4 -// CHECK: ds_dec_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x90,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_dec_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x90,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_dec_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x48,0xd8,0x02,0x04,0x00,0x08] ds_min_rtn_i32 v8, v2, v4 -// CHECK: ds_min_rtn_i32 v8, v2, v4 ; encoding: [0x00,0x00,0x94,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_min_rtn_i32 v8, v2, v4 ; encoding: [0x00,0x00,0x94,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_min_rtn_i32 v8, v2, v4 ; encoding: [0x00,0x00,0x4a,0xd8,0x02,0x04,0x00,0x08] ds_max_rtn_i32 v8, v2, v4 -// CHECK: ds_max_rtn_i32 v8, v2, v4 ; encoding: [0x00,0x00,0x98,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_max_rtn_i32 v8, v2, v4 ; encoding: [0x00,0x00,0x98,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_max_rtn_i32 v8, v2, v4 ; encoding: [0x00,0x00,0x4c,0xd8,0x02,0x04,0x00,0x08] ds_min_rtn_u32 v8, v2, v4 -// CHECK: ds_min_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x9c,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_min_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x9c,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_min_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x4e,0xd8,0x02,0x04,0x00,0x08] ds_max_rtn_u32 v8, v2, v4 -// CHECK: ds_max_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0xa0,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_max_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0xa0,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_max_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x50,0xd8,0x02,0x04,0x00,0x08] ds_and_rtn_b32 v8, v2, v4 -// CHECK: ds_and_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0xa4,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_and_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0xa4,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_and_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0x52,0xd8,0x02,0x04,0x00,0x08] ds_or_rtn_b32 v8, v2, v4 -// CHECK: ds_or_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0xa8,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_or_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0xa8,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_or_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0x54,0xd8,0x02,0x04,0x00,0x08] ds_xor_rtn_b32 v8, v2, v4 -// CHECK: ds_xor_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0xac,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_xor_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0xac,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_xor_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0x56,0xd8,0x02,0x04,0x00,0x08] ds_mskor_rtn_b32 v8, v2, v4, v6 -// CHECK: ds_mskor_rtn_b32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xb0,0xd8,0x02,0x04,0x06,0x08] +// SICI: ds_mskor_rtn_b32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xb0,0xd8,0x02,0x04,0x06,0x08] +// VI: ds_mskor_rtn_b32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x58,0xd8,0x02,0x04,0x06,0x08] ds_wrxchg_rtn_b32 v8, v2, v4 -// CHECK: ds_wrxchg_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0xb4,0xd8,0x02,0x04,0x00,0x08] +// SICI: ds_wrxchg_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0xb4,0xd8,0x02,0x04,0x00,0x08] +// VI: ds_wrxchg_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0x5a,0xd8,0x02,0x04,0x00,0x08] ds_wrxchg2_rtn_b32 v[8:9], v2, v4, v6 -// CHECK: ds_wrxchg2_rtn_b32 v[8:9], v2, v4, v6 ; encoding: [0x00,0x00,0xb8,0xd8,0x02,0x04,0x06,0x08] +// SICI: ds_wrxchg2_rtn_b32 v[8:9], v2, v4, v6 ; encoding: [0x00,0x00,0xb8,0xd8,0x02,0x04,0x06,0x08] +// VI: ds_wrxchg2_rtn_b32 v[8:9], v2, v4, v6 ; encoding: [0x00,0x00,0x5c,0xd8,0x02,0x04,0x06,0x08] ds_wrxchg2st64_rtn_b32 v[8:9] v2, v4, v6 -// CHECK: ds_wrxchg2st64_rtn_b32 v[8:9], v2, v4, v6 ; encoding: [0x00,0x00,0xbc,0xd8,0x02,0x04,0x06,0x08] +// SICI: ds_wrxchg2st64_rtn_b32 v[8:9], v2, v4, v6 ; encoding: [0x00,0x00,0xbc,0xd8,0x02,0x04,0x06,0x08] +// VI: ds_wrxchg2st64_rtn_b32 v[8:9], v2, v4, v6 ; encoding: [0x00,0x00,0x5e,0xd8,0x02,0x04,0x06,0x08] ds_cmpst_rtn_b32 v8, v2, v4, v6 -// CHECK: ds_cmpst_rtn_b32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xc0,0xd8,0x02,0x04,0x06,0x08] +// SICI: ds_cmpst_rtn_b32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xc0,0xd8,0x02,0x04,0x06,0x08] +// VI: ds_cmpst_rtn_b32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x60,0xd8,0x02,0x04,0x06,0x08] ds_cmpst_rtn_f32 v8, v2, v4, v6 -// CHECK: ds_cmpst_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xc4,0xd8,0x02,0x04,0x06,0x08] +// SICI: ds_cmpst_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xc4,0xd8,0x02,0x04,0x06,0x08] +// VI: ds_cmpst_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x62,0xd8,0x02,0x04,0x06,0x08] ds_min_rtn_f32 v8, v2, v4, v6 -// CHECK: ds_min_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xc8,0xd8,0x02,0x04,0x06,0x08] +// SICI: ds_min_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xc8,0xd8,0x02,0x04,0x06,0x08] +// VI: ds_min_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x64,0xd8,0x02,0x04,0x06,0x08] ds_max_rtn_f32 v8, v2, v4, v6 -// CHECK: ds_max_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xcc,0xd8,0x02,0x04,0x06,0x08] +// SICI: ds_max_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0xcc,0xd8,0x02,0x04,0x06,0x08] +// VI: ds_max_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x66,0xd8,0x02,0x04,0x06,0x08] ds_swizzle_b32 v8, v2 -// CHECK: ds_swizzle_b32 v8, v2 ; encoding: [0x00,0x00,0xd4,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_swizzle_b32 v8, v2 ; encoding: [0x00,0x00,0xd4,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_swizzle_b32 v8, v2 ; encoding: [0x00,0x00,0x7a,0xd8,0x02,0x00,0x00,0x08] ds_read_b32 v8, v2 -// CHECK: ds_read_b32 v8, v2 ; encoding: [0x00,0x00,0xd8,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read_b32 v8, v2 ; encoding: [0x00,0x00,0xd8,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read_b32 v8, v2 ; encoding: [0x00,0x00,0x6c,0xd8,0x02,0x00,0x00,0x08] ds_read2_b32 v[8:9], v2 -// CHECK: ds_read2_b32 v[8:9], v2 ; encoding: [0x00,0x00,0xdc,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read2_b32 v[8:9], v2 ; encoding: [0x00,0x00,0xdc,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read2_b32 v[8:9], v2 ; encoding: [0x00,0x00,0x6e,0xd8,0x02,0x00,0x00,0x08] ds_read2st64_b32 v[8:9], v2 -// CHECK: ds_read2st64_b32 v[8:9], v2 ; encoding: [0x00,0x00,0xe0,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read2st64_b32 v[8:9], v2 ; encoding: [0x00,0x00,0xe0,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read2st64_b32 v[8:9], v2 ; encoding: [0x00,0x00,0x70,0xd8,0x02,0x00,0x00,0x08] ds_read_i8 v8, v2 -// CHECK: ds_read_i8 v8, v2 ; encoding: [0x00,0x00,0xe4,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read_i8 v8, v2 ; encoding: [0x00,0x00,0xe4,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read_i8 v8, v2 ; encoding: [0x00,0x00,0x72,0xd8,0x02,0x00,0x00,0x08] ds_read_u8 v8, v2 -// CHECK: ds_read_u8 v8, v2 ; encoding: [0x00,0x00,0xe8,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read_u8 v8, v2 ; encoding: [0x00,0x00,0xe8,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read_u8 v8, v2 ; encoding: [0x00,0x00,0x74,0xd8,0x02,0x00,0x00,0x08] ds_read_i16 v8, v2 -// CHECK: ds_read_i16 v8, v2 ; encoding: [0x00,0x00,0xec,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read_i16 v8, v2 ; encoding: [0x00,0x00,0xec,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read_i16 v8, v2 ; encoding: [0x00,0x00,0x76,0xd8,0x02,0x00,0x00,0x08] ds_read_u16 v8, v2 -// CHECK: ds_read_u16 v8, v2 ; encoding: [0x00,0x00,0xf0,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_read_u16 v8, v2 ; encoding: [0x00,0x00,0xf0,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_read_u16 v8, v2 ; encoding: [0x00,0x00,0x78,0xd8,0x02,0x00,0x00,0x08] ds_consume v8 -// CHECK: ds_consume v8 ; encoding: [0x00,0x00,0xf4,0xd8,0x00,0x00,0x00,0x08] +// SICI: ds_consume v8 ; encoding: [0x00,0x00,0xf4,0xd8,0x00,0x00,0x00,0x08] +// VI: ds_consume v8 ; encoding: [0x00,0x00,0x7a,0xd8,0x00,0x00,0x00,0x08] ds_append v8 -// CHECK: ds_append v8 ; encoding: [0x00,0x00,0xf8,0xd8,0x00,0x00,0x00,0x08] +// SICI: ds_append v8 ; encoding: [0x00,0x00,0xf8,0xd8,0x00,0x00,0x00,0x08] +// VI: ds_append v8 ; encoding: [0x00,0x00,0x7c,0xd8,0x00,0x00,0x00,0x08] ds_ordered_count v8, v2 gds -// CHECK: ds_ordered_count v8, v2 gds ; encoding: [0x00,0x00,0xfe,0xd8,0x02,0x00,0x00,0x08] +// SICI: ds_ordered_count v8, v2 gds ; encoding: [0x00,0x00,0xfe,0xd8,0x02,0x00,0x00,0x08] +// VI: ds_ordered_count v8, v2 gds ; encoding: [0x00,0x00,0x7f,0xd8,0x02,0x00,0x00,0x08] ds_add_u64 v2, v[4:5] -// CHECK: ds_add_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x00,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_add_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x00,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_add_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x80,0xd8,0x02,0x04,0x00,0x00] ds_sub_u64 v2, v[4:5] -// CHECK: ds_sub_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x04,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_sub_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x04,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_sub_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x82,0xd8,0x02,0x04,0x00,0x00] ds_rsub_u64 v2, v[4:5] -// CHECK: ds_rsub_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x08,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_rsub_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x08,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_rsub_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x84,0xd8,0x02,0x04,0x00,0x00] ds_inc_u64 v2, v[4:5] -// CHECK: ds_inc_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x0c,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_inc_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x0c,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_inc_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x86,0xd8,0x02,0x04,0x00,0x00] ds_dec_u64 v2, v[4:5] -// CHECK: ds_dec_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x10,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_dec_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x10,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_dec_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x88,0xd8,0x02,0x04,0x00,0x00] ds_min_i64 v2, v[4:5] -// CHECK: ds_min_i64 v2, v[4:5] ; encoding: [0x00,0x00,0x14,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_min_i64 v2, v[4:5] ; encoding: [0x00,0x00,0x14,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_min_i64 v2, v[4:5] ; encoding: [0x00,0x00,0x8a,0xd8,0x02,0x04,0x00,0x00] ds_max_i64 v2, v[4:5] -// CHECK: ds_max_i64 v2, v[4:5] ; encoding: [0x00,0x00,0x18,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_max_i64 v2, v[4:5] ; encoding: [0x00,0x00,0x18,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_max_i64 v2, v[4:5] ; encoding: [0x00,0x00,0x8c,0xd8,0x02,0x04,0x00,0x00] ds_min_u64 v2, v[4:5] -// CHECK: ds_min_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x1c,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_min_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x1c,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_min_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x8e,0xd8,0x02,0x04,0x00,0x00] ds_max_u64 v2, v[4:5] -// CHECK: ds_max_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x20,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_max_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x20,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_max_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x90,0xd8,0x02,0x04,0x00,0x00] ds_and_b64 v2, v[4:5] -// CHECK: ds_and_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x24,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_and_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x24,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_and_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x92,0xd8,0x02,0x04,0x00,0x00] ds_or_b64 v2, v[4:5] -// CHECK: ds_or_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x28,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_or_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x28,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_or_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x94,0xd8,0x02,0x04,0x00,0x00] ds_xor_b64 v2, v[4:5] -// CHECK: ds_xor_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x2c,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_xor_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x2c,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_xor_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x96,0xd8,0x02,0x04,0x00,0x00] ds_mskor_b64 v2, v[4:5], v[6:7] -// CHECK: ds_mskor_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x30,0xd9,0x02,0x04,0x06,0x00] +// SICI: ds_mskor_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x30,0xd9,0x02,0x04,0x06,0x00] +// VI: ds_mskor_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x98,0xd8,0x02,0x04,0x06,0x00] ds_write_b64 v2, v[4:5] -// CHECK: ds_write_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x34,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_write_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x34,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_write_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x9a,0xd8,0x02,0x04,0x00,0x00] ds_write2_b64 v2, v[4:5], v[6:7] -// CHECK: ds_write2_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x38,0xd9,0x02,0x04,0x06,0x00] +// SICI: ds_write2_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x38,0xd9,0x02,0x04,0x06,0x00] +// VI: ds_write2_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x9c,0xd8,0x02,0x04,0x06,0x00] ds_write2st64_b64 v2, v[4:5], v[6:7] -// CHECK: ds_write2st64_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x3c,0xd9,0x02,0x04,0x06,0x00] +// SICI: ds_write2st64_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x3c,0xd9,0x02,0x04,0x06,0x00] +// VI: ds_write2st64_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x9e,0xd8,0x02,0x04,0x06,0x00] ds_cmpst_b64 v2, v[4:5], v[6:7] -// CHECK: ds_cmpst_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x40,0xd9,0x02,0x04,0x06,0x00] +// SICI: ds_cmpst_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x40,0xd9,0x02,0x04,0x06,0x00] +// VI: ds_cmpst_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xa0,0xd8,0x02,0x04,0x06,0x00] ds_cmpst_f64 v2, v[4:5], v[6:7] -// CHECK: ds_cmpst_f64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x44,0xd9,0x02,0x04,0x06,0x00] +// SICI: ds_cmpst_f64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x44,0xd9,0x02,0x04,0x06,0x00] +// VI: ds_cmpst_f64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xa2,0xd8,0x02,0x04,0x06,0x00] ds_min_f64 v2, v[4:5] -// CHECK: ds_min_f64 v2, v[4:5] ; encoding: [0x00,0x00,0x48,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_min_f64 v2, v[4:5] ; encoding: [0x00,0x00,0x48,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_min_f64 v2, v[4:5] ; encoding: [0x00,0x00,0xa4,0xd8,0x02,0x04,0x00,0x00] ds_max_f64 v2, v[4:5] -// CHECK: ds_max_f64 v2, v[4:5] ; encoding: [0x00,0x00,0x4c,0xd9,0x02,0x04,0x00,0x00] +// SICI: ds_max_f64 v2, v[4:5] ; encoding: [0x00,0x00,0x4c,0xd9,0x02,0x04,0x00,0x00] +// VI: ds_max_f64 v2, v[4:5] ; encoding: [0x00,0x00,0xa6,0xd8,0x02,0x04,0x00,0x00] ds_add_rtn_u64 v[8:9], v2, v[4:5] -// CHECK: ds_add_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x80,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_add_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x80,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_add_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc0,0xd8,0x02,0x04,0x00,0x08] ds_sub_rtn_u64 v[8:9], v2, v[4:5] -// CHECK: ds_sub_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x84,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_sub_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x84,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_sub_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc2,0xd8,0x02,0x04,0x00,0x08] ds_rsub_rtn_u64 v[8:9], v2, v[4:5] -// CHECK: ds_rsub_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x88,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_rsub_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x88,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_rsub_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc4,0xd8,0x02,0x04,0x00,0x08] ds_inc_rtn_u64 v[8:9], v2, v[4:5] -// CHECK: ds_inc_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x8c,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_inc_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x8c,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_inc_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc6,0xd8,0x02,0x04,0x00,0x08] ds_dec_rtn_u64 v[8:9] v2, v[4:5] -// CHECK: ds_dec_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x90,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_dec_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x90,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_dec_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc8,0xd8,0x02,0x04,0x00,0x08] ds_min_rtn_i64 v[8:9], v2, v[4:5] -// CHECK: ds_min_rtn_i64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x94,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_min_rtn_i64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x94,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_min_rtn_i64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xca,0xd8,0x02,0x04,0x00,0x08] ds_max_rtn_i64 v[8:9], v2, v[4:5] -// CHECK: ds_max_rtn_i64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x98,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_max_rtn_i64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x98,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_max_rtn_i64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xcc,0xd8,0x02,0x04,0x00,0x08] ds_min_rtn_u64 v[8:9], v2, v[4:5] -// CHECK: ds_min_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x9c,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_min_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0x9c,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_min_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xce,0xd8,0x02,0x04,0x00,0x08] ds_max_rtn_u64 v[8:9], v2, v[4:5] -// CHECK: ds_max_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xa0,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_max_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xa0,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_max_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xd0,0xd8,0x02,0x04,0x00,0x08] ds_and_rtn_b64 v[8:9], v2, v[4:5] -// CHECK: ds_and_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xa4,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_and_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xa4,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_and_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xd2,0xd8,0x02,0x04,0x00,0x08] ds_or_rtn_b64 v[8:9], v2, v[4:5] -// CHECK: ds_or_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xa8,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_or_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xa8,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_or_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xd4,0xd8,0x02,0x04,0x00,0x08] ds_xor_rtn_b64 v[8:9], v2, v[4:5] -// CHECK: ds_xor_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xac,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_xor_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xac,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_xor_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xd6,0xd8,0x02,0x04,0x00,0x08] ds_mskor_rtn_b64 v[8:9], v2, v[4:5], v[6:7] -// CHECK: ds_mskor_rtn_b64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xb0,0xd9,0x02,0x04,0x06,0x08] +// SICI: ds_mskor_rtn_b64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xb0,0xd9,0x02,0x04,0x06,0x08] +// VI: ds_mskor_rtn_b64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xd8,0xd8,0x02,0x04,0x06,0x08] ds_wrxchg_rtn_b64 v[8:9], v2, v[4:5] -// CHECK: ds_wrxchg_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xb4,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_wrxchg_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xb4,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_wrxchg_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xda,0xd8,0x02,0x04,0x00,0x08] ds_wrxchg2_rtn_b64 v[8:11], v2, v[4:5], v[6:7] -// CHECK: ds_wrxchg2_rtn_b64 v[8:11], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xb8,0xd9,0x02,0x04,0x06,0x08] +// SICI: ds_wrxchg2_rtn_b64 v[8:11], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xb8,0xd9,0x02,0x04,0x06,0x08] +// VI: ds_wrxchg2_rtn_b64 v[8:11], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xdc,0xd8,0x02,0x04,0x06,0x08] ds_wrxchg2st64_rtn_b64 v[8:11], v2, v[4:5], v[6:7] -// CHECK: ds_wrxchg2st64_rtn_b64 v[8:11], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xbc,0xd9,0x02,0x04,0x06,0x08] +// SICI: ds_wrxchg2st64_rtn_b64 v[8:11], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xbc,0xd9,0x02,0x04,0x06,0x08] +// VI: ds_wrxchg2st64_rtn_b64 v[8:11], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xde,0xd8,0x02,0x04,0x06,0x08] ds_cmpst_rtn_b64 v[8:9], v2, v[4:5], v[6:7] -// CHECK: ds_cmpst_rtn_b64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xc0,0xd9,0x02,0x04,0x06,0x08] +// SICI: ds_cmpst_rtn_b64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xc0,0xd9,0x02,0x04,0x06,0x08] +// VI: ds_cmpst_rtn_b64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xe0,0xd8,0x02,0x04,0x06,0x08] ds_cmpst_rtn_f64 v[8:9], v2, v[4:5], v[6:7] -// CHECK: ds_cmpst_rtn_f64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xc4,0xd9,0x02,0x04,0x06,0x08] +// SICI: ds_cmpst_rtn_f64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xc4,0xd9,0x02,0x04,0x06,0x08] +// VI: ds_cmpst_rtn_f64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xe2,0xd8,0x02,0x04,0x06,0x08] ds_min_rtn_f64 v[8:9], v2, v[4:5] -// CHECK: ds_min_rtn_f64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc8,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_min_rtn_f64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc8,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_min_rtn_f64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xe4,0xd8,0x02,0x04,0x00,0x08] ds_max_rtn_f64 v[8:9], v2, v[4:5] -// CHECK: ds_max_rtn_f64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xcc,0xd9,0x02,0x04,0x00,0x08] +// SICI: ds_max_rtn_f64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xcc,0xd9,0x02,0x04,0x00,0x08] +// VI: ds_max_rtn_f64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xe6,0xd8,0x02,0x04,0x00,0x08] ds_read_b64 v[8:9], v2 -// CHECK: ds_read_b64 v[8:9], v2 ; encoding: [0x00,0x00,0xd8,0xd9,0x02,0x00,0x00,0x08] +// SICI: ds_read_b64 v[8:9], v2 ; encoding: [0x00,0x00,0xd8,0xd9,0x02,0x00,0x00,0x08] +// VI: ds_read_b64 v[8:9], v2 ; encoding: [0x00,0x00,0xec,0xd8,0x02,0x00,0x00,0x08] ds_read2_b64 v[8:11], v2 -// CHECK: ds_read2_b64 v[8:11], v2 ; encoding: [0x00,0x00,0xdc,0xd9,0x02,0x00,0x00,0x08] +// SICI: ds_read2_b64 v[8:11], v2 ; encoding: [0x00,0x00,0xdc,0xd9,0x02,0x00,0x00,0x08] +// VI: ds_read2_b64 v[8:11], v2 ; encoding: [0x00,0x00,0xee,0xd8,0x02,0x00,0x00,0x08] ds_read2st64_b64 v[8:11], v2 -// CHECK: ds_read2st64_b64 v[8:11], v2 ; encoding: [0x00,0x00,0xe0,0xd9,0x02,0x00,0x00,0x08] +// SICI: ds_read2st64_b64 v[8:11], v2 ; encoding: [0x00,0x00,0xe0,0xd9,0x02,0x00,0x00,0x08] +// VI: ds_read2st64_b64 v[8:11], v2 ; encoding: [0x00,0x00,0xf0,0xd8,0x02,0x00,0x00,0x08] + diff --git a/test/MC/AMDGPU/expressions.s b/test/MC/AMDGPU/expressions.s new file mode 100644 index 000000000000..9fc956628f1f --- /dev/null +++ b/test/MC/AMDGPU/expressions.s @@ -0,0 +1,41 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck %s --check-prefix=VI + + +.globl global +.globl gds + +// Parse a global expression +s_mov_b32 s0, global +// VI: s_mov_b32 s0, global ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] +// VI-NEXT: ; fixup A - offset: 4, value: global, kind: FK_PCRel_4 + +// Use a token with the same name as a global +ds_gws_init v2 gds +// VI: ds_gws_init v2 gds ; encoding: [0x00,0x00,0x33,0xd8,0x02,0x00,0x00,0x00] + +// Use a global with the same name as a token +s_mov_b32 s0, gds +// VI: s_mov_b32 s0, gds ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] +// VI-NEXT: ; fixup A - offset: 4, value: gds, kind: FK_PCRel_4 + +// Use a binary expression +s_mov_b32 s0, gds+4 +// VI: s_mov_b32 s0, gds+4 ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] +// VI-NEXT: ; fixup A - offset: 4, value: gds+4, kind: FK_PCRel_4 + +// Consecutive instructions with no blank line in between to make sure we +// don't call Lex() too many times. +s_add_u32 s0, s0, global+4 +s_addc_u32 s1, s1, 0 +// VI: s_add_u32 s0, s0, global+4 +// VI: s_addc_u32 s1, s1, 0 + +// Use a computed expression that results in an inline immediate. +.set foo, 4 +s_mov_b32 s0, foo+2 +// VI: s_mov_b32 s0, 6 ; encoding: [0x86,0x00,0x80,0xbe] + +// Use a computed expression that results in a non-inline immediate. +.set foo, 512 +s_mov_b32 s0, foo+2 +// VI: s_mov_b32 s0, 514 ; encoding: [0xff,0x00,0x80,0xbe,0x02,0x02,0x00,0x00] diff --git a/test/MC/AMDGPU/flat-scratch.s b/test/MC/AMDGPU/flat-scratch.s index 0664c80378db..e87f59dafeea 100644 --- a/test/MC/AMDGPU/flat-scratch.s +++ b/test/MC/AMDGPU/flat-scratch.s @@ -1,33 +1,36 @@ -// RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti -show-encoding %s 2>&1 | FileCheck -check-prefix=SI -check-prefix=GCN %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti -show-encoding %s 2>&1 | FileCheck -check-prefix=NOSI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=hawaii -show-encoding %s 2>&1 | FileCheck -check-prefix=NOCI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s 2>&1 | FileCheck -check-prefix=NOVI %s // RUN: not llvm-mc -arch=amdgcn -mcpu=hawaii -show-encoding %s | FileCheck -check-prefix=CI %s // RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck -check-prefix=VI %s -// Add a different RUN line for the failing checks, because when stderr and stdout are mixed the -// order things are printed is not deterministic. -// RUN: not llvm-mc -arch=amdgcn -mcpu=hawaii -show-encoding %s 2>&1 | FileCheck -check-prefix=GCN %s -// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s 2>&1 | FileCheck -check-prefix=GCN %s - s_mov_b64 flat_scratch, -1 -// SI: error: invalid operand for instruction +// NOSI: error: not a valid operand. // CI: s_mov_b64 flat_scratch, -1 ; encoding: [0xc1,0x04,0xe8,0xbe] // VI: s_mov_b64 flat_scratch, -1 ; encoding: [0xc1,0x01,0xe6,0xbe] s_mov_b32 flat_scratch_lo, -1 -// SI: error: invalid operand for instruction +// NOSI: error: not a valid operand. // CI: s_mov_b32 flat_scratch_lo, -1 ; encoding: [0xc1,0x03,0xe8,0xbe] // VI: s_mov_b32 flat_scratch_lo, -1 ; encoding: [0xc1,0x00,0xe6,0xbe] s_mov_b32 flat_scratch_hi, -1 -// SI: error: invalid operand for instruction +// NOSI: error: not a valid operand. // CI: s_mov_b32 flat_scratch_hi, -1 ; encoding: [0xc1,0x03,0xe9,0xbe] // VI: s_mov_b32 flat_scratch_hi, -1 ; encoding: [0xc1,0x00,0xe7,0xbe] s_mov_b64 flat_scratch_lo, -1 -// GCN: error: invalid operand for instruction +// NOSI: error: not a valid operand. +// NOCI: error: invalid operand for instruction +// NOVI: error: invalid operand for instruction s_mov_b64 flat_scratch_hi, -1 -// GCN: error: invalid operand for instruction +// NOSI: error: not a valid operand. +// NOCI: error: invalid operand for instruction +// NOVI: error: invalid operand for instruction s_mov_b32 flat_scratch, -1 -// GCN: error: invalid operand for instruction +// NOSI: error: not a valid operand. +// NOCI: error: invalid operand for instruction +// NOVI: error: invalid operand for instruction diff --git a/test/MC/AMDGPU/flat.s b/test/MC/AMDGPU/flat.s index 20e6c042733c..c6894c35f4d7 100644 --- a/test/MC/AMDGPU/flat.s +++ b/test/MC/AMDGPU/flat.s @@ -40,124 +40,52 @@ flat_load_dword v1, v[3:4] glc slc tfe // CI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x33,0xdc,0x03,0x00,0x80,0x01] // VI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x80,0x01] -flat_load_dword v1, v[3:4] glc tfe slc -// NOSI: error: -// CI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x33,0xdc,0x03,0x00,0x80,0x01] -// VI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x80,0x01] - flat_load_dword v1, v[3:4] slc // NOSI: error: // CI: flat_load_dword v1, v[3:4] slc ; encoding: [0x00,0x00,0x32,0xdc,0x03,0x00,0x00,0x01] // VI: flat_load_dword v1, v[3:4] slc ; encoding: [0x00,0x00,0x52,0xdc,0x03,0x00,0x00,0x01] -flat_load_dword v1, v[3:4] slc glc -// NOSI: error: -// CI: flat_load_dword v1, v[3:4] glc slc ; encoding: [0x00,0x00,0x33,0xdc,0x03,0x00,0x00,0x01] -// VI: flat_load_dword v1, v[3:4] glc slc ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x00,0x01] - flat_load_dword v1, v[3:4] slc tfe // NOSI: error: // CI: flat_load_dword v1, v[3:4] slc tfe ; encoding: [0x00,0x00,0x32,0xdc,0x03,0x00,0x80,0x01] // VI: flat_load_dword v1, v[3:4] slc tfe ; encoding: [0x00,0x00,0x52,0xdc,0x03,0x00,0x80,0x01] -flat_load_dword v1, v[3:4] slc glc tfe -// NOSI: error: -// CI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x33,0xdc,0x03,0x00,0x80,0x01] -// VI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x80,0x01] - -flat_load_dword v1, v[3:4] slc tfe glc -// NOSI: error: -// CI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x33,0xdc,0x03,0x00,0x80,0x01] -// VI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x80,0x01] - flat_load_dword v1, v[3:4] tfe // NOSI: error: // CI: flat_load_dword v1, v[3:4] tfe ; encoding: [0x00,0x00,0x30,0xdc,0x03,0x00,0x80,0x01] // VI: flat_load_dword v1, v[3:4] tfe ; encoding: [0x00,0x00,0x50,0xdc,0x03,0x00,0x80,0x01] -flat_load_dword v1, v[3:4] tfe glc -// NOSI: error: -// CI: flat_load_dword v1, v[3:4] glc tfe ; encoding: [0x00,0x00,0x31,0xdc,0x03,0x00,0x80,0x01] -// VI: flat_load_dword v1, v[3:4] glc tfe ; encoding: [0x00,0x00,0x51,0xdc,0x03,0x00,0x80,0x01] - -flat_load_dword v1, v[3:4] tfe slc -// NOSI: error: -// CI: flat_load_dword v1, v[3:4] slc tfe ; encoding: [0x00,0x00,0x32,0xdc,0x03,0x00,0x80,0x01] -// VI: flat_load_dword v1, v[3:4] slc tfe ; encoding: [0x00,0x00,0x52,0xdc,0x03,0x00,0x80,0x01] - -flat_load_dword v1, v[3:4] tfe glc slc -// NOSI: error: -// CI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x33,0xdc,0x03,0x00,0x80,0x01] -// VI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x80,0x01] - -flat_load_dword v1, v[3:4] tfe slc glc -// NOSI: error: -// CI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x33,0xdc,0x03,0x00,0x80,0x01] -// VI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x80,0x01] - -flat_store_dword v1, v[3:4] -// NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] ; encoding: [0x00,0x00,0x70,0xdc,0x03,0x01,0x00,0x00] - -flat_store_dword v1, v[3:4] glc -// NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc ; encoding: [0x00,0x00,0x71,0xdc,0x03,0x01,0x00,0x00] - -flat_store_dword v1, v[3:4] glc slc -// NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc slc ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x00,0x00] - -flat_store_dword v1, v[3:4] glc tfe -// NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc tfe ; encoding: [0x00,0x00,0x71,0xdc,0x03,0x01,0x80,0x00] - -flat_store_dword v1, v[3:4] glc slc tfe -// NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x80,0x00] - -flat_store_dword v1, v[3:4] glc tfe slc -// NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x80,0x00] - -flat_store_dword v1, v[3:4] slc -// NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] slc ; encoding: [0x00,0x00,0x72,0xdc,0x03,0x01,0x00,0x00] - -flat_store_dword v1, v[3:4] slc glc +flat_store_dword v[3:4], v1 // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc slc ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x00,0x00] +// CIVI: flat_store_dword v[3:4], v1 ; encoding: [0x00,0x00,0x70,0xdc,0x03,0x01,0x00,0x00] -flat_store_dword v1, v[3:4] slc tfe +flat_store_dword v[3:4], v1 glc // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] slc tfe ; encoding: [0x00,0x00,0x72,0xdc,0x03,0x01,0x80,0x00] +// CIVI: flat_store_dword v[3:4], v1 glc ; encoding: [0x00,0x00,0x71,0xdc,0x03,0x01,0x00,0x00] -flat_store_dword v1, v[3:4] slc glc tfe +flat_store_dword v[3:4], v1 glc slc // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x80,0x00] +// CIVI: flat_store_dword v[3:4], v1 glc slc ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x00,0x00] -flat_store_dword v1, v[3:4] slc tfe glc +flat_store_dword v[3:4], v1 glc tfe // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x80,0x00] +// CIVI: flat_store_dword v[3:4], v1 glc tfe ; encoding: [0x00,0x00,0x71,0xdc,0x03,0x01,0x80,0x00] -flat_store_dword v1, v[3:4] tfe +flat_store_dword v[3:4], v1 glc slc tfe // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] tfe ; encoding: [0x00,0x00,0x70,0xdc,0x03,0x01,0x80,0x00] +// CIVI: flat_store_dword v[3:4], v1 glc slc tfe ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x80,0x00] -flat_store_dword v1, v[3:4] tfe glc +flat_store_dword v[3:4], v1 slc // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc tfe ; encoding: [0x00,0x00,0x71,0xdc,0x03,0x01,0x80,0x00] +// CIVI: flat_store_dword v[3:4], v1 slc ; encoding: [0x00,0x00,0x72,0xdc,0x03,0x01,0x00,0x00] -flat_store_dword v1, v[3:4] tfe slc +flat_store_dword v[3:4], v1 slc tfe // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] slc tfe ; encoding: [0x00,0x00,0x72,0xdc,0x03,0x01,0x80,0x00] +// CIVI: flat_store_dword v[3:4], v1 slc tfe ; encoding: [0x00,0x00,0x72,0xdc,0x03,0x01,0x80,0x00] -flat_store_dword v1, v[3:4] tfe glc slc +flat_store_dword v[3:4], v1 tfe // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x80,0x00] - -flat_store_dword v1, v[3:4] tfe slc glc -// NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x73,0xdc,0x03,0x01,0x80,0x00] +// CIVI: flat_store_dword v[3:4], v1 tfe ; encoding: [0x00,0x00,0x70,0xdc,0x03,0x01,0x80,0x00] // FIXME: For atomic instructions, glc must be placed immediately following // the data regiser. These forms aren't currently supported: @@ -184,11 +112,6 @@ flat_atomic_add v1 v[3:4], v5 glc slc tfe // CI: flat_atomic_add v1, v[3:4], v5 glc slc tfe ; encoding: [0x00,0x00,0xcb,0xdc,0x03,0x05,0x80,0x01] // VI: flat_atomic_add v1, v[3:4], v5 glc slc tfe ; encoding: [0x00,0x00,0x0b,0xdd,0x03,0x05,0x80,0x01] -flat_atomic_add v1 v[3:4], v5 glc tfe slc -// NOSI: error: -// CI: flat_atomic_add v1, v[3:4], v5 glc slc tfe ; encoding: [0x00,0x00,0xcb,0xdc,0x03,0x05,0x80,0x01] -// VI: flat_atomic_add v1, v[3:4], v5 glc slc tfe ; encoding: [0x00,0x00,0x0b,0xdd,0x03,0x05,0x80,0x01] - flat_atomic_add v[3:4], v5 slc // NOSI: error: // CI: flat_atomic_add v[3:4], v5 slc ; encoding: [0x00,0x00,0xca,0xdc,0x03,0x05,0x00,0x00] @@ -248,31 +171,31 @@ flat_load_dwordx3 v[5:7], v[3:4] // CI: flat_load_dwordx3 v[5:7], v[3:4] ; encoding: [0x00,0x00,0x3c,0xdc,0x03,0x00,0x00,0x05] // VI: flat_load_dwordx3 v[5:7], v[3:4] ; encoding: [0x00,0x00,0x58,0xdc,0x03,0x00,0x00,0x05] -flat_store_byte v1, v[3:4] +flat_store_byte v[3:4], v1 // NOSI: error: -// CIVI: flat_store_byte v1, v[3:4] ; encoding: [0x00,0x00,0x60,0xdc,0x03,0x01,0x00,0x00] +// CIVI: flat_store_byte v[3:4], v1 ; encoding: [0x00,0x00,0x60,0xdc,0x03,0x01,0x00,0x00] -flat_store_short v1, v[3:4] +flat_store_short v[3:4], v1 // NOSI: error: -// CIVI: flat_store_short v1, v[3:4] ; encoding: [0x00,0x00,0x68,0xdc,0x03,0x01,0x00,0x00] +// CIVI: flat_store_short v[3:4], v1 ; encoding: [0x00,0x00,0x68,0xdc,0x03,0x01,0x00,0x00] -flat_store_dword v1, v[3:4] +flat_store_dword v[3:4], v1 // NOSI: error: -// CIVI: flat_store_dword v1, v[3:4] ; encoding: [0x00,0x00,0x70,0xdc,0x03,0x01,0x00,0x00] +// CIVI: flat_store_dword v[3:4], v1 ; encoding: [0x00,0x00,0x70,0xdc,0x03,0x01,0x00,0x00] -flat_store_dwordx2 v[1:2], v[3:4] +flat_store_dwordx2 v[3:4], v[1:2] // NOSI: error: -// CIVI: flat_store_dwordx2 v[1:2], v[3:4] ; encoding: [0x00,0x00,0x74,0xdc,0x03,0x01,0x00,0x00] +// CIVI: flat_store_dwordx2 v[3:4], v[1:2] ; encoding: [0x00,0x00,0x74,0xdc,0x03,0x01,0x00,0x00] -flat_store_dwordx4 v[5:8], v[3:4] +flat_store_dwordx4 v[3:4], v[5:8] // NOSI: error: -// CI: flat_store_dwordx4 v[5:8], v[3:4] ; encoding: [0x00,0x00,0x78,0xdc,0x03,0x05,0x00,0x00] -// VI: flat_store_dwordx4 v[5:8], v[3:4] ; encoding: [0x00,0x00,0x7c,0xdc,0x03,0x05,0x00,0x00] +// CI: flat_store_dwordx4 v[3:4], v[5:8] ; encoding: [0x00,0x00,0x78,0xdc,0x03,0x05,0x00,0x00] +// VI: flat_store_dwordx4 v[3:4], v[5:8] ; encoding: [0x00,0x00,0x7c,0xdc,0x03,0x05,0x00,0x00] -flat_store_dwordx3 v[5:7], v[3:4] +flat_store_dwordx3 v[3:4], v[5:7] // NOSI: error: -// CI: flat_store_dwordx3 v[5:7], v[3:4] ; encoding: [0x00,0x00,0x7c,0xdc,0x03,0x05,0x00,0x00] -// VI: flat_store_dwordx3 v[5:7], v[3:4] ; encoding: [0x00,0x00,0x78,0xdc,0x03,0x05,0x00,0x00] +// CI: flat_store_dwordx3 v[3:4], v[5:7] ; encoding: [0x00,0x00,0x7c,0xdc,0x03,0x05,0x00,0x00] +// VI: flat_store_dwordx3 v[3:4], v[5:7] ; encoding: [0x00,0x00,0x78,0xdc,0x03,0x05,0x00,0x00] flat_atomic_swap v[3:4], v5 // NOSI: error: @@ -471,8 +394,8 @@ flat_atomic_umin_x2 v[3:4], v[5:6] flat_atomic_umin_x2 v[1:2], v[3:4], v[5:6] glc // NOSI: error: -// CI: flat_atomic_umin_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x59,0xdd,0x03,0x05,0x00,0x01] -// VI: flat_atomic_umin_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x95,0xdd,0x03,0x05,0x00,0x01] +// CI: flat_atomic_umin_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x59,0xdd,0x03,0x05,0x00,0x01] +// VI: flat_atomic_umin_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x95,0xdd,0x03,0x05,0x00,0x01] flat_atomic_smax_x2 v[3:4], v[5:6] // NOSI: error: diff --git a/test/MC/AMDGPU/hsa-exp.s b/test/MC/AMDGPU/hsa-exp.s new file mode 100644 index 000000000000..0a8d0d29be1e --- /dev/null +++ b/test/MC/AMDGPU/hsa-exp.s @@ -0,0 +1,129 @@ +// RUN: llvm-mc -triple amdgcn--amdhsa -mcpu=kaveri -show-encoding %s | FileCheck %s --check-prefix=ASM +// RUN: llvm-mc -filetype=obj -triple amdgcn--amdhsa -mcpu=kaveri -show-encoding %s | llvm-readobj -symbols -s -sd | FileCheck %s --check-prefix=ELF + +// ELF: Section { +// ELF: Name: .text +// ELF: Type: SHT_PROGBITS (0x1) +// ELF: Flags [ (0x6) +// ELF: SHF_ALLOC (0x2) +// ELF: SHF_EXECINSTR (0x4) + +// ELF: SHT_NOTE +// ELF: 0000: 04000000 08000000 01000000 414D4400 +// ELF: 0010: 02000000 00000000 04000000 1B000000 +// ELF: 0020: 03000000 414D4400 04000700 07000000 +// ELF: 0030: 00000000 00000000 414D4400 414D4447 +// ELF: 0040: 50550000 + +// ELF: Symbol { +// ELF: Name: amd_kernel_code_t_minimal +// ELF: Type: AMDGPU_HSA_KERNEL (0xA) +// ELF: Section: .text +// ELF: } + +.text +// ASM: .text + +.hsa_code_object_version 2,0 +// ASM: .hsa_code_object_version 2,0 + +.hsa_code_object_isa 7,0,0,"AMD","AMDGPU" +// ASM: .hsa_code_object_isa 7,0,0,"AMD","AMDGPU" + +.amdgpu_hsa_kernel amd_kernel_code_t_minimal + +.set my_is_ptr64, 1 + +.if my_is_ptr64 == 0 +.set my_kernarg_segment_byte_size, 32 +.else +.set my_kernarg_segment_byte_size, 16 +.endif + +.set my_sgpr, 8 + + +amd_kernel_code_t_minimal: +.amd_kernel_code_t + kernel_code_version_major = .option.machine_version_major + enable_sgpr_kernarg_segment_ptr = 1 + is_ptr64 = my_is_ptr64 + compute_pgm_rsrc1_vgprs = 1 + compute_pgm_rsrc1_sgprs = 1+(my_sgpr-1)/8 + compute_pgm_rsrc2_user_sgpr = 2 + kernarg_segment_byte_size = my_kernarg_segment_byte_size + wavefront_sgpr_count = my_sgpr +// wavefront_sgpr_count = 7 +; wavefront_sgpr_count = 7 +// Make sure a blank line won't break anything: + +// Make sure a line with whitespace won't break anything: + + workitem_vgpr_count = 16 +.end_amd_kernel_code_t + +// ASM-LABEL: {{^}}amd_kernel_code_t_minimal: +// ASM: .amd_kernel_code_t +// ASM: kernel_code_version_major = 7 +// ASM: kernel_code_version_minor = 0 +// ASM: machine_kind = 1 +// ASM: machine_version_major = 7 +// ASM: machine_version_minor = 0 +// ASM: machine_version_stepping = 0 +// ASM: kernel_code_entry_byte_offset = 256 +// ASM: kernel_code_prefetch_byte_size = 0 +// ASM: max_scratch_backing_memory_byte_size = 0 +// ASM: compute_pgm_rsrc1_vgprs = 1 +// ASM: compute_pgm_rsrc1_sgprs = 1 +// ASM: compute_pgm_rsrc1_priority = 0 +// ASM: compute_pgm_rsrc1_float_mode = 0 +// ASM: compute_pgm_rsrc1_priv = 0 +// ASM: compute_pgm_rsrc1_dx10_clamp = 0 +// ASM: compute_pgm_rsrc1_debug_mode = 0 +// ASM: compute_pgm_rsrc1_ieee_mode = 0 +// ASM: compute_pgm_rsrc2_scratch_en = 0 +// ASM: compute_pgm_rsrc2_user_sgpr = 2 +// ASM: compute_pgm_rsrc2_tgid_x_en = 0 +// ASM: compute_pgm_rsrc2_tgid_y_en = 0 +// ASM: compute_pgm_rsrc2_tgid_z_en = 0 +// ASM: compute_pgm_rsrc2_tg_size_en = 0 +// ASM: compute_pgm_rsrc2_tidig_comp_cnt = 0 +// ASM: compute_pgm_rsrc2_excp_en_msb = 0 +// ASM: compute_pgm_rsrc2_lds_size = 0 +// ASM: compute_pgm_rsrc2_excp_en = 0 +// ASM: enable_sgpr_private_segment_buffer = 0 +// ASM: enable_sgpr_dispatch_ptr = 0 +// ASM: enable_sgpr_queue_ptr = 0 +// ASM: enable_sgpr_kernarg_segment_ptr = 1 +// ASM: enable_sgpr_dispatch_id = 0 +// ASM: enable_sgpr_flat_scratch_init = 0 +// ASM: enable_sgpr_private_segment_size = 0 +// ASM: enable_sgpr_grid_workgroup_count_x = 0 +// ASM: enable_sgpr_grid_workgroup_count_y = 0 +// ASM: enable_sgpr_grid_workgroup_count_z = 0 +// ASM: enable_ordered_append_gds = 0 +// ASM: private_element_size = 0 +// ASM: is_ptr64 = 1 +// ASM: is_dynamic_callstack = 0 +// ASM: is_debug_enabled = 0 +// ASM: is_xnack_enabled = 0 +// ASM: workitem_private_segment_byte_size = 0 +// ASM: workgroup_group_segment_byte_size = 0 +// ASM: gds_segment_byte_size = 0 +// ASM: kernarg_segment_byte_size = 16 +// ASM: workgroup_fbarrier_count = 0 +// ASM: wavefront_sgpr_count = 8 +// ASM: workitem_vgpr_count = 16 +// ASM: reserved_vgpr_first = 0 +// ASM: reserved_vgpr_count = 0 +// ASM: reserved_sgpr_first = 0 +// ASM: reserved_sgpr_count = 0 +// ASM: debug_wavefront_private_segment_offset_sgpr = 0 +// ASM: debug_private_segment_buffer_sgpr = 0 +// ASM: kernarg_segment_alignment = 4 +// ASM: group_segment_alignment = 4 +// ASM: private_segment_alignment = 4 +// ASM: wavefront_size = 6 +// ASM: call_convention = 0 +// ASM: runtime_loader_kernel_symbol = 0 +// ASM: .end_amd_kernel_code_t diff --git a/test/MC/AMDGPU/hsa-text.s b/test/MC/AMDGPU/hsa-text.s index 1d2f1f1619e1..afe696af0a26 100644 --- a/test/MC/AMDGPU/hsa-text.s +++ b/test/MC/AMDGPU/hsa-text.s @@ -5,29 +5,23 @@ // ELF: Section { -// We want to avoid emitting an empty .text section. -// ELF-NOT: Name: .text - -// ELF: Name: .hsatext +// ELF: Name: .text // ELF: Type: SHT_PROGBITS (0x1) -// ELF: Flags [ (0xC00007) +// ELF: Flags [ (0x6) // ELF: SHF_ALLOC (0x2) -// ELF: SHF_AMDGPU_HSA_AGENT (0x800000) -// ELF: SHF_AMDGPU_HSA_CODE (0x400000) // ELF: SHF_EXECINSTR (0x4) -// ELF: SHF_WRITE (0x1) // ELF: Size: 260 // ELF: } +.text +// ASM: .text + .hsa_code_object_version 1,0 // ASM: .hsa_code_object_version 1,0 .hsa_code_object_isa 7,0,0,"AMD","AMDGPU" // ASM: .hsa_code_object_isa 7,0,0,"AMD","AMDGPU" -.text -// ASM: .hsatext - .amd_kernel_code_t .end_amd_kernel_code_t diff --git a/test/MC/AMDGPU/hsa.s b/test/MC/AMDGPU/hsa.s index bfdcfb432923..27de3d5325d6 100644 --- a/test/MC/AMDGPU/hsa.s +++ b/test/MC/AMDGPU/hsa.s @@ -2,18 +2,15 @@ // RUN: llvm-mc -filetype=obj -triple amdgcn--amdhsa -mcpu=kaveri -show-encoding %s | llvm-readobj -symbols -s -sd | FileCheck %s --check-prefix=ELF // ELF: Section { -// ELF: Name: .hsatext +// ELF: Name: .text // ELF: Type: SHT_PROGBITS (0x1) -// ELF: Flags [ (0xC00007) +// ELF: Flags [ (0x6) // ELF: SHF_ALLOC (0x2) -// ELF: SHF_AMDGPU_HSA_AGENT (0x800000) -// ELF: SHF_AMDGPU_HSA_CODE (0x400000) // ELF: SHF_EXECINSTR (0x4) -// ELF: SHF_WRITE (0x1) // ELF: SHT_NOTE // ELF: 0000: 04000000 08000000 01000000 414D4400 -// ELF: 0010: 01000000 00000000 04000000 1B000000 +// ELF: 0010: 02000000 00000000 04000000 1B000000 // ELF: 0020: 03000000 414D4400 04000700 07000000 // ELF: 0030: 00000000 00000000 414D4400 414D4447 // ELF: 0040: 50550000 @@ -21,17 +18,19 @@ // ELF: Symbol { // ELF: Name: amd_kernel_code_t_minimal // ELF: Type: AMDGPU_HSA_KERNEL (0xA) -// ELF: Section: .hsatext +// ELF: Section: .text // ELF: } // ELF: Symbol { // ELF: Name: amd_kernel_code_t_test_all // ELF: Type: AMDGPU_HSA_KERNEL (0xA) -// ELF: Section: .hsatext +// ELF: Section: .text // ELF: } +.text +// ASM: .text -.hsa_code_object_version 1,0 -// ASM: .hsa_code_object_version 1,0 +.hsa_code_object_version 2,0 +// ASM: .hsa_code_object_version 2,0 .hsa_code_object_isa 7,0,0,"AMD","AMDGPU" // ASM: .hsa_code_object_isa 7,0,0,"AMD","AMDGPU" @@ -39,8 +38,6 @@ .amdgpu_hsa_kernel amd_kernel_code_t_test_all .amdgpu_hsa_kernel amd_kernel_code_t_minimal -.hsatext -// ASM: .hsatext amd_kernel_code_t_test_all: ; Test all amd_kernel_code_t members with non-default values. diff --git a/test/MC/AMDGPU/labels-branch.s b/test/MC/AMDGPU/labels-branch.s new file mode 100644 index 000000000000..da6450f13877 --- /dev/null +++ b/test/MC/AMDGPU/labels-branch.s @@ -0,0 +1,17 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck %s --check-prefix=VI + +loop_start: +s_branch loop_start +// VI: s_branch loop_start ; encoding: [A,A,0x82,0xbf] +// VI-NEXT: ; fixup A - offset: 0, value: loop_start, kind: fixup_si_sopp_br + +s_branch loop_end +// VI: s_branch loop_end ; encoding: [A,A,0x82,0xbf] +// VI-NEXT: ; fixup A - offset: 0, value: loop_end, kind: fixup_si_sopp_br +loop_end: + +s_branch gds +// VI: s_branch gds ; encoding: [A,A,0x82,0xbf] +// VI-NEXT: ; fixup A - offset: 0, value: gds, kind: fixup_si_sopp_br +gds: + s_nop 0 diff --git a/test/MC/AMDGPU/macro-examples.s b/test/MC/AMDGPU/macro-examples.s new file mode 100644 index 000000000000..10cbe88dc87a --- /dev/null +++ b/test/MC/AMDGPU/macro-examples.s @@ -0,0 +1,35 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji %s | FileCheck %s --check-prefix=VI + +//===----------------------------------------------------------------------===// +// Example of reg[expr] and reg[epxr1:expr2] syntax in macros. +//===----------------------------------------------------------------------===// + +.macro REG_NUM_EXPR_EXAMPLE width iter iter_end + .if \width == 4 + flat_load_dwordx4 v[8 + (\iter * 4):8 + (\iter * 4) + 3], v[2:3] + .else + flat_load_dword v[8 + \iter], v[2:3] + .endif + + .if (\iter_end - \iter) + REG_NUM_EXPR_EXAMPLE \width, (\iter + 1), \iter_end + .endif + .endm + +REG_NUM_EXPR_EXAMPLE 4, 0, 0 +// VI: flat_load_dwordx4 v[8:11], v[2:3] + +REG_NUM_EXPR_EXAMPLE 1, 0, 0 +// VI: flat_load_dword v8, v[2:3] + +REG_NUM_EXPR_EXAMPLE 4, 1, 4 +// VI: flat_load_dwordx4 v[12:15], v[2:3] +// VI: flat_load_dwordx4 v[16:19], v[2:3] +// VI: flat_load_dwordx4 v[20:23], v[2:3] +// VI: flat_load_dwordx4 v[24:27], v[2:3] + +REG_NUM_EXPR_EXAMPLE 1, 1, 4 +// VI: flat_load_dword v9, v[2:3] +// VI: flat_load_dword v10, v[2:3] +// VI: flat_load_dword v11, v[2:3] +// VI: flat_load_dword v12, v[2:3] diff --git a/test/MC/AMDGPU/mimg.s b/test/MC/AMDGPU/mimg.s new file mode 100644 index 000000000000..865427e26c0b --- /dev/null +++ b/test/MC/AMDGPU/mimg.s @@ -0,0 +1,27 @@ +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s --check-prefix=SICI +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s --check-prefix=SICI +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck %s --check-prefix=VI + +image_load v[4:6], v[237:240], s[28:35] dmask:0x7 unorm +// SICI: image_load v[4:6], v[237:240], s[28:35] dmask:0x7 unorm ; encoding: [0x00,0x17,0x00,0xf0,0xed,0x04,0x07,0x00] +// VI: image_load v[4:6], v[237:240], s[28:35] dmask:0x7 unorm ; encoding: [0x00,0x17,0x00,0xf0,0xed,0x04,0x07,0x00] + +image_store v[193:195], v[237:240], s[28:35] dmask:0x7 unorm +// SICI: image_store v[193:195], v[237:240], s[28:35] dmask:0x7 unorm ; encoding: [0x00,0x17,0x20,0xf0,0xed,0xc1,0x07,0x00] +// VI : image_store v[193:195], v[237:240], s[28:35] dmask:0x7 unorm ; encoding: [0x00,0x17,0x20,0xf0,0xed,0xc1,0x07,0x00] + +image_sample v[193:195], v[237:240], s[28:35], s[4:7] dmask:0x7 unorm +// SICI: image_sample v[193:195], v[237:240], s[28:35], s[4:7] dmask:0x7 unorm ; encoding: [0x00,0x17,0x80,0xf0,0xed,0xc1,0x27,0x00] +// VI : image_sample v[193:195], v[237:240], s[28:35], s[4:7] dmask:0x7 unorm ; encoding: [0x00,0x17,0x80,0xf0,0xed,0xc1,0x27,0x00] + +image_atomic_add v4, v[192:195], s[28:35] dmask:0x1 unorm glc +// SICI: image_atomic_add v4, v[192:195], s[28:35] dmask:0x1 unorm glc ; encoding: [0x00,0x31,0x44,0xf0,0xc0,0xc0,0x07,0x00] +// VI : image_atomic_add v4, v[192:195], s[28:35] dmask:0x1 unorm glc ; encoding: [0x00,0x31,0x48,0xf0,0xc0,0x04,0x07,0x00] + +image_atomic_swap v4, v[192:195], s[28:35] dmask:0x1 unorm glc +// SICI: image_atomic_swap v4, v[192:195], s[28:35] dmask:0x1 unorm glc ; encoding: [0x00,0x31,0x3c,0xf0,0xc0,0xc0,0x07,0x00] +// VI : image_atomic_swap v4, v[192:195], s[28:35] dmask:0x1 unorm glc ; encoding: [0x00,0x31,0x40,0xf0,0xc0,0x04,0x07,0x00] + +image_atomic_cmpswap v[4:5], v[192:195], s[28:35] dmask:0x1 unorm glc +// SIIC: image_atomic_cmpswap v[4:5], v[192:195], s[28:35] dmask:0x1 unorm glc ; encoding: [0x00,0x31,0x40,0xf0,0xc0,0xc0,0x07,0x00] +// VI : image_atomic_cmpswap v[4:5], v[192:195], s[28:35] dmask:0x1 unorm glc ; encoding: [0x00,0x31,0x44,0xf0,0xc0,0xc0,0x07,0x00] diff --git a/test/MC/AMDGPU/mubuf.s b/test/MC/AMDGPU/mubuf.s index 18cca7022699..959de53d9792 100644 --- a/test/MC/AMDGPU/mubuf.s +++ b/test/MC/AMDGPU/mubuf.s @@ -1,5 +1,6 @@ // RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti -show-encoding %s | FileCheck -check-prefix=GCN -check-prefix=SI -check-prefix=SICI %s // RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s | FileCheck -check-prefix=GCN -check-prefix=CI -check-prefix=SICI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck -check-prefix=GCN -check-prefix=VI %s // RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti %s 2>&1 | FileCheck -check-prefix=NOSI %s // RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire %s 2>&1 | FileCheck -check-prefix=NOCI %s @@ -13,29 +14,41 @@ // load - immediate offset only //===----------------------------------------------------------------------===// -buffer_load_dword v1, s[4:7], s1 -// SICI: buffer_load_dword v1, s[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] +buffer_load_dword v1, off, s[4:7], s1 +// SICI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x01,0x01] -buffer_load_dword v1, s[4:7], s1 offset:4 -// SICI: buffer_load_dword v1, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] +buffer_load_dword v1, off, ttmp[4:7], s1 +// SICI: buffer_load_dword v1, off, ttmp[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x1d,0x01] +// VI: buffer_load_dword v1, off, ttmp[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x1d,0x01] -buffer_load_dword v1, s[4:7], s1 offset:4 glc -// SICI: buffer_load_dword v1, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0x01,0x01] +buffer_load_dword v1, off, s[4:7], s1 offset:4 +// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x50,0xe0,0x00,0x01,0x01,0x01] -buffer_load_dword v1, s[4:7], s1 offset:4 slc -// SICI: buffer_load_dword v1, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x41,0x01] +buffer_load_dword v1, off, s[4:7], s1 offset:4 glc +// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x50,0xe0,0x00,0x01,0x01,0x01] -buffer_load_dword v1, s[4:7], s1 offset:4 tfe -// SICI: buffer_load_dword v1, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x81,0x01] +buffer_load_dword v1, off, s[4:7], s1 offset:4 slc +// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x41,0x01] +// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x52,0xe0,0x00,0x01,0x01,0x01] -buffer_load_dword v1, s[4:7], s1 tfe glc -// SICI: buffer_load_dword v1, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x30,0xe0,0x00,0x01,0x81,0x01] +buffer_load_dword v1, off, s[4:7], s1 offset:4 tfe +// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x81,0x01] +// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x50,0xe0,0x00,0x01,0x81,0x01] -buffer_load_dword v1, s[4:7], s1 offset:4 glc tfe slc -// SICI: buffer_load_dword v1, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0xc1,0x01] +buffer_load_dword v1, off, s[4:7], s1 glc tfe +// SICI: buffer_load_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x30,0xe0,0x00,0x01,0x81,0x01] +// VI: buffer_load_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x50,0xe0,0x00,0x01,0x81,0x01] -buffer_load_dword v1, s[4:7], s1 glc tfe slc offset:4 -// SICI: buffer_load_dword v1, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0xc1,0x01] +buffer_load_dword v1, off, s[4:7], s1 offset:4 glc slc tfe +// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0xc1,0x01] +// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x52,0xe0,0x00,0x01,0x81,0x01] + +buffer_load_dword v1, off, ttmp[4:7], s1 offset:4 glc slc tfe +// SICI: buffer_load_dword v1, off, ttmp[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0xdd,0x01] +// VI: buffer_load_dword v1, off, ttmp[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x52,0xe0,0x00,0x01,0x9d,0x01] //===----------------------------------------------------------------------===// // load - vgpr offset @@ -43,27 +56,35 @@ buffer_load_dword v1, s[4:7], s1 glc tfe slc offset:4 buffer_load_dword v1, v2, s[4:7], s1 offen // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x41,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x52,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x50,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v2, s[4:7], s1 offen tfe glc +buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x30,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x50,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc tfe slc +buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x30,0xe0,0x02,0x01,0xc1,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x52,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe slc offset:4 -// SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x30,0xe0,0x02,0x01,0xc1,0x01] +buffer_load_dword v1, v2, ttmp[4:7], s1 offen offset:4 glc slc tfe +// SICI: buffer_load_dword v1, v2, ttmp[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x30,0xe0,0x02,0x01,0xdd,0x01] +// VI: buffer_load_dword v1, v2, ttmp[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x52,0xe0,0x02,0x01,0x9d,0x01] //===----------------------------------------------------------------------===// // load - vgpr index @@ -71,27 +92,35 @@ buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe slc offset:4 buffer_load_dword v1, v2, s[4:7], s1 idxen // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x41,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x52,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x50,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v2, s[4:7], s1 idxen tfe glc +buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x30,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x50,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc tfe slc +buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x30,0xe0,0x02,0x01,0xc1,0x01] +// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x52,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe slc offset:4 -// SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x30,0xe0,0x02,0x01,0xc1,0x01] +buffer_load_dword v1, v2, ttmp[4:7], s1 idxen offset:4 glc slc tfe +// SICI: buffer_load_dword v1, v2, ttmp[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x30,0xe0,0x02,0x01,0xdd,0x01] +// VI: buffer_load_dword v1, v2, ttmp[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x52,0xe0,0x02,0x01,0x9d,0x01] //===----------------------------------------------------------------------===// // load - vgpr index and offset @@ -99,27 +128,35 @@ buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe slc offset:4 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x30,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x50,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x30,0xe0,0x02,0x01,0x41,0x01] +// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x52,0xe0,0x02,0x01,0x01,0x01] buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x30,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x50,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen tfe glc +buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x30,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x50,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc tfe slc +buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x30,0xe0,0x02,0x01,0xc1,0x01] +// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x52,0xe0,0x02,0x01,0x81,0x01] -buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe slc offset:4 -// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x30,0xe0,0x02,0x01,0xc1,0x01] +buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe +// SICI: buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x30,0xe0,0x02,0x01,0xdd,0x71] +// VI: buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x52,0xe0,0x02,0x01,0x9d,0x71] //===----------------------------------------------------------------------===// // load - addr64 @@ -127,55 +164,71 @@ buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe slc offset:4 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 ; encoding: [0x00,0x80,0x30,0xe0,0x02,0x01,0x01,0x01] +// NOVI: error: instruction not supported on this GPU buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 ; encoding: [0x04,0x80,0x30,0xe0,0x02,0x01,0x01,0x01] +// NOVI: error: instruction not supported on this GPU buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc ; encoding: [0x04,0xc0,0x30,0xe0,0x02,0x01,0x01,0x01] +// NOVI: error: instruction not supported on this GPU buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc ; encoding: [0x04,0x80,0x30,0xe0,0x02,0x01,0x41,0x01] +// NOVI: error: instruction not supported on this GPU buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe ; encoding: [0x04,0x80,0x30,0xe0,0x02,0x01,0x81,0x01] +// NOVI: error: instruction not supported on this GPU -buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 tfe glc +buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe ; encoding: [0x00,0xc0,0x30,0xe0,0x02,0x01,0x81,0x01] +// NOVI: error: instruction not supported on this GPU -buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc tfe slc +buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x30,0xe0,0x02,0x01,0xc1,0x01] +// NOVI: error: instruction not supported on this GPU -buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe slc offset:4 -// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x30,0xe0,0x02,0x01,0xc1,0x01] +buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 addr64 offset:4 glc slc tfe +// SICI: buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x30,0xe0,0x02,0x01,0xdd,0x71] +// NOVI: error: instruction not supported on this GPU //===----------------------------------------------------------------------===// // store - immediate offset only //===----------------------------------------------------------------------===// -buffer_store_dword v1, s[4:7], s1 -// SICI: buffer_store_dword v1, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +buffer_store_dword v1, off, s[4:7], s1 +// SICI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] -buffer_store_dword v1, s[4:7], s1 offset:4 -// SICI: buffer_store_dword v1, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +buffer_store_dword v1, off, s[4:7], s1 offset:4 +// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] -buffer_store_dword v1, s[4:7], s1 offset:4 glc -// SICI: buffer_store_dword v1, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0x01,0x01] +buffer_store_dword v1, off, s[4:7], s1 offset:4 glc +// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0x01,0x01] -buffer_store_dword v1, s[4:7], s1 offset:4 slc -// SICI: buffer_store_dword v1, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x41,0x01] +buffer_store_dword v1, off, s[4:7], s1 offset:4 slc +// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x41,0x01] +// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x72,0xe0,0x00,0x01,0x01,0x01] -buffer_store_dword v1, s[4:7], s1 offset:4 tfe -// SICI: buffer_store_dword v1, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x81,0x01] +buffer_store_dword v1, off, s[4:7], s1 offset:4 tfe +// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x81,0x01] +// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x81,0x01] -buffer_store_dword v1, s[4:7], s1 tfe glc -// SICI: buffer_store_dword v1, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x70,0xe0,0x00,0x01,0x81,0x01] +buffer_store_dword v1, off, s[4:7], s1 glc tfe +// SICI: buffer_store_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x70,0xe0,0x00,0x01,0x81,0x01] +// VI: buffer_store_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x70,0xe0,0x00,0x01,0x81,0x01] -buffer_store_dword v1, s[4:7], s1 offset:4 glc tfe slc -// SICI: buffer_store_dword v1, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0xc1,0x01] +buffer_store_dword v1, off, s[4:7], s1 offset:4 glc slc tfe +// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0xc1,0x01] +// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x72,0xe0,0x00,0x01,0x81,0x01] -buffer_store_dword v1, s[4:7], s1 glc tfe slc offset:4 -// SICI: buffer_store_dword v1, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0xc1,0x01] +buffer_store_dword v1, off, ttmp[4:7], ttmp1 offset:4 glc slc tfe +// SICI: buffer_store_dword v1, off, ttmp[4:7], ttmp1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0xdd,0x71] +// VI: buffer_store_dword v1, off, ttmp[4:7], ttmp1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x72,0xe0,0x00,0x01,0x9d,0x71] //===----------------------------------------------------------------------===// // store - vgpr offset @@ -183,27 +236,35 @@ buffer_store_dword v1, s[4:7], s1 glc tfe slc offset:4 buffer_store_dword v1, v2, s[4:7], s1 offen // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x41,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x72,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v2, s[4:7], s1 offen tfe glc +buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x70,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x70,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc tfe slc +buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0xc1,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x72,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe slc offset:4 -// SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0xc1,0x01] +buffer_store_dword v1, v2, ttmp[4:7], ttmp1 offen offset:4 glc slc tfe +// SICI: buffer_store_dword v1, v2, ttmp[4:7], ttmp1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0xdd,0x71] +// VI: buffer_store_dword v1, v2, ttmp[4:7], ttmp1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x72,0xe0,0x02,0x01,0x9d,0x71] //===----------------------------------------------------------------------===// // store - vgpr index @@ -211,27 +272,35 @@ buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe slc offset:4 buffer_store_dword v1, v2, s[4:7], s1 idxen // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x41,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x72,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v2, s[4:7], s1 idxen tfe glc +buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x70,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x70,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc tfe slc +buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0xc1,0x01] +// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x72,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe slc offset:4 -// SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0xc1,0x01] +buffer_store_dword v1, v2, ttmp[4:7], ttmp1 idxen offset:4 glc slc tfe +// SICI: buffer_store_dword v1, v2, ttmp[4:7], ttmp1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0xdd,0x71] +// VI: buffer_store_dword v1, v2, ttmp[4:7], ttmp1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x72,0xe0,0x02,0x01,0x9d,0x71] //===----------------------------------------------------------------------===// // store - vgpr index and offset @@ -239,27 +308,35 @@ buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe slc offset:4 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0x01,0x01] +// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x41,0x01] +// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x72,0xe0,0x02,0x01,0x01,0x01] buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen tfe glc +buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x70,0xe0,0x02,0x01,0x81,0x01] +// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x70,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc tfe slc +buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0xc1,0x01] +// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x72,0xe0,0x02,0x01,0x81,0x01] -buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe slc offset:4 -// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0xc1,0x01] +buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe +// SICI: buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0xdd,0x71] +// VI: buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x72,0xe0,0x02,0x01,0x9d,0x71] //===----------------------------------------------------------------------===// // store - addr64 @@ -267,91 +344,143 @@ buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe slc offset:4 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 ; encoding: [0x00,0x80,0x70,0xe0,0x02,0x01,0x01,0x01] +// NOVI: error: instruction not supported on this GPU buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 ; encoding: [0x04,0x80,0x70,0xe0,0x02,0x01,0x01,0x01] +// NOVI: error: instruction not supported on this GPU buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc ; encoding: [0x04,0xc0,0x70,0xe0,0x02,0x01,0x01,0x01] +// NOVI: error: instruction not supported on this GPU buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc ; encoding: [0x04,0x80,0x70,0xe0,0x02,0x01,0x41,0x01] +// NOVI: error: instruction not supported on this GPU buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe ; encoding: [0x04,0x80,0x70,0xe0,0x02,0x01,0x81,0x01] +// NOVI: error: instruction not supported on this GPU -buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 tfe glc +buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe ; encoding: [0x00,0xc0,0x70,0xe0,0x02,0x01,0x81,0x01] +// NOVI: error: instruction not supported on this GPU -buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc tfe slc +buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x70,0xe0,0x02,0x01,0xc1,0x01] +// NOVI: error: instruction not supported on this GPU -buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe slc offset:4 -// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x70,0xe0,0x02,0x01,0xc1,0x01] +buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 addr64 offset:4 glc slc tfe +// SICI: buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x70,0xe0,0x02,0x01,0xdd,0x71] +// NOVI: error: instruction not supported on this GPU //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// -buffer_load_format_x v1, s[4:7], s1 -// SICI: buffer_load_format_x v1, s[4:7], s1 ; encoding: [0x00,0x00,0x00,0xe0,0x00,0x01,0x01,0x01] +buffer_load_format_x v1, off, s[4:7], s1 +// SICI: buffer_load_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x00,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x00,0xe0,0x00,0x01,0x01,0x01] + +buffer_load_format_xy v[1:2], off, s[4:7], s1 +// SICI: buffer_load_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x04,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x04,0xe0,0x00,0x01,0x01,0x01] + +buffer_load_format_xyz v[1:3], off, s[4:7], s1 +// SICI: buffer_load_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x08,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x08,0xe0,0x00,0x01,0x01,0x01] + +buffer_load_format_xyzw v[1:4], off, s[4:7], s1 +// SICI: buffer_load_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x0c,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x0c,0xe0,0x00,0x01,0x01,0x01] + +buffer_store_format_x v1, off, s[4:7], s1 +// SICI: buffer_store_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x10,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x10,0xe0,0x00,0x01,0x01,0x01] -buffer_load_format_xy v[1:2], s[4:7], s1 -// SICI: buffer_load_format_xy v[1:2], s[4:7], s1 ; encoding: [0x00,0x00,0x04,0xe0,0x00,0x01,0x01,0x01] +buffer_store_format_xy v[1:2], off, s[4:7], s1 +// SICI: buffer_store_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x14,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x14,0xe0,0x00,0x01,0x01,0x01] -buffer_load_format_xyz v[1:3], s[4:7], s1 -// SICI: buffer_load_format_xyz v[1:3], s[4:7], s1 ; encoding: [0x00,0x00,0x08,0xe0,0x00,0x01,0x01,0x01] +buffer_store_format_xyz v[1:3], off, s[4:7], s1 +// SICI: buffer_store_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x18,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x18,0xe0,0x00,0x01,0x01,0x01] -buffer_load_format_xyzw v[1:4], s[4:7], s1 -// SICI: buffer_load_format_xyzw v[1:4], s[4:7], s1 ; encoding: [0x00,0x00,0x0c,0xe0,0x00,0x01,0x01,0x01] +buffer_store_format_xyzw v[1:4], off, s[4:7], s1 +// SICI: buffer_store_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x01,0x01] -buffer_store_format_x v1, s[4:7], s1 -// SICI: buffer_store_format_x v1, s[4:7], s1 ; encoding: [0x00,0x00,0x10,0xe0,0x00,0x01,0x01,0x01] +buffer_store_format_xyzw v[1:4], off, ttmp[4:7], ttmp1 +// SICI: buffer_store_format_xyzw v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_store_format_xyzw v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x1d,0x71] -buffer_store_format_xy v[1:2], s[4:7], s1 -// SICI: buffer_store_format_xy v[1:2], s[4:7], s1 ; encoding: [0x00,0x00,0x14,0xe0,0x00,0x01,0x01,0x01] +buffer_load_ubyte v1, off, s[4:7], s1 +// SICI: buffer_load_ubyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x20,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_ubyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x40,0xe0,0x00,0x01,0x01,0x01] -buffer_store_format_xyz v[1:3], s[4:7], s1 -// SICI: buffer_store_format_xyz v[1:3], s[4:7], s1 ; encoding: [0x00,0x00,0x18,0xe0,0x00,0x01,0x01,0x01] +buffer_load_ubyte v1, off, ttmp[4:7], ttmp1 +// SICI: buffer_load_ubyte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x20,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_load_ubyte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x40,0xe0,0x00,0x01,0x1d,0x71] -buffer_store_format_xyzw v[1:4], s[4:7], s1 -// SICI: buffer_store_format_xyzw v[1:4], s[4:7], s1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x01,0x01] +buffer_load_sbyte v1, off, s[4:7], s1 +// SICI: buffer_load_sbyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x24,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_sbyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x44,0xe0,0x00,0x01,0x01,0x01] -buffer_load_ubyte v1, s[4:7], s1 -// SICI: buffer_load_ubyte v1, s[4:7], s1 ; encoding: [0x00,0x00,0x20,0xe0,0x00,0x01,0x01,0x01] +buffer_load_ushort v1, off, s[4:7], s1 +// SICI: buffer_load_ushort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_ushort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x01,0x01,0x01] -buffer_load_sbyte v1, s[4:7], s1 -// SICI: buffer_load_sbyte v1, s[4:7], s1 ; encoding: [0x00,0x00,0x24,0xe0,0x00,0x01,0x01,0x01] +buffer_load_sshort v1, off, s[4:7], s1 +// SICI: buffer_load_sshort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x2c,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_sshort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x4c,0xe0,0x00,0x01,0x01,0x01] -buffer_load_ushort v1, s[4:7], s1 -// SICI: buffer_load_ushort v1, s[4:7], s1 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x01,0x01,0x01] +buffer_load_dword v1, off, s[4:7], s1 +// SICI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x01,0x01] -buffer_load_sshort v1, s[4:7], s1 -// SICI: buffer_load_sshort v1, s[4:7], s1 ; encoding: [0x00,0x00,0x2c,0xe0,0x00,0x01,0x01,0x01] +buffer_load_dword v1, off, ttmp[4:7], ttmp1 +// SICI: buffer_load_dword v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_load_dword v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x1d,0x71] -buffer_load_dword v1, s[4:7], s1 -// SICI: buffer_load_dword v1, s[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] +buffer_load_dwordx2 v[1:2], off, s[4:7], s1 +// SICI: buffer_load_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x34,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x54,0xe0,0x00,0x01,0x01,0x01] -buffer_load_dwordx2 v[1:2], s[4:7], s1 -// SICI: buffer_load_dwordx2 v[1:2], s[4:7], s1 ; encoding: [0x00,0x00,0x34,0xe0,0x00,0x01,0x01,0x01] +buffer_load_dwordx4 v[1:4], off, s[4:7], s1 +// SICI: buffer_load_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x38,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x5c,0xe0,0x00,0x01,0x01,0x01] -buffer_load_dwordx4 v[1:4], s[4:7], s1 -// SICI: buffer_load_dwordx4 v[1:4], s[4:7], s1 ; encoding: [0x00,0x00,0x38,0xe0,0x00,0x01,0x01,0x01] +buffer_load_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 +// SICI: buffer_load_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x38,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_load_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x5c,0xe0,0x00,0x01,0x1d,0x71] -buffer_store_byte v1, s[4:7], s1 -// SICI: buffer_store_byte v1, s[4:7], s1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x01,0x01] +buffer_store_byte v1, off, s[4:7], s1 +// SICI: buffer_store_byte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_byte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x01,0x01] -buffer_store_short v1, s[4:7], s1 -// SICI: buffer_store_short v1, s[4:7], s1 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x01,0x01,0x01] +buffer_store_byte v1, off, ttmp[4:7], ttmp1 +// SICI: buffer_store_byte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_store_byte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x1d,0x71] -buffer_store_dword v1 s[4:7], s1 -// SICI: buffer_store_dword v1, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +buffer_store_short v1, off, s[4:7], s1 +// SICI: buffer_store_short v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_short v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x01,0x01,0x01] -buffer_store_dwordx2 v[1:2], s[4:7], s1 -// SICI: buffer_store_dwordx2 v[1:2], s[4:7], s1 ; encoding: [0x00,0x00,0x74,0xe0,0x00,0x01,0x01,0x01] +buffer_store_dword v1, off, s[4:7], s1 +// SICI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] -buffer_store_dwordx4 v[1:4], s[4:7], s1 -// SICI: buffer_store_dwordx4 v[1:4], s[4:7], s1 ; encoding: [0x00,0x00,0x78,0xe0,0x00,0x01,0x01,0x01] +buffer_store_dwordx2 v[1:2], off, s[4:7], s1 +// SICI: buffer_store_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x74,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x74,0xe0,0x00,0x01,0x01,0x01] + +buffer_store_dwordx4 v[1:4], off, s[4:7], s1 +// SICI: buffer_store_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x78,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_store_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x7c,0xe0,0x00,0x01,0x01,0x01] + +buffer_store_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 +// SICI: buffer_store_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x78,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_store_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x7c,0xe0,0x00,0x01,0x1d,0x71] //===----------------------------------------------------------------------===// // Cache invalidation @@ -359,6 +488,7 @@ buffer_store_dwordx4 v[1:4], s[4:7], s1 buffer_wbinvl1 // SICI: buffer_wbinvl1 ; encoding: [0x00,0x00,0xc4,0xe1,0x00,0x00,0x00,0x00] +// VI: buffer_wbinvl1 ; encoding: [0x00,0x00,0xf8,0xe0,0x00,0x00,0x00,0x00] buffer_wbinvl1_sc // SI: buffer_wbinvl1_sc ; encoding: [0x00,0x00,0xc0,0xe1,0x00,0x00,0x00,0x00] @@ -367,6 +497,208 @@ buffer_wbinvl1_sc buffer_wbinvl1_vol // CI: buffer_wbinvl1_vol ; encoding: [0x00,0x00,0xc0,0xe1,0x00,0x00,0x00,0x00] +// VI: buffer_wbinvl1_vol ; encoding: [0x00,0x00,0xfc,0xe0,0x00,0x00,0x00,0x00] // NOSI: error: instruction not supported on this GPU -// TODO: Atomics +//===----------------------------------------------------------------------===// +// Atomics +//===----------------------------------------------------------------------===// +buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 ; encoding: [0x00,0x80,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, v[2:3], s[8:11], s4 addr64 +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], s4 addr64 ; encoding: [0x00,0x80,0xf0,0xe0,0x02,0x01,0x02,0x04] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 slc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 slc ; encoding: [0x00,0x80,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 offset:4 +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 offset:4 ; encoding: [0x04,0x80,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 offset:4 slc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 offset:4 slc ; encoding: [0x04,0x80,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, off, s[8:11], 56 +// SICI: buffer_atomic_inc v1, off, s[8:11], 56 ; encoding: [0x00,0x00,0xf0,0xe0,0x00,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, off, s[8:11], 56 ; encoding: [0x00,0x00,0x2c,0xe1,0x00,0x01,0x02,0xb8] + +buffer_atomic_inc v1, off, s[8:11], 56 slc +// SICI: buffer_atomic_inc v1, off, s[8:11], 56 slc ; encoding: [0x00,0x00,0xf0,0xe0,0x00,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, off, s[8:11], 56 slc ; encoding: [0x00,0x00,0x2e,0xe1,0x00,0x01,0x02,0xb8] + +buffer_atomic_inc v1, off, s[8:11], s4 slc +// SICI: buffer_atomic_inc v1, off, s[8:11], s4 slc ; encoding: [0x00,0x00,0xf0,0xe0,0x00,0x01,0x42,0x04] +// VI: buffer_atomic_inc v1, off, s[8:11], s4 slc ; encoding: [0x00,0x00,0x2e,0xe1,0x00,0x01,0x02,0x04] + +buffer_atomic_inc v1, off, s[8:11], 56 offset:4 +// SICI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 ; encoding: [0x04,0x00,0xf0,0xe0,0x00,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 ; encoding: [0x04,0x00,0x2c,0xe1,0x00,0x01,0x02,0xb8] + +buffer_atomic_inc v1, off, s[8:11], 56 offset:4 slc +// SICI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 slc ; encoding: [0x04,0x00,0xf0,0xe0,0x00,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 slc ; encoding: [0x04,0x00,0x2e,0xe1,0x00,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 offen +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 offen ; encoding: [0x00,0x10,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen ; encoding: [0x00,0x10,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 offen slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 offen slc ; encoding: [0x00,0x10,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen slc ; encoding: [0x00,0x10,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 ; encoding: [0x04,0x10,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 ; encoding: [0x04,0x10,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], s4 offen offset:4 +// SICI: buffer_atomic_inc v1, v2, s[8:11], s4 offen offset:4 ; encoding: [0x04,0x10,0xf0,0xe0,0x02,0x01,0x02,0x04] +// VI: buffer_atomic_inc v1, v2, s[8:11], s4 offen offset:4 ; encoding: [0x04,0x10,0x2c,0xe1,0x02,0x01,0x02,0x04] + +buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 slc ; encoding: [0x04,0x10,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 slc ; encoding: [0x04,0x10,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 idxen +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen ; encoding: [0x00,0x20,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen ; encoding: [0x00,0x20,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 idxen slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen slc ; encoding: [0x00,0x20,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen slc ; encoding: [0x00,0x20,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 ; encoding: [0x04,0x20,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 ; encoding: [0x04,0x20,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 slc ; encoding: [0x04,0x20,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 slc ; encoding: [0x04,0x20,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], s4 idxen offset:4 slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], s4 idxen offset:4 slc ; encoding: [0x04,0x20,0xf0,0xe0,0x02,0x01,0x42,0x04] +// VI: buffer_atomic_inc v1, v2, s[8:11], s4 idxen offset:4 slc ; encoding: [0x04,0x20,0x2e,0xe1,0x02,0x01,0x02,0x04] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen ; encoding: [0x00,0x30,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen ; encoding: [0x00,0x30,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v[2:3], s[8:11], s4 idxen offen +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], s4 idxen offen ; encoding: [0x00,0x30,0xf0,0xe0,0x02,0x01,0x02,0x04] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], s4 idxen offen ; encoding: [0x00,0x30,0x2c,0xe1,0x02,0x01,0x02,0x04] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen slc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen slc ; encoding: [0x00,0x30,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen slc ; encoding: [0x00,0x30,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 ; encoding: [0x04,0x30,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 ; encoding: [0x04,0x30,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 slc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 slc ; encoding: [0x04,0x30,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 glc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 glc ; encoding: [0x00,0xc0,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, v[2:3], s[8:11], s4 addr64 glc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], s4 addr64 glc ; encoding: [0x00,0xc0,0xf0,0xe0,0x02,0x01,0x02,0x04] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 glc slc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 glc slc ; encoding: [0x00,0xc0,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 offset:4 glc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 offset:4 glc ; encoding: [0x04,0xc0,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 offset:4 glc slc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 addr64 offset:4 glc slc ; encoding: [0x04,0xc0,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// NOVI: error: instruction not supported on this GPU + +buffer_atomic_inc v1, off, s[8:11], 56 glc +// SICI: buffer_atomic_inc v1, off, s[8:11], 56 glc ; encoding: [0x00,0x40,0xf0,0xe0,0x00,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, off, s[8:11], 56 glc ; encoding: [0x00,0x40,0x2c,0xe1,0x00,0x01,0x02,0xb8] + +buffer_atomic_inc v1, off, s[8:11], 56 glc slc +// SICI: buffer_atomic_inc v1, off, s[8:11], 56 glc slc ; encoding: [0x00,0x40,0xf0,0xe0,0x00,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, off, s[8:11], 56 glc slc ; encoding: [0x00,0x40,0x2e,0xe1,0x00,0x01,0x02,0xb8] + +buffer_atomic_inc v1, off, s[8:11], s4 glc slc +// SICI: buffer_atomic_inc v1, off, s[8:11], s4 glc slc ; encoding: [0x00,0x40,0xf0,0xe0,0x00,0x01,0x42,0x04] +// VI: buffer_atomic_inc v1, off, s[8:11], s4 glc slc ; encoding: [0x00,0x40,0x2e,0xe1,0x00,0x01,0x02,0x04] + +buffer_atomic_inc v1, off, s[8:11], 56 offset:4 glc +// SICI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 glc ; encoding: [0x04,0x40,0xf0,0xe0,0x00,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 glc ; encoding: [0x04,0x40,0x2c,0xe1,0x00,0x01,0x02,0xb8] + +buffer_atomic_inc v1, off, s[8:11], 56 offset:4 glc slc +// SICI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 glc slc ; encoding: [0x04,0x40,0xf0,0xe0,0x00,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 glc slc ; encoding: [0x04,0x40,0x2e,0xe1,0x00,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 offen glc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 offen glc ; encoding: [0x00,0x50,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen glc ; encoding: [0x00,0x50,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 offen glc slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 offen glc slc ; encoding: [0x00,0x50,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen glc slc ; encoding: [0x00,0x50,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 glc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 glc ; encoding: [0x04,0x50,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 glc ; encoding: [0x04,0x50,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], s4 offen offset:4 glc +// SICI: buffer_atomic_inc v1, v2, s[8:11], s4 offen offset:4 glc ; encoding: [0x04,0x50,0xf0,0xe0,0x02,0x01,0x02,0x04] +// VI: buffer_atomic_inc v1, v2, s[8:11], s4 offen offset:4 glc ; encoding: [0x04,0x50,0x2c,0xe1,0x02,0x01,0x02,0x04] + +buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 glc slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 glc slc ; encoding: [0x04,0x50,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 glc slc ; encoding: [0x04,0x50,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 idxen glc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen glc ; encoding: [0x00,0x60,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen glc ; encoding: [0x00,0x60,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 idxen glc slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen glc slc ; encoding: [0x00,0x60,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen glc slc ; encoding: [0x00,0x60,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 glc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 glc ; encoding: [0x04,0x60,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 glc ; encoding: [0x04,0x60,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 glc slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 glc slc ; encoding: [0x04,0x60,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 glc slc ; encoding: [0x04,0x60,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v2, s[8:11], s4 idxen offset:4 glc slc +// SICI: buffer_atomic_inc v1, v2, s[8:11], s4 idxen offset:4 glc slc ; encoding: [0x04,0x60,0xf0,0xe0,0x02,0x01,0x42,0x04] +// VI: buffer_atomic_inc v1, v2, s[8:11], s4 idxen offset:4 glc slc ; encoding: [0x04,0x60,0x2e,0xe1,0x02,0x01,0x02,0x04] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen glc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen glc ; encoding: [0x00,0x70,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen glc ; encoding: [0x00,0x70,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v[2:3], s[8:11], s4 idxen offen glc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], s4 idxen offen glc ; encoding: [0x00,0x70,0xf0,0xe0,0x02,0x01,0x02,0x04] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], s4 idxen offen glc ; encoding: [0x00,0x70,0x2c,0xe1,0x02,0x01,0x02,0x04] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen glc slc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen glc slc ; encoding: [0x00,0x70,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen glc slc ; encoding: [0x00,0x70,0x2e,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 glc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 glc ; encoding: [0x04,0x70,0xf0,0xe0,0x02,0x01,0x02,0xb8] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x2c,0xe1,0x02,0x01,0x02,0xb8] + +buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 glc slc +// SICI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 glc slc ; encoding: [0x04,0x70,0xf0,0xe0,0x02,0x01,0x42,0xb8] +// VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 glc slc ; encoding: [0x04,0x70,0x2e,0xe1,0x02,0x01,0x02,0xb8] diff --git a/test/MC/AMDGPU/out-of-range-registers.s b/test/MC/AMDGPU/out-of-range-registers.s index 947c64d3e642..2099229d5aa5 100644 --- a/test/MC/AMDGPU/out-of-range-registers.s +++ b/test/MC/AMDGPU/out-of-range-registers.s @@ -2,61 +2,61 @@ // RUN: not llvm-mc -arch=amdgcn -mcpu=tonga %s 2>&1 | FileCheck %s s_add_i32 s104, s0, s1 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_add_i32 s105, s0, s1 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand v_add_i32 v256, v0, v1 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand v_add_i32 v257, v0, v1 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_mov_b64 s[0:17], -1 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_mov_b64 s[103:104], -1 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_mov_b64 s[104:105], -1 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx4 s[102:105], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx4 s[104:108], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx4 s[108:112], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx4 s[1:4], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx4 s[1:4], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx8 s[104:111], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx8 s[100:107], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx8 s[108:115], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx16 s[92:107], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx16 s[96:111], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx16 s[100:115], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx16 s[104:119], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand s_load_dwordx16 s[108:123], s[2:3], s4 -// CHECK: error: invalid operand for instruction +// CHECK: error: not a valid operand diff --git a/test/MC/AMDGPU/reg-syntax-extra.s b/test/MC/AMDGPU/reg-syntax-extra.s new file mode 100644 index 000000000000..52892a4e5e2b --- /dev/null +++ b/test/MC/AMDGPU/reg-syntax-extra.s @@ -0,0 +1,112 @@ +// RUN: not llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s 2>&1 | FileCheck --check-prefix=NOSICI %s +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s 2>&1 | FileCheck --check-prefix=GCN --check-prefix=VI %s + +s_mov_b32 [ttmp5], [ttmp3] +// SICI: s_mov_b32 ttmp5, ttmp3 ; encoding: [0x73,0x03,0xf5,0xbe] +// VI: s_mov_b32 ttmp5, ttmp3 ; encoding: [0x73,0x00,0xf5,0xbe] + +s_mov_b64 [ttmp4,ttmp5], [ttmp2,ttmp3] +// SICI: s_mov_b64 ttmp[4:5], ttmp[2:3] ; encoding: [0x72,0x04,0xf4,0xbe] +// VI: s_mov_b64 ttmp[4:5], ttmp[2:3] ; encoding: [0x72,0x01,0xf4,0xbe] + +s_mov_b64 ttmp[4:5], ttmp[2:3] +// SICI: s_mov_b64 ttmp[4:5], ttmp[2:3] ; encoding: [0x72,0x04,0xf4,0xbe] +// VI: s_mov_b64 ttmp[4:5], ttmp[2:3] ; encoding: [0x72,0x01,0xf4,0xbe] + +s_mov_b64 [s6,s7], s[8:9] +// SICI: s_mov_b64 s[6:7], s[8:9] ; encoding: [0x08,0x04,0x86,0xbe] +// VI: s_mov_b64 s[6:7], s[8:9] ; encoding: [0x08,0x01,0x86,0xbe] + +s_mov_b64 s[6:7], [s8,s9] +// SICI: s_mov_b64 s[6:7], s[8:9] ; encoding: [0x08,0x04,0x86,0xbe] +// VI: s_mov_b64 s[6:7], s[8:9] ; encoding: [0x08,0x01,0x86,0xbe] + +s_mov_b64 [exec_lo,exec_hi], s[2:3] +// SICI: s_mov_b64 exec, s[2:3] ; encoding: [0x02,0x04,0xfe,0xbe] +// VI: s_mov_b64 exec, s[2:3] ; encoding: [0x02,0x01,0xfe,0xbe] + +s_mov_b64 [flat_scratch_lo,flat_scratch_hi], s[2:3] +// NOSICI: error: +// VI: s_mov_b64 flat_scratch, s[2:3] ; encoding: [0x02,0x01,0xe6,0xbe] + +s_mov_b64 [vcc_lo,vcc_hi], s[2:3] +// SICI: s_mov_b64 vcc, s[2:3] ; encoding: [0x02,0x04,0xea,0xbe] +// VI: s_mov_b64 vcc, s[2:3] ; encoding: [0x02,0x01,0xea,0xbe] + +s_mov_b64 [tba_lo,tba_hi], s[2:3] +// SICI: s_mov_b64 tba, s[2:3] ; encoding: [0x02,0x04,0xec,0xbe] +// VI: s_mov_b64 tba, s[2:3] ; encoding: [0x02,0x01,0xec,0xbe] + +s_mov_b64 [tma_lo,tma_hi], s[2:3] +// SICI: s_mov_b64 tma, s[2:3] ; encoding: [0x02,0x04,0xee,0xbe] +// VI: s_mov_b64 tma, s[2:3] ; encoding: [0x02,0x01,0xee,0xbe] + +v_mov_b32 [v1], [v2] +// GCN: v_mov_b32_e32 v1, v2 ; encoding: [0x02,0x03,0x02,0x7e] + +v_rcp_f64 [v1,v2], [v2,v3] +// SICI: v_rcp_f64_e32 v[1:2], v[2:3] ; encoding: [0x02,0x5f,0x02,0x7e] +// VI: v_rcp_f64_e32 v[1:2], v[2:3] ; encoding: [0x02,0x4b,0x02,0x7e] + +buffer_load_dwordx4 [v1,v2,v3,v4], off, [s4,s5,s6,s7], s1 +// SICI: buffer_load_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x38,0xe0,0x00,0x01,0x01,0x01] +// VI: buffer_load_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x5c,0xe0,0x00,0x01,0x01,0x01] + +buffer_load_dword v1, off, [ttmp4,ttmp5,ttmp6,ttmp7], s1 +// SICI: buffer_load_dword v1, off, ttmp[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x1d,0x01] +// VI: buffer_load_dword v1, off, ttmp[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x1d,0x01] + +buffer_store_format_xyzw v[1:4], off, [ttmp4,ttmp5,ttmp6,ttmp7], ttmp1 +// SICI: buffer_store_format_xyzw v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_store_format_xyzw v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x1d,0x71] + +buffer_load_ubyte v1, off, [ttmp4,ttmp5,ttmp6,ttmp7], ttmp1 +// SICI: buffer_load_ubyte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x20,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_load_ubyte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x40,0xe0,0x00,0x01,0x1d,0x71] + +buffer_store_dwordx4 v[1:4], off, [ttmp4,ttmp5,ttmp6,ttmp7], ttmp1 +// SICI: buffer_store_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x78,0xe0,0x00,0x01,0x1d,0x71] +// VI: buffer_store_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x7c,0xe0,0x00,0x01,0x1d,0x71] + +s_load_dwordx4 [ttmp4,ttmp5,ttmp6,ttmp7], [ttmp2,ttmp3], ttmp4 +// SICI: s_load_dwordx4 ttmp[4:7], ttmp[2:3], ttmp4 ; encoding: [0x74,0x72,0xba,0xc0] +// VI: s_load_dwordx4 ttmp[4:7], ttmp[2:3], ttmp4 ; encoding: [0x39,0x1d,0x08,0xc0,0x74,0x00,0x00,0x00] + +s_buffer_load_dword ttmp1, [ttmp4,ttmp5,ttmp6,ttmp7], ttmp4 +// SICI: s_buffer_load_dword ttmp1, ttmp[4:7], ttmp4 ; encoding: [0x74,0xf4,0x38,0xc2] +// VI: s_buffer_load_dword ttmp1, ttmp[4:7], ttmp4 ; encoding: [0x7a,0x1c,0x20,0xc0,0x74,0x00,0x00,0x00] + +s_buffer_load_dwordx4 [ttmp8,ttmp9,ttmp10,ttmp11], [ttmp4,ttmp5,ttmp6,ttmp7], ttmp4 +// SICI: s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 ; encoding: [0x74,0x74,0xbc,0xc2] +// VI: s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 ; encoding: [0x3a,0x1e,0x28,0xc0,0x74,0x00,0x00,0x00] + +s_buffer_load_dwordx4 [ttmp[8],ttmp[8+1],ttmp[5*2],ttmp[(3+2)*2+1]], ttmp[45/11:(33+45)/11], ttmp4 +// SICI: s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 ; encoding: [0x74,0x74,0xbc,0xc2] +// VI: s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 ; encoding: [0x3a,0x1e,0x28,0xc0,0x74,0x00,0x00,0x00] + +s_buffer_load_dwordx4 ttmp[7+1:(3+2)*2+1], [ttmp[45/11],ttmp[5],ttmp6,ttmp[(33+45)/11]], ttmp4 +// SICI: s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 ; encoding: [0x74,0x74,0xbc,0xc2] +// VI: s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 ; encoding: [0x3a,0x1e,0x28,0xc0,0x74,0x00,0x00,0x00] + +flat_load_dword v[8:8], v[2:3] +// VI: flat_load_dword v8, v[2:3] ; encoding: [0x00,0x00,0x50,0xdc,0x02,0x00,0x00,0x08] + +flat_load_dword v[63/8+1:65/8], v[2:3] +// VI: flat_load_dword v8, v[2:3] ; encoding: [0x00,0x00,0x50,0xdc,0x02,0x00,0x00,0x08] + +flat_load_dword v8, v[2*2-2:(3+7)/3] +// VI: flat_load_dword v8, v[2:3] ; encoding: [0x00,0x00,0x50,0xdc,0x02,0x00,0x00,0x08] + +flat_load_dword v[63/8+1], v[2:3] +// VI: flat_load_dword v8, v[2:3] ; encoding: [0x00,0x00,0x50,0xdc,0x02,0x00,0x00,0x08] + +flat_load_dwordx4 v[8:11], v[2*2-2:(3*3-6)] +// VI: flat_load_dwordx4 v[8:11], v[2:3] ; encoding: [0x00,0x00,0x5c,0xdc,0x02,0x00,0x00,0x08] + +flat_load_dwordx4 v[8/2+4:11/2+6], v[2:3] +// VI: flat_load_dwordx4 v[8:11], v[2:3] ; encoding: [0x00,0x00,0x5c,0xdc,0x02,0x00,0x00,0x08] + +flat_load_dwordx4 [v[8/2+4],v9,v[10],v[11/2+6]], v[2:3] +// VI: flat_load_dwordx4 v[8:11], v[2:3] ; encoding: [0x00,0x00,0x5c,0xdc,0x02,0x00,0x00,0x08] diff --git a/test/MC/AMDGPU/regression/bug28413.s b/test/MC/AMDGPU/regression/bug28413.s new file mode 100644 index 000000000000..d5b2ff90cd9f --- /dev/null +++ b/test/MC/AMDGPU/regression/bug28413.s @@ -0,0 +1,34 @@ +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SI --check-prefix=SICI +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SI --check-prefix=SICI +// RUN: llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SICI --check-prefix=CIVI +// RUN: llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=CIVI --check-prefix=VI + +v_cmp_eq_i32 vcc, 0.5, v0 +// SICI: v_cmp_eq_i32_e32 vcc, 0.5, v0 ; encoding: [0xf0,0x00,0x04,0x7d] +// VI: v_cmp_eq_i32_e32 vcc, 0.5, v0 ; encoding: [0xf0,0x00,0x84,0x7d] + +v_cmpx_eq_u32_e64 s[0:1], -4.0, s0 +// SICI: v_cmpx_eq_u32_e64 s[0:1], -4.0, s0 ; encoding: [0x00,0x00,0xa4,0xd1,0xf7,0x00,0x00,0x00] +// VI: v_cmpx_eq_u32_e64 s[0:1], -4.0, s0 ; encoding: [0x00,0x00,0xda,0xd0,0xf7,0x00,0x00,0x00] + +v_cmp_eq_i32 vcc, 3.125, v0 +// SICI: v_cmp_eq_i32_e32 vcc, 0x40480000, v0 ; encoding: [0xff,0x00,0x04,0x7d,0x00,0x00,0x48,0x40] +// VI: v_cmp_eq_i32_e32 vcc, 0x40480000, v0 ; encoding: [0xff,0x00,0x84,0x7d,0x00,0x00,0x48,0x40] + +v_cmpx_eq_u32 vcc, 3.125, v0 +// SICI: v_cmpx_eq_u32_e32 vcc, 0x40480000, v0 ; encoding: [0xff,0x00,0xa4,0x7d,0x00,0x00,0x48,0x40] +// VI: v_cmpx_eq_u32_e32 vcc, 0x40480000, v0 ; encoding: [0xff,0x00,0xb4,0x7d,0x00,0x00,0x48,0x40] + +v_mov_b32 v0, 0.5 +// GCN: v_mov_b32_e32 v0, 0.5 ; encoding: [0xf0,0x02,0x00,0x7e] + +v_mov_b32 v0, 3.125 +// GCN: v_mov_b32_e32 v0, 0x40480000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x00,0x48,0x40] + +v_add_i32 v0, vcc, 0.5, v0 +// SICI: v_add_i32_e32 v0, vcc, 0.5, v0 ; encoding: [0xf0,0x00,0x00,0x4a] +// VI: v_add_i32_e32 v0, vcc, 0.5, v0 ; encoding: [0xf0,0x00,0x00,0x32] + +v_add_i32 v0, vcc, 3.125, v0 +// SICI: v_add_i32_e32 v0, vcc, 0x40480000, v0 ; encoding: [0xff,0x00,0x00,0x4a,0x00,0x00,0x48,0x40] +// VI: v_add_i32_e32 v0, vcc, 0x40480000, v0 ; encoding: [0xff,0x00,0x00,0x32,0x00,0x00,0x48,0x40]
\ No newline at end of file diff --git a/test/MC/AMDGPU/regression/bug28538.s b/test/MC/AMDGPU/regression/bug28538.s new file mode 100644 index 000000000000..82b2d27331f1 --- /dev/null +++ b/test/MC/AMDGPU/regression/bug28538.s @@ -0,0 +1,12 @@ +// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOCIVI --check-prefix=NOVI +// RUN: not llvm-mc -arch=amdgcn -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSI --check-prefix=NOSICI +// RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSI --check-prefix=NOSICI +// RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSICI + +// NOSICI: error: +// NOVI: error: failed parsing operand +v_mov_b32 v0, v0 row_bcast:0 + +// NOSICI: error: +// NOVI: error: failed parsing operand +v_mov_b32 v0, v0 row_bcast:13 diff --git a/test/MC/AMDGPU/regression/lit.local.cfg b/test/MC/AMDGPU/regression/lit.local.cfg new file mode 100644 index 000000000000..2a665f06be72 --- /dev/null +++ b/test/MC/AMDGPU/regression/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'AMDGPU' in config.root.targets: + config.unsupported = True diff --git a/test/MC/AMDGPU/reloc.s b/test/MC/AMDGPU/reloc.s new file mode 100644 index 000000000000..14b0e04949c9 --- /dev/null +++ b/test/MC/AMDGPU/reloc.s @@ -0,0 +1,16 @@ +// RUN: llvm-mc -filetype=obj -triple amdgcn-- -mcpu=kaveri -show-encoding %s | llvm-readobj -relocations | FileCheck %s + +// CHECK: Relocations [ +// CHECK: R_AMDGPU_ABS32_LO SCRATCH_RSRC_DWORD0 0x0 +// CHECK: R_AMDGPU_ABS32_HI SCRATCH_RSRC_DWORD1 0x0 +// CHECK: R_AMDGPU_GOTPCREL global_var 0x0 +// CHECK: ] + +kernel: + s_mov_b32 s0, SCRATCH_RSRC_DWORD0 + s_mov_b32 s1, SCRATCH_RSRC_DWORD1 + s_mov_b32 s2, global_var@GOTPCREL + +.globl global_var + +.globl SCRATCH_RSRC_DWORD0 diff --git a/test/MC/AMDGPU/smem.s b/test/MC/AMDGPU/smem.s index 8fa964ca8d1e..ab2dcf4b8a15 100644 --- a/test/MC/AMDGPU/smem.s +++ b/test/MC/AMDGPU/smem.s @@ -3,9 +3,13 @@ // RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire %s 2>&1 | FileCheck -check-prefix=NOSI %s s_dcache_wb -; VI: s_dcache_wb ; encoding: [0x00,0x00,0x84,0xc0,0x00,0x00,0x00,0x00] -; NOSI: error: instruction not supported on this GPU +// VI: s_dcache_wb ; encoding: [0x00,0x00,0x84,0xc0,0x00,0x00,0x00,0x00] +// NOSI: error: instruction not supported on this GPU s_dcache_wb_vol -; VI: s_dcache_wb_vol ; encoding: [0x00,0x00,0x8c,0xc0,0x00,0x00,0x00,0x00] -; NOSI: error: instruction not supported on this GPU +// VI: s_dcache_wb_vol ; encoding: [0x00,0x00,0x8c,0xc0,0x00,0x00,0x00,0x00] +// NOSI: error: instruction not supported on this GPU + +s_memrealtime s[4:5] +// VI: s_memrealtime s[4:5] ; encoding: [0x00,0x01,0x94,0xc0,0x00,0x00,0x00,0x00] +// NOSI: error: instruction not supported on this GPU diff --git a/test/MC/AMDGPU/smrd-err.s b/test/MC/AMDGPU/smrd-err.s index a607e91756da..0f991e4aefe7 100644 --- a/test/MC/AMDGPU/smrd-err.s +++ b/test/MC/AMDGPU/smrd-err.s @@ -2,14 +2,14 @@ // RUN: not llvm-mc -arch=amdgcn -mcpu=tonga %s 2>&1 | FileCheck -check-prefix=GCN -check-prefix=VI %s s_load_dwordx4 s[100:103], s[2:3], s4 -// VI: error: invalid operand for instruction +// VI: error: not a valid operand // SI: s_load_dwordx4 s[100:103], s[2:3], s4 s_load_dwordx8 s[96:103], s[2:3], s4 -// VI: error: invalid operand for instruction +// VI: error: not a valid operand // SI: s_load_dwordx8 s[96:103], s[2:3], s4 s_load_dwordx16 s[88:103], s[2:3], s4 -// VI: error: invalid operand for instruction +// VI: error: not a valid operand // SI: s_load_dwordx16 s[88:103], s[2:3], s4 diff --git a/test/MC/AMDGPU/smrd.s b/test/MC/AMDGPU/smrd.s index 56841914c6f0..ac3ce26db98c 100644 --- a/test/MC/AMDGPU/smrd.s +++ b/test/MC/AMDGPU/smrd.s @@ -1,21 +1,27 @@ // RUN: not llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SI %s // RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SI %s // RUN: llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=CI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck --check-prefix=VI %s // RUN: not llvm-mc -arch=amdgcn %s 2>&1 | FileCheck %s --check-prefix=NOSI // RUN: not llvm-mc -arch=amdgcn -mcpu=SI %s 2>&1 | FileCheck %s --check-prefix=NOSI +// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji %s 2>&1 | FileCheck %s --check-prefix=NOVI + //===----------------------------------------------------------------------===// // Offset Handling //===----------------------------------------------------------------------===// s_load_dword s1, s[2:3], 0xfc // GCN: s_load_dword s1, s[2:3], 0xfc ; encoding: [0xfc,0x83,0x00,0xc0] +// VI: s_load_dword s1, s[2:3], 0xfc ; encoding: [0x41,0x00,0x02,0xc0,0xfc,0x00,0x00,0x00] s_load_dword s1, s[2:3], 0xff // GCN: s_load_dword s1, s[2:3], 0xff ; encoding: [0xff,0x83,0x00,0xc0] +// VI: s_load_dword s1, s[2:3], 0xff ; encoding: [0x41,0x00,0x02,0xc0,0xff,0x00,0x00,0x00] s_load_dword s1, s[2:3], 0x100 // NOSI: error: instruction not supported on this GPU +// NOVI: error: instruction not supported on this GPU // CI: s_load_dword s1, s[2:3], 0x100 ; encoding: [0xff,0x82,0x00,0xc0,0x00,0x01,0x00,0x00] //===----------------------------------------------------------------------===// @@ -24,46 +30,129 @@ s_load_dword s1, s[2:3], 0x100 s_load_dword s1, s[2:3], 1 // GCN: s_load_dword s1, s[2:3], 0x1 ; encoding: [0x01,0x83,0x00,0xc0] +// VI: s_load_dword s1, s[2:3], 0x1 ; encoding: [0x41,0x00,0x02,0xc0,0x01,0x00,0x00,0x00] s_load_dword s1, s[2:3], s4 // GCN: s_load_dword s1, s[2:3], s4 ; encoding: [0x04,0x82,0x00,0xc0] +// VI: s_load_dword s1, s[2:3], s4 ; encoding: [0x41,0x00,0x00,0xc0,0x04,0x00,0x00,0x00] s_load_dwordx2 s[2:3], s[2:3], 1 // GCN: s_load_dwordx2 s[2:3], s[2:3], 0x1 ; encoding: [0x01,0x03,0x41,0xc0] +// VI: s_load_dwordx2 s[2:3], s[2:3], 0x1 ; encoding: [0x81,0x00,0x06,0xc0,0x01,0x00,0x00,0x00] s_load_dwordx2 s[2:3], s[2:3], s4 // GCN: s_load_dwordx2 s[2:3], s[2:3], s4 ; encoding: [0x04,0x02,0x41,0xc0] +// VI: s_load_dwordx2 s[2:3], s[2:3], s4 ; encoding: [0x81,0x00,0x04,0xc0,0x04,0x00,0x00,0x00] s_load_dwordx4 s[4:7], s[2:3], 1 // GCN: s_load_dwordx4 s[4:7], s[2:3], 0x1 ; encoding: [0x01,0x03,0x82,0xc0] +// VI: s_load_dwordx4 s[4:7], s[2:3], 0x1 ; encoding: [0x01,0x01,0x0a,0xc0,0x01,0x00,0x00,0x00] s_load_dwordx4 s[4:7], s[2:3], s4 // GCN: s_load_dwordx4 s[4:7], s[2:3], s4 ; encoding: [0x04,0x02,0x82,0xc0] +// VI: s_load_dwordx4 s[4:7], s[2:3], s4 ; encoding: [0x01,0x01,0x08,0xc0,0x04,0x00,0x00,0x00] + +s_load_dwordx4 ttmp[4:7], ttmp[2:3], ttmp4 +// GCN: s_load_dwordx4 ttmp[4:7], ttmp[2:3], ttmp4 ; encoding: [0x74,0x72,0xba,0xc0] +// VI: s_load_dwordx4 ttmp[4:7], ttmp[2:3], ttmp4 ; encoding: [0x39,0x1d,0x08,0xc0,0x74,0x00,0x00,0x00] s_load_dwordx4 s[100:103], s[2:3], s4 // GCN: s_load_dwordx4 s[100:103], s[2:3], s4 ; encoding: [0x04,0x02,0xb2,0xc0] +// NOVI: error: not a valid operand s_load_dwordx8 s[8:15], s[2:3], 1 // GCN: s_load_dwordx8 s[8:15], s[2:3], 0x1 ; encoding: [0x01,0x03,0xc4,0xc0] +// VI: s_load_dwordx8 s[8:15], s[2:3], 0x1 ; encoding: [0x01,0x02,0x0e,0xc0,0x01,0x00,0x00,0x00] s_load_dwordx8 s[8:15], s[2:3], s4 // GCN: s_load_dwordx8 s[8:15], s[2:3], s4 ; encoding: [0x04,0x02,0xc4,0xc0] +// VI: s_load_dwordx8 s[8:15], s[2:3], s4 ; encoding: [0x01,0x02,0x0c,0xc0,0x04,0x00,0x00,0x00] s_load_dwordx8 s[96:103], s[2:3], s4 // GCN: s_load_dwordx8 s[96:103], s[2:3], s4 ; encoding: [0x04,0x02,0xf0,0xc0] +// NOVI: error: not a valid operand s_load_dwordx16 s[16:31], s[2:3], 1 // GCN: s_load_dwordx16 s[16:31], s[2:3], 0x1 ; encoding: [0x01,0x03,0x08,0xc1] +// VI: s_load_dwordx16 s[16:31], s[2:3], 0x1 ; encoding: [0x01,0x04,0x12,0xc0,0x01,0x00,0x00,0x00] s_load_dwordx16 s[16:31], s[2:3], s4 // GCN: s_load_dwordx16 s[16:31], s[2:3], s4 ; encoding: [0x04,0x02,0x08,0xc1] +// VI: s_load_dwordx16 s[16:31], s[2:3], s4 ; encoding: [0x01,0x04,0x10,0xc0,0x04,0x00,0x00,0x00] s_load_dwordx16 s[88:103], s[2:3], s4 // GCN: s_load_dwordx16 s[88:103], s[2:3], s4 ; encoding: [0x04,0x02,0x2c,0xc1] +// NOVI: error: not a valid operand + +s_buffer_load_dword s1, s[4:7], 1 +// GCN: s_buffer_load_dword s1, s[4:7], 0x1 ; encoding: [0x01,0x85,0x00,0xc2] +// VI: s_buffer_load_dword s1, s[4:7], 0x1 ; encoding: [0x42,0x00,0x22,0xc0,0x01,0x00,0x00,0x00] + +s_buffer_load_dword s1, s[4:7], s4 +// GCN: s_buffer_load_dword s1, s[4:7], s4 ; encoding: [0x04,0x84,0x00,0xc2] +// VI: s_buffer_load_dword s1, s[4:7], s4 ; encoding: [0x42,0x00,0x20,0xc0,0x04,0x00,0x00,0x00] + +s_buffer_load_dword ttmp1, ttmp[4:7], ttmp4 +// GCN: s_buffer_load_dword ttmp1, ttmp[4:7], ttmp4 ; encoding: [0x74,0xf4,0x38,0xc2] +// VI: s_buffer_load_dword ttmp1, ttmp[4:7], ttmp4 ; encoding: [0x7a,0x1c,0x20,0xc0,0x74,0x00,0x00,0x00] + +s_buffer_load_dwordx2 s[8:9], s[4:7], 1 +// GCN: s_buffer_load_dwordx2 s[8:9], s[4:7], 0x1 ; encoding: [0x01,0x05,0x44,0xc2] +// VI: s_buffer_load_dwordx2 s[8:9], s[4:7], 0x1 ; encoding: [0x02,0x02,0x26,0xc0,0x01,0x00,0x00,0x00] + +s_buffer_load_dwordx2 s[8:9], s[4:7], s4 +// GCN: s_buffer_load_dwordx2 s[8:9], s[4:7], s4 ; encoding: [0x04,0x04,0x44,0xc2] +// VI: s_buffer_load_dwordx2 s[8:9], s[4:7], s4 ; encoding: [0x02,0x02,0x24,0xc0,0x04,0x00,0x00,0x00] + +s_buffer_load_dwordx4 s[8:11], s[4:7], 1 +// GCN: s_buffer_load_dwordx4 s[8:11], s[4:7], 0x1 ; encoding: [0x01,0x05,0x84,0xc2] +// VI: s_buffer_load_dwordx4 s[8:11], s[4:7], 0x1 ; encoding: [0x02,0x02,0x2a,0xc0,0x01,0x00,0x00,0x00] + +s_buffer_load_dwordx4 s[8:11], s[4:7], s4 +// GCN: s_buffer_load_dwordx4 s[8:11], s[4:7], s4 ; encoding: [0x04,0x04,0x84,0xc2] +// VI: s_buffer_load_dwordx4 s[8:11], s[4:7], s4 ; encoding: [0x02,0x02,0x28,0xc0,0x04,0x00,0x00,0x00] + +s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 +// GCN: s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 ; encoding: [0x74,0x74,0xbc,0xc2] +// VI: s_buffer_load_dwordx4 ttmp[8:11], ttmp[4:7], ttmp4 ; encoding: [0x3a,0x1e,0x28,0xc0,0x74,0x00,0x00,0x00] + +s_buffer_load_dwordx4 s[100:103], s[4:7], s4 +// GCN: s_buffer_load_dwordx4 s[100:103], s[4:7], s4 ; encoding: [0x04,0x04,0xb2,0xc2] +// NOVI: error: not a valid operand + +s_buffer_load_dwordx8 s[8:15], s[4:7], 1 +// GCN: s_buffer_load_dwordx8 s[8:15], s[4:7], 0x1 ; encoding: [0x01,0x05,0xc4,0xc2] +// VI: s_buffer_load_dwordx8 s[8:15], s[4:7], 0x1 ; encoding: [0x02,0x02,0x2e,0xc0,0x01,0x00,0x00,0x00] + +s_buffer_load_dwordx8 s[8:15], s[4:7], s4 +// GCN: s_buffer_load_dwordx8 s[8:15], s[4:7], s4 ; encoding: [0x04,0x04,0xc4,0xc2] +// VI: s_buffer_load_dwordx8 s[8:15], s[4:7], s4 ; encoding: [0x02,0x02,0x2c,0xc0,0x04,0x00,0x00,0x00] + +s_buffer_load_dwordx8 s[96:103], s[4:7], s4 +// GCN: s_buffer_load_dwordx8 s[96:103], s[4:7], s4 ; encoding: [0x04,0x04,0xf0,0xc2] +// NOVI: error: not a valid operand + +s_buffer_load_dwordx16 s[16:31], s[4:7], 1 +// GCN: s_buffer_load_dwordx16 s[16:31], s[4:7], 0x1 ; encoding: [0x01,0x05,0x08,0xc3] +// VI: s_buffer_load_dwordx16 s[16:31], s[4:7], 0x1 ; encoding: [0x02,0x04,0x32,0xc0,0x01,0x00,0x00,0x00] + +s_buffer_load_dwordx16 s[16:31], s[4:7], s4 +// GCN: s_buffer_load_dwordx16 s[16:31], s[4:7], s4 ; encoding: [0x04,0x04,0x08,0xc3] +// VI: s_buffer_load_dwordx16 s[16:31], s[4:7], s4 ; encoding: [0x02,0x04,0x30,0xc0,0x04,0x00,0x00,0x00] + +s_buffer_load_dwordx16 s[88:103], s[4:7], s4 +// GCN: s_buffer_load_dwordx16 s[88:103], s[4:7], s4 ; encoding: [0x04,0x04,0x2c,0xc3] +// NOVI: error: not a valid operand s_dcache_inv // GCN: s_dcache_inv ; encoding: [0x00,0x00,0xc0,0xc7] +// VI: s_dcache_inv ; encoding: [0x00,0x00,0x80,0xc0,0x00,0x00,0x00,0x00] s_dcache_inv_vol // CI: s_dcache_inv_vol ; encoding: [0x00,0x00,0x40,0xc7] // NOSI: error: instruction not supported on this GPU +// VI: s_dcache_inv_vol ; encoding: [0x00,0x00,0x88,0xc0,0x00,0x00,0x00,0x00] + +s_memtime s[4:5] +// GCN: s_memtime s[4:5] ; encoding: [0x00,0x00,0x82,0xc7] +// VI: s_memtime s[4:5] ; encoding: [0x00,0x01,0x90,0xc0,0x00,0x00,0x00,0x00] diff --git a/test/MC/AMDGPU/sop1-err.s b/test/MC/AMDGPU/sop1-err.s index ee1d383c4469..4329451a650e 100644 --- a/test/MC/AMDGPU/sop1-err.s +++ b/test/MC/AMDGPU/sop1-err.s @@ -9,16 +9,16 @@ s_mov_b32 s1, v0 // GCN: error: invalid operand for instruction s_mov_b32 s[1:2], s0 -// GCN: error: invalid operand for instruction +// GCN: error: not a valid operand s_mov_b32 s0, s[1:2] -// GCN: error: invalid operand for instruction +// GCN: error: not a valid operand s_mov_b32 s220, s0 -// GCN: error: invalid operand for instruction +// GCN: error: not a valid operand s_mov_b32 s0, s220 -// GCN: error: invalid operand for instruction +// GCN: error: not a valid operand s_mov_b64 s1, s[0:1] // GCN: error: invalid operand for instruction @@ -34,28 +34,22 @@ s_mov_b32 s1, 0xfffffffff s_mov_b64 s[0:1], 0xfffffffff // GCN: error: invalid immediate: only 32-bit values are legal -s_mov_b64 s[0:1], 0xfffffffff -// GCN: error: invalid immediate: only 32-bit values are legal - -s_mov_b64 s[0:1], 0xfffffffff -// GCN: error: invalid immediate: only 32-bit values are legal - s_mov_b64 s[0:1], 0x0000000200000000 // GCN: error: invalid immediate: only 32-bit values are legal // FIXME: This shoudl probably say failed to parse. s_mov_b32 s -// GCN: error: invalid operand for instruction +// GCN: error: not a valid operand // Out of range register s_mov_b32 s102, 1 -// VI: error: invalid operand for instruction -// SI-NOT: error +// VI: error: not a valid operand +// SI: s_mov_b32 s102, 1 s_mov_b32 s103, 1 -// VI: error: invalid operand for instruction -// SI-NOT: error +// VI: error: not a valid operand +// SI: s_mov_b32 s103, 1 s_mov_b64 s[102:103], -1 -// VI: error: invalid operand for instruction -// SI-NOT: error +// VI: error: not a valid operand +// SI: s_mov_b64 s[102:103], -1 diff --git a/test/MC/AMDGPU/sop1.s b/test/MC/AMDGPU/sop1.s index 5f63f9930747..c0985f144c97 100644 --- a/test/MC/AMDGPU/sop1.s +++ b/test/MC/AMDGPU/sop1.s @@ -1,194 +1,244 @@ -// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s -// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s 2>&1 | FileCheck --check-prefix=GCN --check-prefix=VI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s 2>&1 | FileCheck --check-prefix=NOVI %s s_mov_b32 s1, s2 -// CHECK: s_mov_b32 s1, s2 ; encoding: [0x02,0x03,0x81,0xbe] +// SICI: s_mov_b32 s1, s2 ; encoding: [0x02,0x03,0x81,0xbe] +// VI: s_mov_b32 s1, s2 ; encoding: [0x02,0x00,0x81,0xbe] s_mov_b32 s1, 1 -// CHECK: s_mov_b32 s1, 1 ; encoding: [0x81,0x03,0x81,0xbe] +// SICI: s_mov_b32 s1, 1 ; encoding: [0x81,0x03,0x81,0xbe] +// VI: s_mov_b32 s1, 1 ; encoding: [0x81,0x00,0x81,0xbe] s_mov_b32 s1, 100 -// CHECK: s_mov_b32 s1, 0x64 ; encoding: [0xff,0x03,0x81,0xbe,0x64,0x00,0x00,0x00] +// SICI: s_mov_b32 s1, 0x64 ; encoding: [0xff,0x03,0x81,0xbe,0x64,0x00,0x00,0x00] +// VI: s_mov_b32 s1, 0x64 ; encoding: [0xff,0x00,0x81,0xbe,0x64,0x00,0x00,0x00] // Literal constant sign bit s_mov_b32 s1, 0x80000000 -// CHECK: s_mov_b32 s1, 0x80000000 ; encoding: [0xff,0x03,0x81,0xbe,0x00,0x00,0x00,0x80] +// SICI: s_mov_b32 s1, 0x80000000 ; encoding: [0xff,0x03,0x81,0xbe,0x00,0x00,0x00,0x80] +// VI: s_mov_b32 s1, 0x80000000 ; encoding: [0xff,0x00,0x81,0xbe,0x00,0x00,0x00,0x80] // Negative 32-bit constant s_mov_b32 s0, 0xfe5163ab -// CHECK: s_mov_b32 s0, 0xfe5163ab ; encoding: [0xff,0x03,0x80,0xbe,0xab,0x63,0x51,0xfe] +// SICI: s_mov_b32 s0, 0xfe5163ab ; encoding: [0xff,0x03,0x80,0xbe,0xab,0x63,0x51,0xfe] +// VI: s_mov_b32 s0, 0xfe5163ab ; encoding: [0xff,0x00,0x80,0xbe,0xab,0x63,0x51,0xfe] s_mov_b64 s[2:3], s[4:5] -// CHECK: s_mov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x04,0x82,0xbe] +// SICI: s_mov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x04,0x82,0xbe] +// VI: s_mov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x01,0x82,0xbe] s_mov_b64 s[2:3], 0xffffffffffffffff -// CHECK: s_mov_b64 s[2:3], -1 ; encoding: [0xc1,0x04,0x82,0xbe] +// SICI: s_mov_b64 s[2:3], -1 ; encoding: [0xc1,0x04,0x82,0xbe] +// VI: s_mov_b64 s[2:3], -1 ; encoding: [0xc1,0x01,0x82,0xbe] s_mov_b64 s[2:3], 0xffffffff -// CHECK: s_mov_b64 s[2:3], 0xffffffff ; encoding: [0xff,0x04,0x82,0xbe,0xff,0xff,0xff,0xff] +// SICI: s_mov_b64 s[2:3], 0xffffffff ; encoding: [0xff,0x04,0x82,0xbe,0xff,0xff,0xff,0xff] +// VI: s_mov_b64 s[2:3], 0xffffffff ; encoding: [0xff,0x01,0x82,0xbe,0xff,0xff,0xff,0xff] s_mov_b64 s[0:1], 0x80000000 -// CHECK: s_mov_b64 s[0:1], 0x80000000 ; encoding: [0xff,0x04,0x80,0xbe,0x00,0x00,0x00,0x80] +// SICI: s_mov_b64 s[0:1], 0x80000000 ; encoding: [0xff,0x04,0x80,0xbe,0x00,0x00,0x00,0x80] +// VI: s_mov_b64 s[0:1], 0x80000000 ; encoding: [0xff,0x01,0x80,0xbe,0x00,0x00,0x00,0x80] s_mov_b64 s[102:103], -1 -// CHECK: s_mov_b64 s[102:103], -1 ; encoding: [0xc1,0x04,0xe6,0xbe] +// SICI: s_mov_b64 s[102:103], -1 ; encoding: [0xc1,0x04,0xe6,0xbe] +// NOVI: error: not a valid operand s_cmov_b32 s1, 200 -// CHECK: s_cmov_b32 s1, 0xc8 ; encoding: [0xff,0x05,0x81,0xbe,0xc8,0x00,0x00,0x00] +// SICI: s_cmov_b32 s1, 0xc8 ; encoding: [0xff,0x05,0x81,0xbe,0xc8,0x00,0x00,0x00] +// VI: s_cmov_b32 s1, 0xc8 ; encoding: [0xff,0x02,0x81,0xbe,0xc8,0x00,0x00,0x00] s_cmov_b32 s1, 1.0 -// CHECK: s_cmov_b32 s1, 1.0 ; encoding: [0xf2,0x05,0x81,0xbe] - -//s_cmov_b64 s[2:3], 1.0 -//CHECK-FIXME: s_cmov_b64 s[2:3], 1.0 ; encoding: [0xf2,0x05,0x82,0xb3] - -//===----------------------------------------------------------------------===// -// Instructions -//===----------------------------------------------------------------------===// - -s_mov_b32 s1, s2 -// CHECK: s_mov_b32 s1, s2 ; encoding: [0x02,0x03,0x81,0xbe] - -s_mov_b64 s[2:3], s[4:5] -// CHECK: s_mov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x04,0x82,0xbe] +// SICI: s_cmov_b32 s1, 1.0 ; encoding: [0xf2,0x05,0x81,0xbe] +// VI: s_cmov_b32 s1, 1.0 ; encoding: [0xf2,0x02,0x81,0xbe] s_cmov_b32 s1, s2 -// CHECK: s_cmov_b32 s1, s2 ; encoding: [0x02,0x05,0x81,0xbe] +// SICI: s_cmov_b32 s1, s2 ; encoding: [0x02,0x05,0x81,0xbe] +// VI: s_cmov_b32 s1, s2 ; encoding: [0x02,0x02,0x81,0xbe] + +//s_cmov_b64 s[2:3], 1.0 +//GCN-FIXME: s_cmov_b64 s[2:3], 1.0 ; encoding: [0xf2,0x05,0x82,0xb3] s_cmov_b64 s[2:3], s[4:5] -// CHECK: s_cmov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x06,0x82,0xbe] +// SICI: s_cmov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x06,0x82,0xbe] +// VI: s_cmov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x03,0x82,0xbe] s_not_b32 s1, s2 -// CHECK: s_not_b32 s1, s2 ; encoding: [0x02,0x07,0x81,0xbe] +// SICI: s_not_b32 s1, s2 ; encoding: [0x02,0x07,0x81,0xbe] +// VI: s_not_b32 s1, s2 ; encoding: [0x02,0x04,0x81,0xbe] s_not_b64 s[2:3], s[4:5] -// CHECK: s_not_b64 s[2:3], s[4:5] ; encoding: [0x04,0x08,0x82,0xbe] +// SICI: s_not_b64 s[2:3], s[4:5] ; encoding: [0x04,0x08,0x82,0xbe] +// VI: s_not_b64 s[2:3], s[4:5] ; encoding: [0x04,0x05,0x82,0xbe] s_wqm_b32 s1, s2 -// CHECK: s_wqm_b32 s1, s2 ; encoding: [0x02,0x09,0x81,0xbe] +// SICI: s_wqm_b32 s1, s2 ; encoding: [0x02,0x09,0x81,0xbe] +// VI: s_wqm_b32 s1, s2 ; encoding: [0x02,0x06,0x81,0xbe] s_wqm_b64 s[2:3], s[4:5] -// CHECK: s_wqm_b64 s[2:3], s[4:5] ; encoding: [0x04,0x0a,0x82,0xbe] +// SICI: s_wqm_b64 s[2:3], s[4:5] ; encoding: [0x04,0x0a,0x82,0xbe] +// VI: s_wqm_b64 s[2:3], s[4:5] ; encoding: [0x04,0x07,0x82,0xbe] s_brev_b32 s1, s2 -// CHECK: s_brev_b32 s1, s2 ; encoding: [0x02,0x0b,0x81,0xbe] +// SICI: s_brev_b32 s1, s2 ; encoding: [0x02,0x0b,0x81,0xbe] +// VI: s_brev_b32 s1, s2 ; encoding: [0x02,0x08,0x81,0xbe] s_brev_b64 s[2:3], s[4:5] -// CHECK: s_brev_b64 s[2:3], s[4:5] ; encoding: [0x04,0x0c,0x82,0xbe] +// SICI: s_brev_b64 s[2:3], s[4:5] ; encoding: [0x04,0x0c,0x82,0xbe] +// VI: s_brev_b64 s[2:3], s[4:5] ; encoding: [0x04,0x09,0x82,0xbe] s_bcnt0_i32_b32 s1, s2 -// CHECK: s_bcnt0_i32_b32 s1, s2 ; encoding: [0x02,0x0d,0x81,0xbe] +// SICI: s_bcnt0_i32_b32 s1, s2 ; encoding: [0x02,0x0d,0x81,0xbe] +// VI: s_bcnt0_i32_b32 s1, s2 ; encoding: [0x02,0x0a,0x81,0xbe] s_bcnt0_i32_b64 s1, s[2:3] -// CHECK: s_bcnt0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0e,0x81,0xbe] +// SICI: s_bcnt0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0e,0x81,0xbe] +// VI: s_bcnt0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0b,0x81,0xbe] s_bcnt1_i32_b32 s1, s2 -// CHECK: s_bcnt1_i32_b32 s1, s2 ; encoding: [0x02,0x0f,0x81,0xbe] +// SICI: s_bcnt1_i32_b32 s1, s2 ; encoding: [0x02,0x0f,0x81,0xbe] +// VI: s_bcnt1_i32_b32 s1, s2 ; encoding: [0x02,0x0c,0x81,0xbe] s_bcnt1_i32_b64 s1, s[2:3] -// CHECK: s_bcnt1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x10,0x81,0xbe] +// SICI: s_bcnt1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x10,0x81,0xbe] +// VI: s_bcnt1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0d,0x81,0xbe] s_ff0_i32_b32 s1, s2 -// CHECK: s_ff0_i32_b32 s1, s2 ; encoding: [0x02,0x11,0x81,0xbe] +// SICI: s_ff0_i32_b32 s1, s2 ; encoding: [0x02,0x11,0x81,0xbe] +// VI: s_ff0_i32_b32 s1, s2 ; encoding: [0x02,0x0e,0x81,0xbe] s_ff0_i32_b64 s1, s[2:3] -// CHECK: s_ff0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x12,0x81,0xbe] +// SICI: s_ff0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x12,0x81,0xbe] +// VI: s_ff0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0f,0x81,0xbe] s_ff1_i32_b32 s1, s2 -// CHECK: s_ff1_i32_b32 s1, s2 ; encoding: [0x02,0x13,0x81,0xbe] +// SICI: s_ff1_i32_b32 s1, s2 ; encoding: [0x02,0x13,0x81,0xbe] +// VI: s_ff1_i32_b32 s1, s2 ; encoding: [0x02,0x10,0x81,0xbe] s_ff1_i32_b64 s1, s[2:3] -// CHECK: s_ff1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x14,0x81,0xbe] +// SICI: s_ff1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x14,0x81,0xbe] +// VI: s_ff1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x11,0x81,0xbe] s_flbit_i32_b32 s1, s2 -// CHECK: s_flbit_i32_b32 s1, s2 ; encoding: [0x02,0x15,0x81,0xbe] +// SICI: s_flbit_i32_b32 s1, s2 ; encoding: [0x02,0x15,0x81,0xbe] +// VI: s_flbit_i32_b32 s1, s2 ; encoding: [0x02,0x12,0x81,0xbe] s_flbit_i32_b64 s1, s[2:3] -// CHECK: s_flbit_i32_b64 s1, s[2:3] ; encoding: [0x02,0x16,0x81,0xbe] +// SICI: s_flbit_i32_b64 s1, s[2:3] ; encoding: [0x02,0x16,0x81,0xbe] +// VI: s_flbit_i32_b64 s1, s[2:3] ; encoding: [0x02,0x13,0x81,0xbe] s_flbit_i32 s1, s2 -// CHECK: s_flbit_i32 s1, s2 ; encoding: [0x02,0x17,0x81,0xbe] +// SICI: s_flbit_i32 s1, s2 ; encoding: [0x02,0x17,0x81,0xbe] +// VI: s_flbit_i32 s1, s2 ; encoding: [0x02,0x14,0x81,0xbe] s_flbit_i32_i64 s1, s[2:3] -// CHECK: s_flbit_i32_i64 s1, s[2:3] ; encoding: [0x02,0x18,0x81,0xbe] +// SICI: s_flbit_i32_i64 s1, s[2:3] ; encoding: [0x02,0x18,0x81,0xbe] +// VI: s_flbit_i32_i64 s1, s[2:3] ; encoding: [0x02,0x15,0x81,0xbe] s_sext_i32_i8 s1, s2 -// CHECK: s_sext_i32_i8 s1, s2 ; encoding: [0x02,0x19,0x81,0xbe] +// SICI: s_sext_i32_i8 s1, s2 ; encoding: [0x02,0x19,0x81,0xbe] +// VI: s_sext_i32_i8 s1, s2 ; encoding: [0x02,0x16,0x81,0xbe] s_sext_i32_i16 s1, s2 -// CHECK: s_sext_i32_i16 s1, s2 ; encoding: [0x02,0x1a,0x81,0xbe] +// SICI: s_sext_i32_i16 s1, s2 ; encoding: [0x02,0x1a,0x81,0xbe] +// VI: s_sext_i32_i16 s1, s2 ; encoding: [0x02,0x17,0x81,0xbe] s_bitset0_b32 s1, s2 -// CHECK: s_bitset0_b32 s1, s2 ; encoding: [0x02,0x1b,0x81,0xbe] +// SICI: s_bitset0_b32 s1, s2 ; encoding: [0x02,0x1b,0x81,0xbe] +// VI: s_bitset0_b32 s1, s2 ; encoding: [0x02,0x18,0x81,0xbe] -s_bitset0_b64 s[2:3], s[4:5] -// CHECK: s_bitset0_b64 s[2:3], s[4:5] ; encoding: [0x04,0x1c,0x82,0xbe] +s_bitset0_b64 s[2:3], s4 +// SICI: s_bitset0_b64 s[2:3], s4 ; encoding: [0x04,0x1c,0x82,0xbe] +// VI: s_bitset0_b64 s[2:3], s4 ; encoding: [0x04,0x19,0x82,0xbe] s_bitset1_b32 s1, s2 -// CHECK: s_bitset1_b32 s1, s2 ; encoding: [0x02,0x1d,0x81,0xbe] +// SICI: s_bitset1_b32 s1, s2 ; encoding: [0x02,0x1d,0x81,0xbe] +// VI: s_bitset1_b32 s1, s2 ; encoding: [0x02,0x1a,0x81,0xbe] -s_bitset1_b64 s[2:3], s[4:5] -// CHECK: s_bitset1_b64 s[2:3], s[4:5] ; encoding: [0x04,0x1e,0x82,0xbe] +s_bitset1_b64 s[2:3], s4 +// SICI: s_bitset1_b64 s[2:3], s4 ; encoding: [0x04,0x1e,0x82,0xbe] +// VI: s_bitset1_b64 s[2:3], s4 ; encoding: [0x04,0x1b,0x82,0xbe] s_getpc_b64 s[2:3] -// CHECK: s_getpc_b64 s[2:3] ; encoding: [0x00,0x1f,0x82,0xbe] +// SICI: s_getpc_b64 s[2:3] ; encoding: [0x00,0x1f,0x82,0xbe] +// VI: s_getpc_b64 s[2:3] ; encoding: [0x00,0x1c,0x82,0xbe] -s_setpc_b64 s[2:3], s[4:5] -// CHECK: s_setpc_b64 s[2:3], s[4:5] ; encoding: [0x04,0x20,0x82,0xbe] +s_setpc_b64 s[4:5] +// SICI: s_setpc_b64 s[4:5] ; encoding: [0x04,0x20,0x80,0xbe] +// VI: s_setpc_b64 s[4:5] ; encoding: [0x04,0x1d,0x80,0xbe] s_swappc_b64 s[2:3], s[4:5] -// CHECK: s_swappc_b64 s[2:3], s[4:5] ; encoding: [0x04,0x21,0x82,0xbe] +// SICI: s_swappc_b64 s[2:3], s[4:5] ; encoding: [0x04,0x21,0x82,0xbe] +// VI: s_swappc_b64 s[2:3], s[4:5] ; encoding: [0x04,0x1e,0x82,0xbe] -s_rfe_b64 s[2:3], s[4:5] -// CHECK: s_rfe_b64 s[2:3], s[4:5] ; encoding: [0x04,0x22,0x82,0xbe] +s_rfe_b64 s[4:5] +// SICI: s_rfe_b64 s[4:5] ; encoding: [0x04,0x22,0x80,0xbe] +// VI: s_rfe_b64 s[4:5] ; encoding: [0x04,0x1f,0x80,0xbe] s_and_saveexec_b64 s[2:3], s[4:5] -// CHECK: s_and_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x24,0x82,0xbe] +// SICI: s_and_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x24,0x82,0xbe] +// VI: s_and_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x20,0x82,0xbe] s_or_saveexec_b64 s[2:3], s[4:5] -// CHECK: s_or_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x25,0x82,0xbe] +// SICI: s_or_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x25,0x82,0xbe] +// VI: s_or_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x21,0x82,0xbe] s_xor_saveexec_b64 s[2:3], s[4:5] -// CHECK: s_xor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x26,0x82,0xbe] +// SICI: s_xor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x26,0x82,0xbe] +// VI: s_xor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x22,0x82,0xbe] s_andn2_saveexec_b64 s[2:3], s[4:5] -// CHECK: s_andn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x27,0x82,0xbe] +// SICI: s_andn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x27,0x82,0xbe] +// VI: s_andn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x23,0x82,0xbe] s_orn2_saveexec_b64 s[2:3], s[4:5] -// CHECK: s_orn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x28,0x82,0xbe] +// SICI: s_orn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x28,0x82,0xbe] +// VI: s_orn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x24,0x82,0xbe] s_nand_saveexec_b64 s[2:3], s[4:5] -// CHECK: s_nand_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x29,0x82,0xbe] +// SICI: s_nand_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x29,0x82,0xbe] +// VI: s_nand_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x25,0x82,0xbe] s_nor_saveexec_b64 s[2:3], s[4:5] -// CHECK: s_nor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2a,0x82,0xbe] +// SICI: s_nor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2a,0x82,0xbe] +// VI: s_nor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x26,0x82,0xbe] s_xnor_saveexec_b64 s[2:3], s[4:5] -// CHECK: s_xnor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2b,0x82,0xbe] +// SICI: s_xnor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2b,0x82,0xbe] +// VI: s_xnor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x27,0x82,0xbe] s_quadmask_b32 s1, s2 -// CHECK: s_quadmask_b32 s1, s2 ; encoding: [0x02,0x2c,0x81,0xbe] +// SICI: s_quadmask_b32 s1, s2 ; encoding: [0x02,0x2c,0x81,0xbe] +// VI: s_quadmask_b32 s1, s2 ; encoding: [0x02,0x28,0x81,0xbe] s_quadmask_b64 s[2:3], s[4:5] -// CHECK: s_quadmask_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2d,0x82,0xbe] +// SICI: s_quadmask_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2d,0x82,0xbe] +// VI: s_quadmask_b64 s[2:3], s[4:5] ; encoding: [0x04,0x29,0x82,0xbe] s_movrels_b32 s1, s2 -// CHECK: s_movrels_b32 s1, s2 ; encoding: [0x02,0x2e,0x81,0xbe] +// SICI: s_movrels_b32 s1, s2 ; encoding: [0x02,0x2e,0x81,0xbe] +// VI: s_movrels_b32 s1, s2 ; encoding: [0x02,0x2a,0x81,0xbe] s_movrels_b64 s[2:3], s[4:5] -// CHECK: s_movrels_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2f,0x82,0xbe] +// SICI: s_movrels_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2f,0x82,0xbe] +// VI: s_movrels_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2b,0x82,0xbe] s_movreld_b32 s1, s2 -// CHECK: s_movreld_b32 s1, s2 ; encoding: [0x02,0x30,0x81,0xbe] +// SICI: s_movreld_b32 s1, s2 ; encoding: [0x02,0x30,0x81,0xbe] +// VI: s_movreld_b32 s1, s2 ; encoding: [0x02,0x2c,0x81,0xbe] s_movreld_b64 s[2:3], s[4:5] -// CHECK: s_movreld_b64 s[2:3], s[4:5] ; encoding: [0x04,0x31,0x82,0xbe] +// SICI: s_movreld_b64 s[2:3], s[4:5] ; encoding: [0x04,0x31,0x82,0xbe] +// VI: s_movreld_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2d,0x82,0xbe] s_cbranch_join s[4:5] -// CHECK: s_cbranch_join s[4:5] ; encoding: [0x04,0x32,0x80,0xbe] +// SICI: s_cbranch_join s[4:5] ; encoding: [0x04,0x32,0x80,0xbe] +// VI: s_cbranch_join s[4:5] ; encoding: [0x04,0x2e,0x80,0xbe] s_abs_i32 s1, s2 -// CHECK: s_abs_i32 s1, s2 ; encoding: [0x02,0x34,0x81,0xbe] +// SICI: s_abs_i32 s1, s2 ; encoding: [0x02,0x34,0x81,0xbe] +// VI: s_abs_i32 s1, s2 ; encoding: [0x02,0x30,0x81,0xbe] s_mov_fed_b32 s1, s2 -// CHECK: s_mov_fed_b32 s1, s2 ; encoding: [0x02,0x35,0x81,0xbe] +// SICI: s_mov_fed_b32 s1, s2 ; encoding: [0x02,0x35,0x81,0xbe] diff --git a/test/MC/AMDGPU/sop2.s b/test/MC/AMDGPU/sop2.s index 1fdc47aa616c..805710d9b974 100644 --- a/test/MC/AMDGPU/sop2.s +++ b/test/MC/AMDGPU/sop2.s @@ -1,134 +1,169 @@ -// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s -// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=VI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s 2>&1 | FileCheck --check-prefix=NOVI %s -// CHECK: s_add_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x80] s_add_u32 s1, s2, s3 +// GCN: s_add_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x80] -// CHECK: s_sub_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x80] s_sub_u32 s1, s2, s3 +// GCN: s_sub_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x80] -// CHECK: s_add_i32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x81] s_add_i32 s1, s2, s3 +// GCN: s_add_i32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x81] -// CHECK: s_sub_i32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x81] s_sub_i32 s1, s2, s3 +// GCN: s_sub_i32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x81] -// CHECK: s_addc_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x82] s_addc_u32 s1, s2, s3 +// GCN: s_addc_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x82] -// CHECK: s_subb_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x82] s_subb_u32 s1, s2, s3 +// GCN: s_subb_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x82] -// CHECK: s_min_i32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x83] s_min_i32 s1, s2, s3 +// GCN: s_min_i32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x83] -// CHECK: s_min_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x83] s_min_u32 s1, s2, s3 +// GCN: s_min_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x83] -// CHECK: s_max_i32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x84] s_max_i32 s1, s2, s3 +// GCN: s_max_i32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x84] -// CHECK: s_max_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x84] s_max_u32 s1, s2, s3 +// GCN: s_max_u32 s1, s2, s3 ; encoding: [0x02,0x03,0x81,0x84] -// CHECK: s_cselect_b32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x85] s_cselect_b32 s1, s2, s3 +// GCN: s_cselect_b32 s1, s2, s3 ; encoding: [0x02,0x03,0x01,0x85] -// CHECK: s_cselect_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x85] s_cselect_b64 s[2:3], s[4:5], s[6:7] +// GCN: s_cselect_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x85] -// CHECK: s_and_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x87] s_and_b32 s2, s4, s6 +// SICI: s_and_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x87] +// VI: s_and_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x86] -// CHECK: s_and_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x87] s_and_b64 s[2:3], s[4:5], s[6:7] +// SICI: s_and_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x87] +// VI: s_and_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x86] -// CHECK: s_or_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x88] s_or_b32 s2, s4, s6 +// SICI: s_or_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x88] +// VI: s_or_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x87] -// CHECK: s_or_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x88] s_or_b64 s[2:3], s[4:5], s[6:7] +// SICI: s_or_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x88] +// VI: s_or_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x87] -// CHECK: s_xor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x89] s_xor_b32 s2, s4, s6 +// SICI: s_xor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x89] +// VI: s_xor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x88] -// CHECK: s_xor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x89] s_xor_b64 s[2:3], s[4:5], s[6:7] +// SICI: s_xor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x89] +// VI: s_xor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x88] -// CHECK: s_andn2_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8a] s_andn2_b32 s2, s4, s6 +// SICI: s_andn2_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8a] +// VI: s_andn2_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x89] -// CHECK: s_andn2_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8a] s_andn2_b64 s[2:3], s[4:5], s[6:7] +// SICI: s_andn2_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8a] +// VI: s_andn2_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x89] -// CHECK: s_orn2_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8b] s_orn2_b32 s2, s4, s6 +// SICI: s_orn2_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8b] +// VI: s_orn2_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8a] -// CHECK: s_orn2_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8b] s_orn2_b64 s[2:3], s[4:5], s[6:7] +// SICI: s_orn2_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8b] +// VI: s_orn2_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8a] -// CHECK: s_nand_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8c] s_nand_b32 s2, s4, s6 +// SICI: s_nand_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8c] +// VI: s_nand_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8b] -// CHECK: s_nand_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8c] s_nand_b64 s[2:3], s[4:5], s[6:7] +// SICI: s_nand_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8c] +// VI: s_nand_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8b] -// CHECK: s_nor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8d] s_nor_b32 s2, s4, s6 +// SICI: s_nor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8d] +// VI: s_nor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8c] -// CHECK: s_nor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8d] s_nor_b64 s[2:3], s[4:5], s[6:7] +// SICI: s_nor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8d] +// VI: s_nor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8c] -// CHECK: s_xnor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8e] s_xnor_b32 s2, s4, s6 +// SICI: s_xnor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8e] +// VI: s_xnor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8d] -// CHECK: s_xnor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8e] s_xnor_b64 s[2:3], s[4:5], s[6:7] +// SICI: s_xnor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8e] +// VI: s_xnor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8d] -// CHECK: s_lshl_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8f] s_lshl_b32 s2, s4, s6 +// SICI: s_lshl_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8f] +// VI: s_lshl_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8e] -// CHECK: s_lshl_b64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x8f] s_lshl_b64 s[2:3], s[4:5], s6 +// SICI: s_lshl_b64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x8f] +// VI: s_lshl_b64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x8e] -// CHECK: s_lshr_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x90] s_lshr_b32 s2, s4, s6 +// SICI: s_lshr_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x90] +// VI: s_lshr_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8f] -// CHECK: s_lshr_b64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x90] s_lshr_b64 s[2:3], s[4:5], s6 +// SICI: s_lshr_b64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x90] +// VI: s_lshr_b64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x8f] -// CHECK: s_ashr_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x91] s_ashr_i32 s2, s4, s6 +// SICI: s_ashr_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x91] +// VI: s_ashr_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x90] -// CHECK: s_ashr_i64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x91] s_ashr_i64 s[2:3], s[4:5], s6 +// SICI: s_ashr_i64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x91] +// VI: s_ashr_i64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x90] -// CHECK: s_bfm_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x92] s_bfm_b32 s2, s4, s6 +// SICI: s_bfm_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x92] +// VI: s_bfm_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x91] -// CHECK: s_bfm_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x92] -s_bfm_b64 s[2:3], s[4:5], s[6:7] +s_bfm_b64 s[2:3], s4, s6 +// SICI: s_bfm_b64 s[2:3], s4, s6 ; encoding: [0x04,0x06,0x82,0x92] +// VI: s_bfm_b64 s[2:3], s4, s6 ; encoding: [0x04,0x06,0x82,0x91] -// CHECK: s_mul_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x93] s_mul_i32 s2, s4, s6 +// SICI: s_mul_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x93] +// VI: s_mul_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x92] -// CHECK: s_bfe_u32 s2, s4, s6 ; encoding: [0x04,0x06,0x82,0x93] s_bfe_u32 s2, s4, s6 +// SICI: s_bfe_u32 s2, s4, s6 ; encoding: [0x04,0x06,0x82,0x93] +// VI: s_bfe_u32 s2, s4, s6 ; encoding: [0x04,0x06,0x82,0x92] -// CHECK: s_bfe_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x94] s_bfe_i32 s2, s4, s6 +// SICI: s_bfe_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x94] +// VI: s_bfe_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x93] -// CHECK: s_bfe_u64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x94] -s_bfe_u64 s[2:3], s[4:5], s[6:7] +s_bfe_u64 s[2:3], s[4:5], s6 +// SICI: s_bfe_u64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x94] +// VI: s_bfe_u64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x93] -// CHECK: s_bfe_i64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x02,0x95] s_bfe_i64 s[2:3], s[4:5], s6 +// SICI: s_bfe_i64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x02,0x95] +// VI: s_bfe_i64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x02,0x94] -// CHECK: s_cbranch_g_fork s[4:5], s[6:7] ; encoding: [0x04,0x06,0x80,0x95] s_cbranch_g_fork s[4:5], s[6:7] +// SICI: s_cbranch_g_fork s[4:5], s[6:7] ; encoding: [0x04,0x06,0x80,0x95] +// VI: s_cbranch_g_fork s[4:5], s[6:7] ; encoding: [0x04,0x06,0x80,0x94] -// CHECK: s_absdiff_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x96] s_absdiff_i32 s2, s4, s6 +// SICI: s_absdiff_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x96] +// VI: s_absdiff_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x95] -// CHECK: s_add_u32 s101, s102, s103 ; encoding: [0x66,0x67,0x65,0x80] s_add_u32 s101, s102, s103 +// SICI: s_add_u32 s101, s102, s103 ; encoding: [0x66,0x67,0x65,0x80] +// NOVI: error: not a valid operand diff --git a/test/MC/AMDGPU/sopc.s b/test/MC/AMDGPU/sopc.s index 0899c1a2eede..b89488ced41b 100644 --- a/test/MC/AMDGPU/sopc.s +++ b/test/MC/AMDGPU/sopc.s @@ -1,9 +1,58 @@ -// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s -// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN %s +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck --check-prefix=GCN %s +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck --check-prefix=GCN %s //===----------------------------------------------------------------------===// -// Instructions +// SOPC Instructions //===----------------------------------------------------------------------===// s_cmp_eq_i32 s1, s2 -// CHECK: s_cmp_eq_i32 s1, s2 ; encoding: [0x01,0x02,0x00,0xbf] +// GCN: s_cmp_eq_i32 s1, s2 ; encoding: [0x01,0x02,0x00,0xbf] + +s_cmp_lg_i32 s1, s2 +// GCN: s_cmp_lg_i32 s1, s2 ; encoding: [0x01,0x02,0x01,0xbf] + +s_cmp_gt_i32 s1, s2 +// GCN: s_cmp_gt_i32 s1, s2 ; encoding: [0x01,0x02,0x02,0xbf] + +s_cmp_ge_i32 s1, s2 +// GCN: s_cmp_ge_i32 s1, s2 ; encoding: [0x01,0x02,0x03,0xbf] + +s_cmp_lt_i32 s1, s2 +// GCN: s_cmp_lt_i32 s1, s2 ; encoding: [0x01,0x02,0x04,0xbf] + +s_cmp_le_i32 s1, s2 +// GCN: s_cmp_le_i32 s1, s2 ; encoding: [0x01,0x02,0x05,0xbf] + +s_cmp_eq_u32 s1, s2 +// GCN: s_cmp_eq_u32 s1, s2 ; encoding: [0x01,0x02,0x06,0xbf] + +s_cmp_lg_u32 s1, s2 +// GCN: s_cmp_lg_u32 s1, s2 ; encoding: [0x01,0x02,0x07,0xbf] + +s_cmp_gt_u32 s1, s2 +// GCN: s_cmp_gt_u32 s1, s2 ; encoding: [0x01,0x02,0x08,0xbf] + +s_cmp_ge_u32 s1, s2 +// GCN: s_cmp_ge_u32 s1, s2 ; encoding: [0x01,0x02,0x09,0xbf] + +s_cmp_lt_u32 s1, s2 +// GCN: s_cmp_lt_u32 s1, s2 ; encoding: [0x01,0x02,0x0a,0xbf] + +s_cmp_le_u32 s1, s2 +// GCN: s_cmp_le_u32 s1, s2 ; encoding: [0x01,0x02,0x0b,0xbf] + +s_bitcmp0_b32 s1, s2 +// GCN: s_bitcmp0_b32 s1, s2 ; encoding: [0x01,0x02,0x0c,0xbf] + +s_bitcmp1_b32 s1, s2 +// GCN: s_bitcmp1_b32 s1, s2 ; encoding: [0x01,0x02,0x0d,0xbf] + +s_bitcmp0_b64 s[2:3], s4 +// GCN: s_bitcmp0_b64 s[2:3], s4 ; encoding: [0x02,0x04,0x0e,0xbf] + +s_bitcmp1_b64 s[2:3], s4 +// GCN: s_bitcmp1_b64 s[2:3], s4 ; encoding: [0x02,0x04,0x0f,0xbf] + +s_setvskip s3, s5 +// GCN: s_setvskip s3, s5 ; encoding: [0x03,0x05,0x10,0xbf] diff --git a/test/MC/AMDGPU/sopk-err.s b/test/MC/AMDGPU/sopk-err.s new file mode 100644 index 000000000000..cf03a242e5eb --- /dev/null +++ b/test/MC/AMDGPU/sopk-err.s @@ -0,0 +1,27 @@ +// RUN: not llvm-mc -arch=amdgcn %s 2>&1 | FileCheck -check-prefix=GCN %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti %s 2>&1 | FileCheck -check-prefix=GCN -check-prefix=SI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga %s 2>&1 | FileCheck -check-prefix=GCN -check-prefix=VI %s + +s_setreg_b32 0x1f803, s2 +// GCN: error: invalid immediate: only 16-bit values are legal + +s_setreg_b32 hwreg(0x40), s2 +// GCN: error: invalid code of hardware register: only 6-bit values are legal + +s_setreg_b32 hwreg(HW_REG_WRONG), s2 +// GCN: error: invalid symbolic name of hardware register + +s_setreg_b32 hwreg(3,32,32), s2 +// GCN: error: invalid bit offset: only 5-bit values are legal + +s_setreg_b32 hwreg(3,0,33), s2 +// GCN: error: invalid bitfield width: only values from 1 to 32 are legal + +s_setreg_imm32_b32 0x1f803, 0xff +// GCN: error: invalid immediate: only 16-bit values are legal + +s_setreg_imm32_b32 hwreg(3,0,33), 0xff +// GCN: error: invalid bitfield width: only values from 1 to 32 are legal + +s_getreg_b32 s2, hwreg(3,32,32) +// GCN: error: invalid bit offset: only 5-bit values are legal diff --git a/test/MC/AMDGPU/sopk.s b/test/MC/AMDGPU/sopk.s index 6c27aaccb80c..d4f6dcfbfebb 100644 --- a/test/MC/AMDGPU/sopk.s +++ b/test/MC/AMDGPU/sopk.s @@ -1,66 +1,134 @@ -// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s -// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=VI %s //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// s_movk_i32 s2, 0x6 -// CHECK: s_movk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb0] +// GCN: s_movk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb0] s_cmovk_i32 s2, 0x6 -// CHECK: s_cmovk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb1] +// SICI: s_cmovk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb1] +// VI: s_cmovk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb0] s_cmpk_eq_i32 s2, 0x6 -// CHECK: s_cmpk_eq_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb1] +// SICI: s_cmpk_eq_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb1] +// VI: s_cmpk_eq_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb1] s_cmpk_lg_i32 s2, 0x6 -// CHECK: s_cmpk_lg_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb2] +// SICI: s_cmpk_lg_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb2] +// VI: s_cmpk_lg_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb1] s_cmpk_gt_i32 s2, 0x6 -// CHECK: s_cmpk_gt_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb2] +// SICI: s_cmpk_gt_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb2] +// VI: s_cmpk_gt_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb2] s_cmpk_ge_i32 s2, 0x6 -// CHECK: s_cmpk_ge_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb3] +// SICI: s_cmpk_ge_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb3] +// VI: s_cmpk_ge_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb2] s_cmpk_lt_i32 s2, 0x6 -// CHECK: s_cmpk_lt_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb3] +// SICI: s_cmpk_lt_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb3] +// VI: s_cmpk_lt_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb3] s_cmpk_le_i32 s2, 0x6 -// CHECK: s_cmpk_le_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb4] +// SICI: s_cmpk_le_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb4] +// VI: s_cmpk_le_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb3] s_cmpk_eq_u32 s2, 0x6 -// CHECK: s_cmpk_eq_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb4] +// SICI: s_cmpk_eq_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb4] +// VI: s_cmpk_eq_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb4] s_cmpk_lg_u32 s2, 0x6 -// CHECK: s_cmpk_lg_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb5] +// SICI: s_cmpk_lg_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb5] +// VI: s_cmpk_lg_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb4] s_cmpk_gt_u32 s2, 0x6 -// CHECK: s_cmpk_gt_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb5] +// SICI: s_cmpk_gt_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb5] +// VI: s_cmpk_gt_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb5] s_cmpk_ge_u32 s2, 0x6 -// CHECK: s_cmpk_ge_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb6] +// SICI: s_cmpk_ge_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb6] +// VI: s_cmpk_ge_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb5] s_cmpk_lt_u32 s2, 0x6 -// CHECK: s_cmpk_lt_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb6] +// SICI: s_cmpk_lt_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb6] +// VI: s_cmpk_lt_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb6] s_cmpk_le_u32 s2, 0x6 -// CHECK: s_cmpk_le_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb7] +// SICI: s_cmpk_le_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb7] +// VI: s_cmpk_le_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb6] s_addk_i32 s2, 0x6 -// CHECK: s_addk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb7] +// SICI: s_addk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb7] +// VI: s_addk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb7] s_mulk_i32 s2, 0x6 -// CHECK: s_mulk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb8] +// SICI: s_mulk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb8] +// VI: s_mulk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb7] s_cbranch_i_fork s[2:3], 0x6 -// CHECK: s_cbranch_i_fork s[2:3], 0x6 ; encoding: [0x06,0x00,0x82,0xb8] +// SICI: s_cbranch_i_fork s[2:3], 0x6 ; encoding: [0x06,0x00,0x82,0xb8] +// VI: s_cbranch_i_fork s[2:3], 0x6 ; encoding: [0x06,0x00,0x02,0xb8] +// raw number mapped to known HW register s_getreg_b32 s2, 0x6 -// CHECK: s_getreg_b32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb9] - -s_setreg_b32 s2, 0x6 -// CHECK: s_setreg_b32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb9] - -s_setreg_imm32_b32 0xff, 0x6 -// CHECK: s_setreg_imm32_b32 0xff, 0x6 ; encoding: [0x06,0x00,0x80,0xba,0xff,0x00,0x00,0x00] +// SICI: s_getreg_b32 s2, hwreg(HW_REG_LDS_ALLOC, 0, 1) ; encoding: [0x06,0x00,0x02,0xb9] +// VI: s_getreg_b32 s2, hwreg(HW_REG_LDS_ALLOC, 0, 1) ; encoding: [0x06,0x00,0x82,0xb8] + +// HW register identifier, non-default offset/width +s_getreg_b32 s2, hwreg(HW_REG_GPR_ALLOC, 1, 31) +// SICI: s_getreg_b32 s2, hwreg(HW_REG_GPR_ALLOC, 1, 31) ; encoding: [0x45,0xf0,0x02,0xb9] +// VI: s_getreg_b32 s2, hwreg(HW_REG_GPR_ALLOC, 1, 31) ; encoding: [0x45,0xf0,0x82,0xb8] + +// HW register code of unknown HW register, non-default offset/width +s_getreg_b32 s2, hwreg(51, 1, 31) +// SICI: s_getreg_b32 s2, hwreg(51, 1, 31) ; encoding: [0x73,0xf0,0x02,0xb9] +// VI: s_getreg_b32 s2, hwreg(51, 1, 31) ; encoding: [0x73,0xf0,0x82,0xb8] + +// HW register code of unknown HW register, default offset/width +s_getreg_b32 s2, hwreg(51) +// SICI: s_getreg_b32 s2, hwreg(51) ; encoding: [0x33,0xf8,0x02,0xb9] +// VI: s_getreg_b32 s2, hwreg(51) ; encoding: [0x33,0xf8,0x82,0xb8] + +// raw number mapped to known HW register +s_setreg_b32 0x6, s2 +// SICI: s_setreg_b32 hwreg(HW_REG_LDS_ALLOC, 0, 1), s2 ; encoding: [0x06,0x00,0x82,0xb9] +// VI: s_setreg_b32 hwreg(HW_REG_LDS_ALLOC, 0, 1), s2 ; encoding: [0x06,0x00,0x02,0xb9] + +// raw number mapped to unknown HW register +s_setreg_b32 0x33, s2 +// SICI: s_setreg_b32 hwreg(51, 0, 1), s2 ; encoding: [0x33,0x00,0x82,0xb9] +// VI: s_setreg_b32 hwreg(51, 0, 1), s2 ; encoding: [0x33,0x00,0x02,0xb9] + +// raw number mapped to known HW register, default offset/width +s_setreg_b32 0xf803, s2 +// SICI: s_setreg_b32 hwreg(HW_REG_TRAPSTS), s2 ; encoding: [0x03,0xf8,0x82,0xb9] +// VI: s_setreg_b32 hwreg(HW_REG_TRAPSTS), s2 ; encoding: [0x03,0xf8,0x02,0xb9] + +// HW register identifier, default offset/width implied +s_setreg_b32 hwreg(HW_REG_HW_ID), s2 +// SICI: s_setreg_b32 hwreg(HW_REG_HW_ID), s2 ; encoding: [0x04,0xf8,0x82,0xb9] +// VI: s_setreg_b32 hwreg(HW_REG_HW_ID), s2 ; encoding: [0x04,0xf8,0x02,0xb9] + +// HW register identifier, non-default offset/width +s_setreg_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), s2 +// SICI: s_setreg_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), s2 ; encoding: [0x45,0xf0,0x82,0xb9] +// VI: s_setreg_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), s2 ; encoding: [0x45,0xf0,0x02,0xb9] + +// HW register code, non-default offset/width +s_setreg_b32 hwreg(5, 1, 31), s2 +// SICI: s_setreg_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), s2 ; encoding: [0x45,0xf0,0x82,0xb9] +// VI: s_setreg_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), s2 ; encoding: [0x45,0xf0,0x02,0xb9] + +// raw number mapped to known HW register +s_setreg_imm32_b32 0x6, 0xff +// SICI: s_setreg_imm32_b32 hwreg(HW_REG_LDS_ALLOC, 0, 1), 0xff ; encoding: [0x06,0x00,0x80,0xba,0xff,0x00,0x00,0x00] +// VI: s_setreg_imm32_b32 hwreg(HW_REG_LDS_ALLOC, 0, 1), 0xff ; encoding: [0x06,0x00,0x00,0xba,0xff,0x00,0x00,0x00] + +// HW register identifier, non-default offset/width +s_setreg_imm32_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), 0xff +// SICI: s_setreg_imm32_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), 0xff ; encoding: [0x45,0xf0,0x80,0xba,0xff,0x00,0x00,0x00] +// VI: s_setreg_imm32_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), 0xff ; encoding: [0x45,0xf0,0x00,0xba,0xff,0x00,0x00,0x00] diff --git a/test/MC/AMDGPU/sopp-err.s b/test/MC/AMDGPU/sopp-err.s new file mode 100644 index 000000000000..da6bfbd16f4e --- /dev/null +++ b/test/MC/AMDGPU/sopp-err.s @@ -0,0 +1,75 @@ +// RUN: not llvm-mc -arch=amdgcn -show-encoding %s 2>&1 | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s 2>&1 | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s 2>&1 | FileCheck --check-prefix=GCN --check-prefix=VI %s + +s_sendmsg sendmsg(11) +// GCN: error: invalid/unsupported code of message + +s_sendmsg sendmsg(MSG_INTERRUPTX) +// GCN: error: invalid/unsupported symbolic name of message + +s_sendmsg sendmsg(MSG_INTERRUPT, 0) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(MSG_GS) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(MSG_GS, GS_OP_NOP) +// GCN: error: invalid GS_OP: NOP is for GS_DONE only + +s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0, 0) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(MSG_GSX, GS_OP_CUT, 0) +// GCN: error: invalid/unsupported symbolic name of message + +s_sendmsg sendmsg(MSG_GS, GS_OP_CUTX, 0) +// GCN: error: invalid symbolic name of GS_OP + +s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 4) +// GCN: error: invalid stream id: only 2-bit values are legal + +s_sendmsg sendmsg(2) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(2, 0) +// GCN: error: invalid GS_OP: NOP is for GS_DONE only + +s_sendmsg sendmsg(2, 3, 0, 0) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(2, 4, 1) +// GCN: error: invalid code of GS_OP: only 2-bit values are legal + +s_sendmsg sendmsg(2, 2, 4) +// GCN: error: invalid stream id: only 2-bit values are legal + +s_sendmsg sendmsg(2, 2, 0, 0) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP, 0) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(15) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(15, 1, 0) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(15, 0) +// GCN: error: invalid/unsupported code of SYSMSG_OP + +s_sendmsg sendmsg(15, 5) +// GCN: error: invalid/unsupported code of SYSMSG_OP + +s_sendmsg sendmsg(MSG_SYSMSG) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT, 0) +// GCN: error: failed parsing operand + +s_sendmsg sendmsg(MSG_SYSMSG, 0) +// GCN: error: invalid/unsupported code of SYSMSG_OP + +s_sendmsg sendmsg(MSG_SYSMSG, 5) +// GCN: error: invalid/unsupported code of SYSMSG_OP diff --git a/test/MC/AMDGPU/sopp.s b/test/MC/AMDGPU/sopp.s index b072c16fdb24..59de24533e0e 100644 --- a/test/MC/AMDGPU/sopp.s +++ b/test/MC/AMDGPU/sopp.s @@ -1,64 +1,178 @@ -// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s -// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=VI %s //===----------------------------------------------------------------------===// // Edge Cases //===----------------------------------------------------------------------===// -s_nop 0 // CHECK: s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf] -s_nop 0xffff // CHECK: s_nop 0xffff ; encoding: [0xff,0xff,0x80,0xbf] +s_nop 0 +// GCN: s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf] + +s_nop 0xffff +// GCN: s_nop 0xffff ; encoding: [0xff,0xff,0x80,0xbf] //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// - s_nop 1 // CHECK: s_nop 1 ; encoding: [0x01,0x00,0x80,0xbf] - s_endpgm // CHECK: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] - s_branch 2 // CHECK: s_branch 2 ; encoding: [0x02,0x00,0x82,0xbf] - s_cbranch_scc0 3 // CHECK: s_cbranch_scc0 3 ; encoding: [0x03,0x00,0x84,0xbf] - s_cbranch_scc1 4 // CHECK: s_cbranch_scc1 4 ; encoding: [0x04,0x00,0x85,0xbf] - s_cbranch_vccz 5 // CHECK: s_cbranch_vccz 5 ; encoding: [0x05,0x00,0x86,0xbf] - s_cbranch_vccnz 6 // CHECK: s_cbranch_vccnz 6 ; encoding: [0x06,0x00,0x87,0xbf] - s_cbranch_execz 7 // CHECK: s_cbranch_execz 7 ; encoding: [0x07,0x00,0x88,0xbf] - s_cbranch_execnz 8 // CHECK: s_cbranch_execnz 8 ; encoding: [0x08,0x00,0x89,0xbf] - s_barrier // CHECK: s_barrier ; encoding: [0x00,0x00,0x8a,0xbf] +s_nop 1 +// GCN: s_nop 1 ; encoding: [0x01,0x00,0x80,0xbf] + +s_endpgm +// GCN: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] + +s_branch 2 +// GCN: s_branch 2 ; encoding: [0x02,0x00,0x82,0xbf] + +s_cbranch_scc0 3 +// GCN: s_cbranch_scc0 3 ; encoding: [0x03,0x00,0x84,0xbf] + +s_cbranch_scc1 4 +// GCN: s_cbranch_scc1 4 ; encoding: [0x04,0x00,0x85,0xbf] + +s_cbranch_vccz 5 +// GCN: s_cbranch_vccz 5 ; encoding: [0x05,0x00,0x86,0xbf] + +s_cbranch_vccnz 6 +// GCN: s_cbranch_vccnz 6 ; encoding: [0x06,0x00,0x87,0xbf] + +s_cbranch_execz 7 +// GCN: s_cbranch_execz 7 ; encoding: [0x07,0x00,0x88,0xbf] + +s_cbranch_execnz 8 +// GCN: s_cbranch_execnz 8 ; encoding: [0x08,0x00,0x89,0xbf] + +s_barrier +// GCN: s_barrier ; encoding: [0x00,0x00,0x8a,0xbf] //===----------------------------------------------------------------------===// // s_waitcnt //===----------------------------------------------------------------------===// - s_waitcnt 0 - // CHECK: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] +s_waitcnt 0 +// GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] + +s_waitcnt vmcnt(0) & expcnt(0) & lgkmcnt(0) +// GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] + +s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) +// GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] + +s_waitcnt vmcnt(0), expcnt(0), lgkmcnt(0) +// GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] + +s_waitcnt vmcnt(1) +// GCN: s_waitcnt vmcnt(1) ; encoding: [0x71,0x0f,0x8c,0xbf] + +s_waitcnt vmcnt(9) +// GCN: s_waitcnt vmcnt(9) ; encoding: [0x79,0x0f,0x8c,0xbf] + +s_waitcnt expcnt(2) +// GCN: s_waitcnt expcnt(2) ; encoding: [0x2f,0x0f,0x8c,0xbf] + +s_waitcnt lgkmcnt(3) +// GCN: s_waitcnt lgkmcnt(3) ; encoding: [0x7f,0x03,0x8c,0xbf] + +s_waitcnt lgkmcnt(9) +// GCN: s_waitcnt lgkmcnt(9) ; encoding: [0x7f,0x09,0x8c,0xbf] + +s_waitcnt vmcnt(0), expcnt(0) +// GCN: s_waitcnt vmcnt(0) expcnt(0) ; encoding: [0x00,0x0f,0x8c,0xbf] + + +s_sethalt 9 +// GCN: s_sethalt 9 ; encoding: [0x09,0x00,0x8d,0xbf] + +s_sleep 10 +// GCN: s_sleep 10 ; encoding: [0x0a,0x00,0x8e,0xbf] + +s_setprio 1 +// GCN: s_setprio 1 ; encoding: [0x01,0x00,0x8f,0xbf] + +s_sendmsg 2 +// GCN: s_sendmsg 2 ; encoding: [0x02,0x00,0x90,0xbf] + +s_sendmsg 0x1 +// GCN: s_sendmsg sendmsg(MSG_INTERRUPT) ; encoding: [0x01,0x00,0x90,0xbf] + +s_sendmsg sendmsg(1) +// GCN: s_sendmsg sendmsg(MSG_INTERRUPT) ; encoding: [0x01,0x00,0x90,0xbf] + +s_sendmsg sendmsg(MSG_INTERRUPT) +// GCN: s_sendmsg sendmsg(MSG_INTERRUPT) ; encoding: [0x01,0x00,0x90,0xbf] + +s_sendmsg 0x12 +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) ; encoding: [0x12,0x00,0x90,0xbf] + +s_sendmsg sendmsg(2, 1) +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) ; encoding: [0x12,0x00,0x90,0xbf] + +s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) ; encoding: [0x12,0x00,0x90,0xbf] + +s_sendmsg 0x122 +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x90,0xbf] + +s_sendmsg sendmsg(2, 2, 1) +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x90,0xbf] + +s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x90,0xbf] + +s_sendmsg 0x232 +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) ; encoding: [0x32,0x02,0x90,0xbf] + +s_sendmsg sendmsg(2, 3, 2) +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) ; encoding: [0x32,0x02,0x90,0xbf] + +s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) +// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) ; encoding: [0x32,0x02,0x90,0xbf] + +s_sendmsg 0x3 +// GCN: s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x90,0xbf] + +s_sendmsg sendmsg(3, 0) +// GCN: s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x90,0xbf] + +s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) +// GCN: s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x90,0xbf] + +s_sendmsg 0x4 +// GCN: s_sendmsg 4 ; encoding: [0x04,0x00,0x90,0xbf] + +s_sendmsg 11 +// GCN: s_sendmsg 11 ; encoding: [0x0b,0x00,0x90,0xbf] + +s_sendmsg 0x1f +// GCN: s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) ; encoding: [0x1f,0x00,0x90,0xbf] + +s_sendmsg sendmsg(15, 1) +// GCN: s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) ; encoding: [0x1f,0x00,0x90,0xbf] - s_waitcnt vmcnt(0) & expcnt(0) & lgkmcnt(0) - // CHECK: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] +s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) +// GCN: s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) ; encoding: [0x1f,0x00,0x90,0xbf] - s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) - // CHECK: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] +s_sendmsg 0x6f +// GCN: s_sendmsg 111 ; encoding: [0x6f,0x00,0x90,0xbf] - s_waitcnt vmcnt(0), expcnt(0), lgkmcnt(0) - // CHECK: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] +s_sendmsghalt 3 +// GCN: s_sendmsghalt sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x91,0xbf] - s_waitcnt vmcnt(1) - // CHECK: s_waitcnt vmcnt(1) ; encoding: [0x71,0x07,0x8c,0xbf] +s_sendmsghalt sendmsg(MSG_GS, GS_OP_EMIT, 1) +// GCN: s_sendmsghalt sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x91,0xbf] - s_waitcnt expcnt(2) - // CHECK: s_waitcnt expcnt(2) ; encoding: [0x2f,0x07,0x8c,0xbf] +s_trap 4 +// GCN: s_trap 4 ; encoding: [0x04,0x00,0x92,0xbf] - s_waitcnt lgkmcnt(3) - // CHECK: s_waitcnt lgkmcnt(3) ; encoding: [0x7f,0x03,0x8c,0xbf] +s_icache_inv +// GCN: s_icache_inv ; encoding: [0x00,0x00,0x93,0xbf] - s_waitcnt vmcnt(0), expcnt(0) - // CHECK: s_waitcnt vmcnt(0) expcnt(0) ; encoding: [0x00,0x07,0x8c,0xbf] +s_incperflevel 5 +// GCN: s_incperflevel 5 ; encoding: [0x05,0x00,0x94,0xbf] +s_decperflevel 6 +// GCN: s_decperflevel 6 ; encoding: [0x06,0x00,0x95,0xbf] - s_sethalt 9 // CHECK: s_sethalt 9 ; encoding: [0x09,0x00,0x8d,0xbf] - s_sleep 10 // CHECK: s_sleep 10 ; encoding: [0x0a,0x00,0x8e,0xbf] - s_setprio 1 // CHECK: s_setprio 1 ; encoding: [0x01,0x00,0x8f,0xbf] - s_sendmsg 2 // CHECK: s_sendmsg Gs(nop), [m0] ; encoding: [0x02,0x00,0x90,0xbf] - s_sendmsghalt 3 // CHECK: s_sendmsghalt 3 ; encoding: [0x03,0x00,0x91,0xbf] - s_trap 4 // CHECK: s_trap 4 ; encoding: [0x04,0x00,0x92,0xbf] - s_icache_inv // CHECK: s_icache_inv ; encoding: [0x00,0x00,0x93,0xbf] - s_incperflevel 5 // CHECK: s_incperflevel 5 ; encoding: [0x05,0x00,0x94,0xbf] - s_decperflevel 6 // CHECK: s_decperflevel 6 ; encoding: [0x06,0x00,0x95,0xbf] - s_ttracedata // CHECK: s_ttracedata ; encoding: [0x00,0x00,0x96,0xbf] +s_ttracedata +// GCN: s_ttracedata ; encoding: [0x00,0x00,0x96,0xbf] diff --git a/test/MC/AMDGPU/symbol_special.s b/test/MC/AMDGPU/symbol_special.s new file mode 100644 index 000000000000..75d36b84c4aa --- /dev/null +++ b/test/MC/AMDGPU/symbol_special.s @@ -0,0 +1,48 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=bonaire %s | FileCheck %s --check-prefix=BONAIRE +// RUN: llvm-mc -arch=amdgcn -mcpu=hawaii %s | FileCheck %s --check-prefix=HAWAII +// RUN: llvm-mc -arch=amdgcn -mcpu=tonga %s | FileCheck %s --check-prefix=TONGA +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji %s | FileCheck %s --check-prefix=FIJI + +.if .option.machine_version_major == 0 +.byte 0 +.elseif .option.machine_version_major == 7 +.byte 7 +.elseif .option.machine_version_major == 8 +.byte 8 +.else +.error "major unknown" +.endif +// BONAIRE: .byte 7 +// HAWAII: .byte 7 +// TONGA: .byte 8 +// FIJI: .byte 8 + +.if .option.machine_version_minor == 0 +.byte 0 +.else +.error "minor unknown" +.endif +// BONAIRE: .byte 0 +// HAWAII: .byte 0 +// TONGA: .byte 0 +// FIJI: .byte 0 + +.if .option.machine_version_stepping == 0 +.byte 0 +.elseif .option.machine_version_stepping == 1 +.byte 1 +.elseif .option.machine_version_stepping == 3 +.byte 3 +.else +.error "stepping unknown" +.endif +// BONAIRE: .byte 0 +// HAWAII: .byte 1 +// TONGA: .byte 0 +// FIJI: .byte 3 + +v_add_f32 v0, v0, v[.option.machine_version_major] +// BONAIRE: v_add_f32_e32 v0, v0, v7 +// HAWAII: v_add_f32_e32 v0, v0, v7 +// TONGA: v_add_f32_e32 v0, v0, v8 +// FIJI: v_add_f32_e32 v0, v0, v8 diff --git a/test/MC/AMDGPU/trap.s b/test/MC/AMDGPU/trap.s new file mode 100644 index 000000000000..3695da518ca2 --- /dev/null +++ b/test/MC/AMDGPU/trap.s @@ -0,0 +1,144 @@ +// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s --check-prefix=SICI +// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s --check-prefix=SICI +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck %s --check-prefix=VI + +//===----------------------------------------------------------------------===// +// Trap Handler related - 32 bit registers +//===----------------------------------------------------------------------===// + +s_add_u32 ttmp0, ttmp0, 4 +// SICI: s_add_u32 ttmp0, ttmp0, 4 ; encoding: [0x70,0x84,0x70,0x80] +// VI: s_add_u32 ttmp0, ttmp0, 4 ; encoding: [0x70,0x84,0x70,0x80] + +s_add_u32 ttmp4, 8, ttmp4 +// SICI: s_add_u32 ttmp4, 8, ttmp4 ; encoding: [0x88,0x74,0x74,0x80] +// VI: s_add_u32 ttmp4, 8, ttmp4 ; encoding: [0x88,0x74,0x74,0x80] + +s_add_u32 ttmp4, ttmp4, 0x00000100 +// SICI: s_add_u32 ttmp4, ttmp4, 0x100 ; encoding: [0x74,0xff,0x74,0x80,0x00,0x01,0x00,0x00] +// VI: s_add_u32 ttmp4, ttmp4, 0x100 ; encoding: [0x74,0xff,0x74,0x80,0x00,0x01,0x00,0x00] + +s_add_u32 ttmp4, ttmp4, 4 +// SICI: s_add_u32 ttmp4, ttmp4, 4 ; encoding: [0x74,0x84,0x74,0x80] +// VI: s_add_u32 ttmp4, ttmp4, 4 ; encoding: [0x74,0x84,0x74,0x80] + +s_add_u32 ttmp4, ttmp8, ttmp4 +// SICI: s_add_u32 ttmp4, ttmp8, ttmp4 ; encoding: [0x78,0x74,0x74,0x80] +// VI: s_add_u32 ttmp4, ttmp8, ttmp4 ; encoding: [0x78,0x74,0x74,0x80] + +s_and_b32 ttmp10, ttmp8, 0x00000080 +// SICI: s_and_b32 ttmp10, ttmp8, 0x80 ; encoding: [0x78,0xff,0x7a,0x87,0x80,0x00,0x00,0x00] +// VI: s_and_b32 ttmp10, ttmp8, 0x80 ; encoding: [0x78,0xff,0x7a,0x86,0x80,0x00,0x00,0x00] + +s_and_b32 ttmp9, tma_hi, 0x0000ffff +// SICI: s_and_b32 ttmp9, tma_hi, 0xffff ; encoding: [0x6f,0xff,0x79,0x87,0xff,0xff,0x00,0x00] +// VI: s_and_b32 ttmp9, tma_hi, 0xffff ; encoding: [0x6f,0xff,0x79,0x86,0xff,0xff,0x00,0x00] + +s_and_b32 ttmp9, ttmp9, 0x000001ff +// SICI: s_and_b32 ttmp9, ttmp9, 0x1ff ; encoding: [0x79,0xff,0x79,0x87,0xff,0x01,0x00,0x00] +// VI: s_and_b32 ttmp9, ttmp9, 0x1ff ; encoding: [0x79,0xff,0x79,0x86,0xff,0x01,0x00,0x00] + +s_and_b32 ttmp9, tma_lo, 0xffff0000 +// SICI: s_and_b32 ttmp9, tma_lo, 0xffff0000 ; encoding: [0x6e,0xff,0x79,0x87,0x00,0x00,0xff,0xff] +// VI: s_and_b32 ttmp9, tma_lo, 0xffff0000 ; encoding: [0x6e,0xff,0x79,0x86,0x00,0x00,0xff,0xff] + +s_and_b32 ttmp9, ttmp9, ttmp8 +// SICI: s_and_b32 ttmp9, ttmp9, ttmp8 ; encoding: [0x79,0x78,0x79,0x87] +// VI: s_and_b32 ttmp9, ttmp9, ttmp8 ; encoding: [0x79,0x78,0x79,0x86] + +s_and_b32 ttmp8, ttmp1, 0x01000000 +// SICI: s_and_b32 ttmp8, ttmp1, 0x1000000 ; encoding: [0x71,0xff,0x78,0x87,0x00,0x00,0x00,0x01] +// VI: s_and_b32 ttmp8, ttmp1, 0x1000000 ; encoding: [0x71,0xff,0x78,0x86,0x00,0x00,0x00,0x01] + +s_cmp_eq_i32 ttmp8, 0 +// SICI: s_cmp_eq_i32 ttmp8, 0 ; encoding: [0x78,0x80,0x00,0xbf] +// VI: s_cmp_eq_i32 ttmp8, 0 ; encoding: [0x78,0x80,0x00,0xbf] + +s_cmp_eq_i32 ttmp8, 0x000000fe +// SICI: s_cmp_eq_i32 ttmp8, 0xfe ; encoding: [0x78,0xff,0x00,0xbf,0xfe,0x00,0x00,0x00] +// VI: s_cmp_eq_i32 ttmp8, 0xfe ; encoding: [0x78,0xff,0x00,0xbf,0xfe,0x00,0x00,0x00] + +s_lshr_b32 ttmp8, ttmp8, 12 +// SICI: s_lshr_b32 ttmp8, ttmp8, 12 ; encoding: [0x78,0x8c,0x78,0x90] +// VI: s_lshr_b32 ttmp8, ttmp8, 12 ; encoding: [0x78,0x8c,0x78,0x8f] + +v_mov_b32 v1, ttmp8 +// SICI: v_mov_b32_e32 v1, ttmp8 ; encoding: [0x78,0x02,0x02,0x7e] +// VI: v_mov_b32_e32 v1, ttmp8 ; encoding: [0x78,0x02,0x02,0x7e] + +s_mov_b32 m0, ttmp8 +// SICI: s_mov_b32 m0, ttmp8 ; encoding: [0x78,0x03,0xfc,0xbe] +// VI: s_mov_b32 m0, ttmp8 ; encoding: [0x78,0x00,0xfc,0xbe] + +s_mov_b32 ttmp10, 0 +// SICI: s_mov_b32 ttmp10, 0 ; encoding: [0x80,0x03,0xfa,0xbe] +// VI: s_mov_b32 ttmp10, 0 ; encoding: [0x80,0x00,0xfa,0xbe] + +s_mov_b32 ttmp11, 0x01024fac +// SICI: s_mov_b32 ttmp11, 0x1024fac ; encoding: [0xff,0x03,0xfb,0xbe,0xac,0x4f,0x02,0x01] +// VI: s_mov_b32 ttmp11, 0x1024fac ; encoding: [0xff,0x00,0xfb,0xbe,0xac,0x4f,0x02,0x01] + +s_mov_b32 ttmp8, m0 +// SICI: s_mov_b32 ttmp8, m0 ; encoding: [0x7c,0x03,0xf8,0xbe] +// VI: s_mov_b32 ttmp8, m0 ; encoding: [0x7c,0x00,0xf8,0xbe] + +s_mov_b32 ttmp8, tma_lo +// SICI: s_mov_b32 ttmp8, tma_lo ; encoding: [0x6e,0x03,0xf8,0xbe] +// VI: s_mov_b32 ttmp8, tma_lo ; encoding: [0x6e,0x00,0xf8,0xbe] + +s_mul_i32 ttmp8, 0x00000324, ttmp8 +// SICI: s_mul_i32 ttmp8, 0x324, ttmp8 ; encoding: [0xff,0x78,0x78,0x93,0x24,0x03,0x00,0x00] +// VI: s_mul_i32 ttmp8, 0x324, ttmp8 ; encoding: [0xff,0x78,0x78,0x92,0x24,0x03,0x00,0x00] + +s_or_b32 ttmp9, ttmp9, 0x00280000 +// SICI: s_or_b32 ttmp9, ttmp9, 0x280000 ; encoding: [0x79,0xff,0x79,0x88,0x00,0x00,0x28,0x00] +// VI: s_or_b32 ttmp9, ttmp9, 0x280000 ; encoding: [0x79,0xff,0x79,0x87,0x00,0x00,0x28,0x00] + +//===----------------------------------------------------------------------===// +// Trap Handler related - Pairs and quadruples of registers +//===----------------------------------------------------------------------===// + +s_mov_b64 ttmp[4:5], exec +// SICI: s_mov_b64 ttmp[4:5], exec ; encoding: [0x7e,0x04,0xf4,0xbe] +// VI: s_mov_b64 ttmp[4:5], exec ; encoding: [0x7e,0x01,0xf4,0xbe] + +s_mov_b64 [ttmp4,ttmp5], exec +// SICI: s_mov_b64 ttmp[4:5], exec ; encoding: [0x7e,0x04,0xf4,0xbe] +// VI: s_mov_b64 ttmp[4:5], exec ; encoding: [0x7e,0x01,0xf4,0xbe] + +s_mov_b64 exec, [ttmp4,ttmp5] +// SICI: s_mov_b64 exec, ttmp[4:5] ; encoding: [0x74,0x04,0xfe,0xbe] +// VI: s_mov_b64 exec, ttmp[4:5] ; encoding: [0x74,0x01,0xfe,0xbe] + +s_mov_b64 tba, ttmp[4:5] +// SICI: s_mov_b64 tba, ttmp[4:5] ; encoding: [0x74,0x04,0xec,0xbe] +// VI: s_mov_b64 tba, ttmp[4:5] ; encoding: [0x74,0x01,0xec,0xbe] + +s_mov_b64 ttmp[4:5], tba +// SICI: s_mov_b64 ttmp[4:5], tba ; encoding: [0x6c,0x04,0xf4,0xbe] +// VI: s_mov_b64 ttmp[4:5], tba ; encoding: [0x6c,0x01,0xf4,0xbe] + +s_mov_b64 tma, ttmp[4:5] +// SICI: s_mov_b64 tma, ttmp[4:5] ; encoding: [0x74,0x04,0xee,0xbe] +// VI: s_mov_b64 tma, ttmp[4:5] ; encoding: [0x74,0x01,0xee,0xbe] + +s_mov_b64 ttmp[4:5], tma +// SICI: s_mov_b64 ttmp[4:5], tma ; encoding: [0x6e,0x04,0xf4,0xbe] +// VI: s_mov_b64 ttmp[4:5], tma ; encoding: [0x6e,0x01,0xf4,0xbe] + + +//===----------------------------------------------------------------------===// +// Trap Handler related - Some specific instructions +//===----------------------------------------------------------------------===// + +s_setpc_b64 [ttmp2,ttmp3] +// SICI: s_setpc_b64 ttmp[2:3] ; encoding: [0x72,0x20,0x80,0xbe] +// VI: s_setpc_b64 ttmp[2:3] ; encoding: [0x72,0x1d,0x80,0xbe] + +v_readfirstlane_b32 ttmp8, v1 +// SICI: v_readfirstlane_b32 ttmp8, v1 ; encoding: [0x01,0x05,0xf0,0x7e] +// VI: v_readfirstlane_b32 ttmp8, v1 ; encoding: [0x01,0x05,0xf0,0x7e] + +buffer_atomic_inc v1, off, ttmp[8:11], 56 glc +// SICI: buffer_atomic_inc v1, off, ttmp[8:11], 56 glc ; encoding: [0x00,0x40,0xf0,0xe0,0x00,0x01,0x1e,0xb8] +// VI: buffer_atomic_inc v1, off, ttmp[8:11], 56 glc ; encoding: [0x00,0x40,0x2c,0xe1,0x00,0x01,0x1e,0xb8] diff --git a/test/MC/AMDGPU/vop2-err.s b/test/MC/AMDGPU/vop2-err.s index 8d282f9bf7ed..19f7274088df 100644 --- a/test/MC/AMDGPU/vop2-err.s +++ b/test/MC/AMDGPU/vop2-err.s @@ -8,6 +8,9 @@ v_mul_i32_i24 v1, v2, 100 // CHECK: error: invalid operand for instruction +v_cndmask_b32 v1, v2, v3 +// CHECK: error: too few operands for instruction + //===----------------------------------------------------------------------===// // _e32 checks //===----------------------------------------------------------------------===// @@ -20,6 +23,9 @@ v_mul_i32_i24_e32 v1, v2, 100 v_mul_i32_i24_e32 v1, v2, s3 // CHECK: error: invalid operand for instruction +v_cndmask_b32_e32 v1, v2, v3, s[0:1] +// CHECK: error: invalid operand for instruction + //===----------------------------------------------------------------------===// // _e64 checks //===----------------------------------------------------------------------===// diff --git a/test/MC/AMDGPU/vop2.s b/test/MC/AMDGPU/vop2.s index 2b8249152b7b..b4a19fee2909 100644 --- a/test/MC/AMDGPU/vop2.s +++ b/test/MC/AMDGPU/vop2.s @@ -94,12 +94,23 @@ v_mul_i32_i24 v1, s2, 3 // SICI: v_mul_i32_i24_e64 v1, 3, s3 ; encoding: [0x01,0x00,0x12,0xd2,0x83,0x06,0x00,0x00] v_mul_i32_i24 v1, 3, s3 +// SICI: v_add_i32_e32 v0, vcc, 0.5, v0 ; encoding: [0xf0,0x00,0x00,0x4a] +// VI: v_add_i32_e32 v0, vcc, 0.5, v0 ; encoding: [0xf0,0x00,0x00,0x32] +v_add_i32 v0, vcc, 0.5, v0 + +// SICI: v_add_i32_e32 v0, vcc, 0x40480000, v0 ; encoding: [0xff,0x00,0x00,0x4a,0x00,0x00,0x48,0x40] +// VI: v_add_i32_e32 v0, vcc, 0x40480000, v0 ; encoding: [0xff,0x00,0x00,0x32,0x00,0x00,0x48,0x40] +v_add_i32 v0, vcc, 3.125, v0 + //===----------------------------------------------------------------------===// // Instructions //===----------------------------------------------------------------------===// -// GCN: v_cndmask_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x00] -v_cndmask_b32 v1, v2, v3 +// GCN: v_cndmask_b32_e32 v1, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x00] +v_cndmask_b32 v1, v2, v3, vcc + +// GCN: v_cndmask_b32_e32 v1, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x00] +v_cndmask_b32_e32 v1, v2, v3, vcc // SICI: v_readlane_b32 s1, v2, s3 ; encoding: [0x02,0x07,0x02,0x02] // VI: v_readlane_b32 s1, v2, s3 ; encoding: [0x01,0x00,0x89,0xd2,0x02,0x07,0x00,0x00] @@ -231,12 +242,12 @@ v_bfm_b32 v1, v2, v3 // VI: v_mac_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2c] v_mac_f32 v1, v2, v3 -// SICI: v_madmk_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x40,0x00,0x00,0x80,0x42] -// VI: v_madmk_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42] -v_madmk_f32 v1, v2, v3, 64.0 +// SICI: v_madmk_f32_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x40,0x00,0x00,0x80,0x42] +// VI: v_madmk_f32_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42] +v_madmk_f32 v1, v2, 64.0, v3 // SICI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x42,0x00,0x00,0x80,0x42] -// VI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42] +// VI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42] v_madak_f32 v1, v2, v3, 64.0 // SICI: v_bcnt_u32_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x44] @@ -410,9 +421,9 @@ v_mul_f16 v1, v2, v3 v_mac_f16 v1, v2, v3 // NOSICI: error: instruction not supported on this GPU -// NOSICI: v_madmk_f16 v1, v2, v3, 64.0 -// VI: v_madmk_f16_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x00,0x80,0x42] -v_madmk_f16 v1, v2, v3, 64.0 +// NOSICI: v_madmk_f16 v1, v2, 64.0, v3 +// VI: v_madmk_f16_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x00,0x80,0x42] +v_madmk_f16 v1, v2, 64.0, v3 // NOSICI: error: instruction not supported on this GPU // NOSICI: v_madak_f16 v1, v2, v3, 64.0 diff --git a/test/MC/AMDGPU/vop3-errs.s b/test/MC/AMDGPU/vop3-errs.s index b57fe6d5314b..45ad74836c71 100644 --- a/test/MC/AMDGPU/vop3-errs.s +++ b/test/MC/AMDGPU/vop3-errs.s @@ -3,3 +3,6 @@ v_add_f32_e64 v0, v1 // CHECK: error: too few operands for instruction + +v_div_scale_f32 v24, vcc, v22, 1.1, v22 +// CHECK: error: invalid operand for instruction diff --git a/test/MC/AMDGPU/vop3.s b/test/MC/AMDGPU/vop3.s index 712b18e37aab..86362878ec65 100644 --- a/test/MC/AMDGPU/vop3.s +++ b/test/MC/AMDGPU/vop3.s @@ -52,14 +52,26 @@ v_cmp_lt_f32 s[2:3] -|v4|, v6 // SICI: v_cmp_lt_f32_e64 s[2:3], -|v4|, v6 ; encoding: [0x02,0x01,0x02,0xd0,0x04,0x0d,0x02,0x20] // VI: v_cmp_lt_f32_e64 s[2:3], -|v4|, v6 ; encoding: [0x02,0x01,0x41,0xd0,0x04,0x0d,0x02,0x20] +v_cmp_lt_f32 s[2:3] -abs(v4), v6 +// SICI: v_cmp_lt_f32_e64 s[2:3], -|v4|, v6 ; encoding: [0x02,0x01,0x02,0xd0,0x04,0x0d,0x02,0x20] +// VI: v_cmp_lt_f32_e64 s[2:3], -|v4|, v6 ; encoding: [0x02,0x01,0x41,0xd0,0x04,0x0d,0x02,0x20] + v_cmp_lt_f32 s[2:3] v4, -|v6| // SICI: v_cmp_lt_f32_e64 s[2:3], v4, -|v6| ; encoding: [0x02,0x02,0x02,0xd0,0x04,0x0d,0x02,0x40] // VI: v_cmp_lt_f32_e64 s[2:3], v4, -|v6| ; encoding: [0x02,0x02,0x41,0xd0,0x04,0x0d,0x02,0x40] +v_cmp_lt_f32 s[2:3] v4, -abs(v6) +// SICI: v_cmp_lt_f32_e64 s[2:3], v4, -|v6| ; encoding: [0x02,0x02,0x02,0xd0,0x04,0x0d,0x02,0x40] +// VI: v_cmp_lt_f32_e64 s[2:3], v4, -|v6| ; encoding: [0x02,0x02,0x41,0xd0,0x04,0x0d,0x02,0x40] + v_cmp_lt_f32 s[2:3] -|v4|, -|v6| // SICI: v_cmp_lt_f32_e64 s[2:3], -|v4|, -|v6| ; encoding: [0x02,0x03,0x02,0xd0,0x04,0x0d,0x02,0x60] // VI: v_cmp_lt_f32_e64 s[2:3], -|v4|, -|v6| ; encoding: [0x02,0x03,0x41,0xd0,0x04,0x0d,0x02,0x60] +v_cmp_lt_f32 s[2:3] -abs(v4), -abs(v6) +// SICI: v_cmp_lt_f32_e64 s[2:3], -|v4|, -|v6| ; encoding: [0x02,0x03,0x02,0xd0,0x04,0x0d,0x02,0x60] +// VI: v_cmp_lt_f32_e64 s[2:3], -|v4|, -|v6| ; encoding: [0x02,0x03,0x41,0xd0,0x04,0x0d,0x02,0x60] + // // Instruction tests: // @@ -137,7 +149,7 @@ v_clrexcp_e64 // // Modifier tests: -// +// v_fract_f32 v1, -v2 // SICI: v_fract_f32_e64 v1, -v2 ; encoding: [0x01,0x00,0x40,0xd3,0x02,0x01,0x00,0x20] @@ -147,10 +159,18 @@ v_fract_f32 v1, |v2| // SICI: v_fract_f32_e64 v1, |v2| ; encoding: [0x01,0x01,0x40,0xd3,0x02,0x01,0x00,0x00] // VI: v_fract_f32_e64 v1, |v2| ; encoding: [0x01,0x01,0x5b,0xd1,0x02,0x01,0x00,0x00] +v_fract_f32 v1, abs(v2) +// SICI: v_fract_f32_e64 v1, |v2| ; encoding: [0x01,0x01,0x40,0xd3,0x02,0x01,0x00,0x00] +// VI: v_fract_f32_e64 v1, |v2| ; encoding: [0x01,0x01,0x5b,0xd1,0x02,0x01,0x00,0x00] + v_fract_f32 v1, -|v2| // SICI: v_fract_f32_e64 v1, -|v2| ; encoding: [0x01,0x01,0x40,0xd3,0x02,0x01,0x00,0x20] // VI: v_fract_f32_e64 v1, -|v2| ; encoding: [0x01,0x01,0x5b,0xd1,0x02,0x01,0x00,0x20] +v_fract_f32 v1, -abs(v2) +// SICI: v_fract_f32_e64 v1, -|v2| ; encoding: [0x01,0x01,0x40,0xd3,0x02,0x01,0x00,0x20] +// VI: v_fract_f32_e64 v1, -|v2| ; encoding: [0x01,0x01,0x5b,0xd1,0x02,0x01,0x00,0x20] + v_fract_f32 v1, v2 clamp // SICI: v_fract_f32_e64 v1, v2 clamp ; encoding: [0x01,0x08,0x40,0xd3,0x02,0x01,0x00,0x00] // VI: v_fract_f32_e64 v1, v2 clamp ; encoding: [0x01,0x80,0x5b,0xd1,0x02,0x01,0x00,0x00] @@ -159,7 +179,7 @@ v_fract_f32 v1, v2 mul:2 // SICI: v_fract_f32_e64 v1, v2 mul:2 ; encoding: [0x01,0x00,0x40,0xd3,0x02,0x01,0x00,0x08] // VI: v_fract_f32_e64 v1, v2 mul:2 ; encoding: [0x01,0x00,0x5b,0xd1,0x02,0x01,0x00,0x08] -v_fract_f32 v1, v2, div:2 clamp +v_fract_f32 v1, v2, clamp div:2 // SICI: v_fract_f32_e64 v1, v2 clamp div:2 ; encoding: [0x01,0x08,0x40,0xd3,0x02,0x01,0x00,0x18] // VI: v_fract_f32_e64 v1, v2 clamp div:2 ; encoding: [0x01,0x80,0x5b,0xd1,0x02,0x01,0x00,0x18] @@ -182,6 +202,14 @@ v_cndmask_b32 v1, v3, v5, s[4:5] // SICI: v_cndmask_b32_e64 v1, v3, v5, s[4:5] ; encoding: [0x01,0x00,0x00,0xd2,0x03,0x0b,0x12,0x00] // VI: v_cndmask_b32_e64 v1, v3, v5, s[4:5] ; encoding: [0x01,0x00,0x00,0xd1,0x03,0x0b,0x12,0x00] +v_cndmask_b32_e64 v1, v3, v5, s[4:5] +// SICI: v_cndmask_b32_e64 v1, v3, v5, s[4:5] ; encoding: [0x01,0x00,0x00,0xd2,0x03,0x0b,0x12,0x00] +// VI: v_cndmask_b32_e64 v1, v3, v5, s[4:5] ; encoding: [0x01,0x00,0x00,0xd1,0x03,0x0b,0x12,0x00] + +v_cndmask_b32_e64 v1, v3, v5, vcc +// SICI: v_cndmask_b32_e64 v1, v3, v5, vcc ; encoding: [0x01,0x00,0x00,0xd2,0x03,0x0b,0xaa,0x01] +// VI: v_cndmask_b32_e64 v1, v3, v5, vcc ; encoding: [0x01,0x00,0x00,0xd1,0x03,0x0b,0xaa,0x01] + //TODO: readlane, writelane v_add_f32 v1, v3, s5 @@ -198,8 +226,7 @@ v_subrev_f32 v1, v3, s5 v_mac_legacy_f32 v1, v3, s5 // SICI: v_mac_legacy_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x0c,0xd2,0x03,0x0b,0x00,0x00] -// FIXME: The error message should be: error: instruction not supported on this GPU -// NOVI: error: invalid operand for instruction +// NOVI: error: instruction not supported on this GPU v_mul_legacy_f32 v1, v3, s5 // SICI: v_mul_legacy_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x0e,0xd2,0x03,0x0b,0x00,0x00] @@ -223,7 +250,110 @@ v_mad_legacy_f32 v2, v4, v6, v8 // SICI: v_mad_legacy_f32 v2, v4, v6, v8 ; encoding: [0x02,0x00,0x80,0xd2,0x04,0x0d,0x22,0x04] // VI: v_mad_legacy_f32 v2, v4, v6, v8 ; encoding: [0x02,0x00,0xc0,0xd1,0x04,0x0d,0x22,0x04] +v_add_f64 v[0:1], v[2:3], v[5:6] +// SICI: v_add_f64 v[0:1], v[2:3], v[5:6] ; encoding: [0x00,0x00,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], v[2:3], v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64_e64 v[0:1], v[2:3], v[5:6] +// SICI: v_add_f64 v[0:1], v[2:3], v[5:6] ; encoding: [0x00,0x00,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], v[2:3], v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64 v[0:1], -v[2:3], v[5:6] +// SICI: v_add_f64 v[0:1], -v[2:3], v[5:6] ; encoding: [0x00,0x00,0xc8,0xd2,0x02,0x0b,0x02,0x20] +// VI: v_add_f64 v[0:1], -v[2:3], v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x20] + +v_add_f64_e64 v[0:1], -v[2:3], v[5:6] +// SICI: v_add_f64 v[0:1], -v[2:3], v[5:6] ; encoding: [0x00,0x00,0xc8,0xd2,0x02,0x0b,0x02,0x20] +// VI: v_add_f64 v[0:1], -v[2:3], v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x20] + +v_add_f64 v[0:1], v[2:3], -v[5:6] +// SICI: v_add_f64 v[0:1], v[2:3], -v[5:6] ; encoding: [0x00,0x00,0xc8,0xd2,0x02,0x0b,0x02,0x40] +// VI: v_add_f64 v[0:1], v[2:3], -v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x40] + +v_add_f64_e64 v[0:1], v[2:3], -v[5:6] +// SICI: v_add_f64 v[0:1], v[2:3], -v[5:6] ; encoding: [0x00,0x00,0xc8,0xd2,0x02,0x0b,0x02,0x40] +// VI: v_add_f64 v[0:1], v[2:3], -v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x40] + +v_add_f64 v[0:1], |v[2:3]|, v[5:6] +// SICI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64 v[0:1], abs(v[2:3]), v[5:6] +// SICI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64_e64 v[0:1], |v[2:3]|, v[5:6] +// SICI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64_e64 v[0:1], abs(v[2:3]), v[5:6] +// SICI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64 v[0:1], v[2:3], |v[5:6]| +// SICI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64 v[0:1], v[2:3], abs(v[5:6]) +// SICI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64_e64 v[0:1], v[2:3], |v[5:6]| +// SICI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64_e64 v[0:1], v[2:3], abs(v[5:6]) +// SICI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0xc8,0xd2,0x02,0x0b,0x02,0x00] +// VI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0x80,0xd2,0x02,0x0b,0x02,0x00] + +v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 +// SICI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x0a,0xc8,0xd2,0x02,0x0b,0x02,0x30] +// VI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x82,0x80,0xd2,0x02,0x0b,0x02,0x30] + +v_add_f64 v[0:1], -v[2:3], abs(v[5:6]) clamp mul:4 +// SICI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x0a,0xc8,0xd2,0x02,0x0b,0x02,0x30] +// VI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x82,0x80,0xd2,0x02,0x0b,0x02,0x30] + +v_add_f64_e64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 +// SICI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x0a,0xc8,0xd2,0x02,0x0b,0x02,0x30] +// VI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x82,0x80,0xd2,0x02,0x0b,0x02,0x30] + +v_add_f64_e64 v[0:1], -v[2:3], abs(v[5:6]) clamp mul:4 +// SICI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x0a,0xc8,0xd2,0x02,0x0b,0x02,0x30] +// VI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x82,0x80,0xd2,0x02,0x0b,0x02,0x30] + +v_div_scale_f64 v[24:25], vcc, v[22:23], v[22:23], v[20:21] +// SICI: v_div_scale_f64 v[24:25], vcc, v[22:23], v[22:23], v[20:21] ; encoding: [0x18,0x6a,0xdc,0xd2,0x16,0x2d,0x52,0x04] +// VI: v_div_scale_f64 v[24:25], vcc, v[22:23], v[22:23], v[20:21] ; encoding: [0x18,0x6a,0xe1,0xd1,0x16,0x2d,0x52,0x04] + +v_div_scale_f64 v[24:25], s[10:11], v[22:23], v[20:21], v[20:21] +// SICI: v_div_scale_f64 v[24:25], s[10:11], v[22:23], v[20:21], v[20:21] ; encoding: [0x18,0x0a,0xdc,0xd2,0x16,0x29,0x52,0x04] +// VI: v_div_scale_f64 v[24:25], s[10:11], v[22:23], v[20:21], v[20:21] ; encoding: [0x18,0x0a,0xe1,0xd1,0x16,0x29,0x52,0x04] + +v_div_scale_f32 v24, vcc, v22, v22, v20 +// SICI: v_div_scale_f32 v24, vcc, v22, v22, v20 ; encoding: [0x18,0x6a,0xda,0xd2,0x16,0x2d,0x52,0x04] +// VI: v_div_scale_f32 v24, vcc, v22, v22, v20 ; encoding: [0x18,0x6a,0xe0,0xd1,0x16,0x2d,0x52,0x04] + +v_div_scale_f32 v24, vcc, s[10:11], v22, v20 +// SICI: v_div_scale_f32 v24, vcc, s[10:11], v22, v20 ; encoding: [0x18,0x6a,0xda,0xd2,0x0a,0x2c,0x52,0x04] +// VI: v_div_scale_f32 v24, vcc, s[10:11], v22, v20 ; encoding: [0x18,0x6a,0xe0,0xd1,0x0a,0x2c,0x52,0x04] + +v_div_scale_f32 v24, s[10:11], v22, v22, v20 +// SICI: v_div_scale_f32 v24, s[10:11], v22, v22, v20 ; encoding: [0x18,0x0a,0xda,0xd2,0x16,0x2d,0x52,0x04] +// VI: v_div_scale_f32 v24, s[10:11], v22, v22, v20 ; encoding: [0x18,0x0a,0xe0,0xd1,0x16,0x2d,0x52,0x04] +v_div_scale_f32 v24, vcc, v22, 1.0, v22 +// SICI: v_div_scale_f32 v24, vcc, v22, 1.0, v22 ; encoding: [0x18,0x6a,0xda,0xd2,0x16,0xe5,0x59,0x04] +// VI: v_div_scale_f32 v24, vcc, v22, 1.0, v22 ; encoding: [0x18,0x6a,0xe0,0xd1,0x16,0xe5,0x59,0x04] +v_div_scale_f32 v24, vcc, v22, v22, -2.0 +// SICI: v_div_scale_f32 v24, vcc, v22, v22, -2.0 ; encoding: [0x18,0x6a,0xda,0xd2,0x16,0x2d,0xd2,0x83] +// VI: v_div_scale_f32 v24, vcc, v22, v22, -2.0 ; encoding: [0x18,0x6a,0xe0,0xd1,0x16,0x2d,0xd2,0x83] +v_div_scale_f32 v24, vcc, v22, v22, 0xc0000000 +// SICI: v_div_scale_f32 v24, vcc, v22, v22, -2.0 ; encoding: [0x18,0x6a,0xda,0xd2,0x16,0x2d,0xd6,0x03] +// VI: v_div_scale_f32 v24, vcc, v22, v22, -2.0 ; encoding: [0x18,0x6a,0xe0,0xd1,0x16,0x2d,0xd6,0x03] +v_mad_f32 v9, 0.5, v5, -v8 +// SICI: v_mad_f32 v9, 0.5, v5, -v8 ; encoding: [0x09,0x00,0x82,0xd2,0xf0,0x0a,0x22,0x84] +// VI: v_mad_f32 v9, 0.5, v5, -v8 ; encoding: [0x09,0x00,0xc1,0xd1,0xf0,0x0a,0x22,0x84] diff --git a/test/MC/AMDGPU/vop_dpp.s b/test/MC/AMDGPU/vop_dpp.s new file mode 100644 index 000000000000..dec6153e0cc5 --- /dev/null +++ b/test/MC/AMDGPU/vop_dpp.s @@ -0,0 +1,494 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=CIVI --check-prefix=VI +// RUN: not llvm-mc -arch=amdgcn -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSI --check-prefix=NOSICI +// RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSI --check-prefix=NOSICI +// RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSICI + +//===----------------------------------------------------------------------===// +// Check dpp_ctrl values +//===----------------------------------------------------------------------===// + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 quad_perm:[0,2,1,1] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x58,0x00,0xff] +v_mov_b32 v0, v0 quad_perm:[0,2,1,1] + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 row_shl:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x01,0x01,0xff] +v_mov_b32 v0, v0 row_shl:1 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 row_shr:15 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x1f,0x01,0xff] +v_mov_b32 v0, v0 row_shr:0xf + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 row_ror:12 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x2c,0x01,0xff] +v_mov_b32 v0, v0 row_ror:0xc + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 wave_shl:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x30,0x01,0xff] +v_mov_b32 v0, v0 wave_shl:1 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 wave_rol:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x34,0x01,0xff] +v_mov_b32 v0, v0 wave_rol:1 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 wave_shr:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x38,0x01,0xff] +v_mov_b32 v0, v0 wave_shr:1 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 wave_ror:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x3c,0x01,0xff] +v_mov_b32 v0, v0 wave_ror:1 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 row_mirror row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x40,0x01,0xff] +v_mov_b32 v0, v0 row_mirror + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 row_half_mirror row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x41,0x01,0xff] +v_mov_b32 v0, v0 row_half_mirror + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 row_bcast:15 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x42,0x01,0xff] +v_mov_b32 v0, v0 row_bcast:15 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 row_bcast:31 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x43,0x01,0xff] +v_mov_b32 v0, v0 row_bcast:31 + +//===----------------------------------------------------------------------===// +// Check optional fields +//===----------------------------------------------------------------------===// + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xa1] +v_mov_b32 v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xaf] +v_mov_b32 v0, v0 quad_perm:[1,3,0,1] row_mask:0xa + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xf bank_mask:0x1 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xf1] +v_mov_b32 v0, v0 quad_perm:[1,3,0,1] bank_mask:0x1 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xf bank_mask:0xf bound_ctrl:0 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xff] +v_mov_b32 v0, v0 quad_perm:[1,3,0,1] bound_ctrl:0 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0x1 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xa1] +v_mov_b32 v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0x1 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0xf bound_ctrl:0 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xaf] +v_mov_b32 v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bound_ctrl:0 + +// NOSICI: error: +// VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xf bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xf1] +v_mov_b32 v0, v0 quad_perm:[1,3,0,1] bank_mask:0x1 bound_ctrl:0 + +//===----------------------------------------------------------------------===// +// Check modifiers +//===----------------------------------------------------------------------===// + +// NOSICI: error: +// VI: v_add_f32_dpp v0, -v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x19,0xa1] +v_add_f32 v0, -v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_add_f32_dpp v0, v0, |v0| row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x89,0xa1] +v_add_f32 v0, v0, |v0| row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_add_f32_dpp v0, -v0, |v0| row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x99,0xa1] +v_add_f32 v0, -v0, |v0| row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_add_f32_dpp v0, |v0|, -v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x69,0xa1] +v_add_f32 v0, |v0|, -v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +//===----------------------------------------------------------------------===// +// Check VOP1 opcodes +//===----------------------------------------------------------------------===// + +// NOSICI: error: +// VI: v_nop row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x7e,0x00,0x01,0x09,0xa1] +v_nop row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_u32_f32_dpp v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x0e,0x00,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_u32_f32 v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_fract_f32_dpp v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x36,0x00,0x7e,0x00,0x01,0x09,0xa1] +v_fract_f32 v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_sin_f32_dpp v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x52,0x00,0x7e,0x00,0x01,0x09,0xa1] +v_sin_f32 v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mov_b32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x02,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_mov_b32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f32_i32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x0a,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f32_i32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f32_u32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x0c,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f32_u32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_i32_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x10,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_i32_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f16_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x14,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f16_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f32_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x16,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f32_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_rpi_i32_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x18,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_rpi_i32_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_flr_i32_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x1a,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_flr_i32_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_off_f32_i4_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x1c,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_off_f32_i4 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f32_ubyte0_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x22,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f32_ubyte0 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f32_ubyte1_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x24,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f32_ubyte1 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f32_ubyte2_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x26,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f32_ubyte2 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f32_ubyte3_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x28,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f32_ubyte3 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_trunc_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x38,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_trunc_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_ceil_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x3a,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_ceil_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_rndne_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x3c,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_rndne_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_floor_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x3e,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_floor_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_exp_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x40,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_exp_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_log_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x42,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_log_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_rcp_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x44,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_rcp_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_rcp_iflag_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x46,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_rcp_iflag_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_rsq_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x48,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_rsq_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_sqrt_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x4e,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_sqrt_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cos_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x54,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cos_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_not_b32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x56,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_not_b32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_bfrev_b32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x58,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_bfrev_b32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_ffbh_u32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x5a,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_ffbh_u32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_ffbl_b32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x5c,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_ffbl_b32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_ffbh_i32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x5e,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_ffbh_i32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_frexp_exp_i32_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x66,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_frexp_exp_i32_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_frexp_mant_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x68,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_frexp_mant_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_log_legacy_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x98,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_log_legacy_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_exp_legacy_f32_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x96,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_exp_legacy_f32 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f16_u16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x72,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f16_u16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_f16_i16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x74,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_f16_i16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_u16_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x76,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_u16_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cvt_i16_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x78,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cvt_i16_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_rcp_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x7a,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_rcp_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_sqrt_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x7c,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_sqrt_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_rsq_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x7e,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_rsq_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_log_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x80,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_log_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_exp_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x82,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_exp_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_frexp_mant_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x84,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_frexp_mant_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_frexp_exp_i16_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x86,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_frexp_exp_i16_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_floor_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x88,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_floor_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_ceil_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x8a,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_ceil_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_trunc_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x8c,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_trunc_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_rndne_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x8e,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_rndne_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_fract_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x90,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_fract_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_sin_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x92,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_sin_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_cos_f16_dpp v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x94,0x02,0x7e,0x00,0x01,0x09,0xa1] +v_cos_f16 v1, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +//===----------------------------------------------------------------------===// +// Check VOP2 opcodes +//===----------------------------------------------------------------------===// +// ToDo: VOP2bInst instructions: v_add_u32, v_sub_u32 ... (vcc and ApplyMnemonic in AsmMatcherEmitter.cpp) +// ToDo: v_mac_f32 (VOP_MAC) + +// NOSICI: error: +// VI: v_add_f32_dpp v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x09,0xa1] +v_add_f32 v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_min_f32_dpp v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x14,0x00,0x01,0x09,0xa1] +v_min_f32 v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_and_b32_dpp v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x26,0x00,0x01,0x09,0xa1] +v_and_b32 v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mul_i32_i24_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x0c,0x02,0x01,0x09,0xa1] +v_mul_i32_i24 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_sub_f32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x04,0x02,0x01,0x09,0xa1] +v_sub_f32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_subrev_f32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x06,0x02,0x01,0x09,0xa1] +v_subrev_f32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mul_f32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x0a,0x02,0x01,0x09,0xa1] +v_mul_f32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mul_hi_i32_i24_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x0e,0x02,0x01,0x09,0xa1] +v_mul_hi_i32_i24 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mul_u32_u24_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x10,0x02,0x01,0x09,0xa1] +v_mul_u32_u24 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mul_hi_u32_u24_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x12,0x02,0x01,0x09,0xa1] +v_mul_hi_u32_u24 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_max_f32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x16,0x02,0x01,0x09,0xa1] +v_max_f32 v1, v2 v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_min_i32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x18,0x02,0x01,0x09,0xa1] +v_min_i32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_max_i32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x1a,0x02,0x01,0x09,0xa1] +v_max_i32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_min_u32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x1c,0x02,0x01,0x09,0xa1] +v_min_u32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_max_u32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x1e,0x02,0x01,0x09,0xa1] +v_max_u32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_lshrrev_b32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x20,0x02,0x01,0x09,0xa1] +v_lshrrev_b32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_ashrrev_i32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x22,0x02,0x01,0x09,0xa1] +v_ashrrev_i32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_lshlrev_b32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x24,0x02,0x01,0x09,0xa1] +v_lshlrev_b32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_or_b32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x28,0x02,0x01,0x09,0xa1] +v_or_b32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_xor_b32_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x2a,0x02,0x01,0x09,0xa1] +v_xor_b32 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_add_f16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x3e,0x02,0x01,0x09,0xa1] +v_add_f16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_sub_f16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x40,0x02,0x01,0x09,0xa1] +v_sub_f16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_subrev_f16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x42,0x02,0x01,0x09,0xa1] +v_subrev_f16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mul_f16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x44,0x02,0x01,0x09,0xa1] +v_mul_f16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mac_f16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x46,0x02,0x01,0x09,0xa1] +v_mac_f16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_add_u16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x4c,0x02,0x01,0x09,0xa1] +v_add_u16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_sub_u16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x4e,0x02,0x01,0x09,0xa1] +v_sub_u16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_subrev_u16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x50,0x02,0x01,0x09,0xa1] +v_subrev_u16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_mul_lo_u16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x52,0x02,0x01,0x09,0xa1] +v_mul_lo_u16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_lshlrev_b16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x54,0x02,0x01,0x09,0xa1] +v_lshlrev_b16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_lshrrev_b16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x56,0x02,0x01,0x09,0xa1] +v_lshrrev_b16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_ashrrev_b16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x58,0x02,0x01,0x09,0xa1] +v_ashrrev_b16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_max_f16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x5a,0x02,0x01,0x09,0xa1] +v_max_f16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_min_f16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x5c,0x02,0x01,0x09,0xa1] +v_min_f16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_max_u16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x5e,0x02,0x01,0x09,0xa1] +v_max_u16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_max_i16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x60,0x02,0x01,0x09,0xa1] +v_max_i16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_min_u16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x62,0x02,0x01,0x09,0xa1] +v_min_u16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_min_i16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x64,0x02,0x01,0x09,0xa1] +v_min_i16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 + +// NOSICI: error: +// VI: v_ldexp_f16_dpp v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x06,0x02,0x66,0x02,0x01,0x09,0xa1] +v_ldexp_f16 v1, v2, v3 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 diff --git a/test/MC/AMDGPU/vop_sdwa.s b/test/MC/AMDGPU/vop_sdwa.s new file mode 100644 index 000000000000..1b673482517a --- /dev/null +++ b/test/MC/AMDGPU/vop_sdwa.s @@ -0,0 +1,561 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=CIVI --check-prefix=VI +// RUN: not llvm-mc -arch=amdgcn -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSI --check-prefix=NOSICI +// RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSI --check-prefix=NOSICI +// RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSICI + +// ToDo: VOPC +// ToDo: VOP2b (see vop_dpp.s) +// ToDo: V_MAC_F32 (see vop_dpp.s) +// ToDo: sext() +// ToDo: intrinsics + +//---------------------------------------------------------------------------// +// Check SDWA operands +//---------------------------------------------------------------------------// + +// NOSICI: error: +// VI: v_mov_b32_sdwa v1, v2 dst_sel:BYTE_0 dst_unused:UNUSED_PRESERVE src0_sel:DWORD ; encoding: [0xf9,0x02,0x02,0x7e,0x02,0x10,0x06,0x06] +v_mov_b32 v1, v2 dst_sel:BYTE_0 dst_unused:UNUSED_PRESERVE src0_sel:DWORD + +// NOSICI: error: +// VI: v_mov_b32_sdwa v3, v4 dst_sel:BYTE_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 ; encoding: [0xf9,0x02,0x06,0x7e,0x04,0x11,0x05,0x06] +v_mov_b32 v3, v4 dst_sel:BYTE_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_mov_b32_sdwa v15, v99 dst_sel:BYTE_2 dst_unused:UNUSED_SEXT src0_sel:WORD_0 ; encoding: [0xf9,0x02,0x1e,0x7e,0x63,0x0a,0x04,0x06] +v_mov_b32 v15, v99 dst_sel:BYTE_2 dst_unused:UNUSED_SEXT src0_sel:WORD_0 + +// NOSICI: error: +// VI: v_min_u32_sdwa v194, v13, v1 dst_sel:BYTE_3 dst_unused:UNUSED_SEXT src0_sel:BYTE_3 src1_sel:BYTE_2 ; encoding: [0xf9,0x02,0x84,0x1d,0x0d,0x0b,0x03,0x02] +v_min_u32 v194, v13, v1 dst_sel:BYTE_3 dst_unused:UNUSED_SEXT src0_sel:BYTE_3 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_min_u32_sdwa v255, v4, v1 dst_sel:WORD_0 dst_unused:UNUSED_PAD src0_sel:BYTE_2 src1_sel:WORD_1 ; encoding: [0xf9,0x02,0xfe,0x1d,0x04,0x04,0x02,0x05] +v_min_u32 v255, v4, v1 dst_sel:WORD_0 dst_unused:UNUSED_PAD src0_sel:BYTE_2 src1_sel:WORD_1 + +// NOSICI: error: +// VI: v_min_u32_sdwa v200, v200, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_1 src1_sel:DWORD ; encoding: [0xf9,0x02,0x90,0x1d,0xc8,0x05,0x01,0x06] +v_min_u32 v200, v200, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_1 src1_sel:DWORD + +// NOSICI: error: +// VI: v_min_u32_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD ; encoding: [0xf9,0x02,0x02,0x1c,0x01,0x06,0x00,0x06] +v_min_u32 v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD +//---------------------------------------------------------------------------// +// Check optional operands +//---------------------------------------------------------------------------// + +// NOSICI: error: +// VI: v_cvt_u32_f32_sdwa v0, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD ; encoding: [0xf9,0x0e,0x00,0x7e,0x00,0x36,0x06,0x06] +v_cvt_u32_f32 v0, v0 clamp dst_sel:DWORD + +// NOSICI: error: +// VI: v_fract_f32_sdwa v0, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD ; encoding: [0xf9,0x36,0x00,0x7e,0x00,0x26,0x06,0x06] +v_fract_f32 v0, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PAD + +// NOSICI: error: +// VI: v_sin_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x05,0x06] +v_sin_f32 v0, v0 dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_mov_b32_sdwa v1, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 ; encoding: [0xf9,0x02,0x02,0x7e,0x00,0x36,0x05,0x06] +v_mov_b32 v1, v0 clamp src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_trunc_f32_sdwa v1, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 ; encoding: [0xf9,0x38,0x02,0x7e,0x00,0x36,0x05,0x06] +v_trunc_f32 v1, v0 clamp dst_sel:DWORD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_mov_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD ; encoding: [0xf9,0x02,0x02,0x7e,0x00,0x16,0x06,0x06] +v_mov_b32_sdwa v1, v0 + +// NOSICI: error: +// VI: v_add_f32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD ; encoding: [0xf9,0x00,0x00,0x02,0x00,0x06,0x05,0x06] +v_add_f32_sdwa v0, v0, v0 dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_min_f32_sdwa v0, v0, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x14,0x00,0x36,0x06,0x02] +v_min_f32 v0, v0, v0 clamp dst_sel:DWORD src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_and_b32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x26,0x00,0x06,0x06,0x02] +v_and_b32 v0, v0, v0 dst_unused:UNUSED_PAD src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mul_i32_i24_sdwa v1, v2, v3 clamp dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD src1_sel:DWORD ; encoding: [0xf9,0x06,0x02,0x0c,0x02,0x36,0x06,0x06] +v_mul_i32_i24_sdwa v1, v2, v3 clamp + +//===----------------------------------------------------------------------===// +// Check modifiers +//===----------------------------------------------------------------------===// + +// NOSICI: error: +// VI: v_fract_f32_sdwa v0, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x36,0x00,0x7e,0x00,0x06,0x25,0x06] +v_fract_f32 v0, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_sin_f32_sdwa v0, -|v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x35,0x06] +v_sin_f32 v0, -abs(v0) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_add_f32_sdwa v0, -|v0|, -v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x02,0x00,0x06,0x35,0x12] +v_add_f32 v0, -|v0|, -v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_min_f32_sdwa v0, |v0|, -v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x14,0x00,0x06,0x25,0x12] +v_min_f32 v0, abs(v0), -v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mov_b32_sdwa v1, sext(v0) dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD ; encoding: [0xf9,0x02,0x02,0x7e,0x00,0x16,0x0e,0x06] +v_mov_b32_sdwa v1, sext(v0) + +// NOSICI: error: +// VI: v_and_b32_sdwa v0, sext(v0), sext(v0) dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x26,0x00,0x06,0x0e,0x0a] +v_and_b32 v0, sext(v0), sext(v0) dst_unused:UNUSED_PAD src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_cmp_class_f32 vcc, -v1, sext(v2) src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x20,0x7c,0x01,0x16,0x12,0x0c] +v_cmp_class_f32 vcc, -v1, sext(v2) src0_sel:BYTE_2 src1_sel:WORD_0 + +//===----------------------------------------------------------------------===// +// Check VOP1 opcodes +//===----------------------------------------------------------------------===// + +// NOSICI: error: +// VI: v_nop ; encoding: [0xf9,0x00,0x00,0x7e,0x00,0x16,0x06,0x06] +v_nop_sdwa + +// NOSICI: error: +// VI: v_cvt_u32_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x0e,0x00,0x7e,0x00,0x06,0x05,0x06] +v_cvt_u32_f32 v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_fract_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x36,0x00,0x7e,0x00,0x06,0x05,0x06] +v_fract_f32 v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_sin_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x05,0x06] +v_sin_f32 v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_mov_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x02,0x02,0x7e,0x00,0x06,0x05,0x06] +v_mov_b32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f32_i32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x0a,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f32_i32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f32_u32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x0c,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f32_u32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_i32_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x10,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_i32_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f16_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x14,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f16_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f32_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x16,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f32_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_rpi_i32_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x18,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_rpi_i32_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_flr_i32_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x1a,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_flr_i32_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_off_f32_i4_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x1c,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_off_f32_i4 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f32_ubyte0_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x22,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f32_ubyte0 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f32_ubyte1_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x24,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f32_ubyte1 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f32_ubyte2_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x26,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f32_ubyte2 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f32_ubyte3_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x28,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f32_ubyte3 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_trunc_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x38,0x02,0x7e,0x00,0x06,0x05,0x06] +v_trunc_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_ceil_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x3a,0x02,0x7e,0x00,0x06,0x05,0x06] +v_ceil_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_rndne_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x3c,0x02,0x7e,0x00,0x06,0x05,0x06] +v_rndne_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_floor_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x3e,0x02,0x7e,0x00,0x06,0x05,0x06] +v_floor_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_exp_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x40,0x02,0x7e,0x00,0x06,0x05,0x06] +v_exp_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_log_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x42,0x02,0x7e,0x00,0x06,0x05,0x06] +v_log_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_rcp_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x44,0x02,0x7e,0x00,0x06,0x05,0x06] +v_rcp_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_rcp_iflag_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x46,0x02,0x7e,0x00,0x06,0x05,0x06] +v_rcp_iflag_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_rsq_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x48,0x02,0x7e,0x00,0x06,0x05,0x06] +v_rsq_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_sqrt_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x4e,0x02,0x7e,0x00,0x06,0x05,0x06] +v_sqrt_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cos_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x54,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cos_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_not_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x56,0x02,0x7e,0x00,0x06,0x05,0x06] +v_not_b32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_bfrev_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x58,0x02,0x7e,0x00,0x06,0x05,0x06] +v_bfrev_b32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_ffbh_u32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x5a,0x02,0x7e,0x00,0x06,0x05,0x06] +v_ffbh_u32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_ffbl_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x5c,0x02,0x7e,0x00,0x06,0x05,0x06] +v_ffbl_b32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_ffbh_i32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x5e,0x02,0x7e,0x00,0x06,0x05,0x06] +v_ffbh_i32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_frexp_exp_i32_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x66,0x02,0x7e,0x00,0x06,0x05,0x06] +v_frexp_exp_i32_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_frexp_mant_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x68,0x02,0x7e,0x00,0x06,0x05,0x06] +v_frexp_mant_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_log_legacy_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x98,0x02,0x7e,0x00,0x06,0x05,0x06] +v_log_legacy_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_exp_legacy_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x96,0x02,0x7e,0x00,0x06,0x05,0x06] +v_exp_legacy_f32 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f16_u16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x72,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f16_u16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_f16_i16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x74,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_f16_i16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_u16_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x76,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_u16_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cvt_i16_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x78,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cvt_i16_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_rcp_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x7a,0x02,0x7e,0x00,0x06,0x05,0x06] +v_rcp_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_sqrt_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x7c,0x02,0x7e,0x00,0x06,0x05,0x06] +v_sqrt_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_rsq_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x7e,0x02,0x7e,0x00,0x06,0x05,0x06] +v_rsq_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_log_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x80,0x02,0x7e,0x00,0x06,0x05,0x06] +v_log_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_exp_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x82,0x02,0x7e,0x00,0x06,0x05,0x06] +v_exp_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_frexp_mant_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x84,0x02,0x7e,0x00,0x06,0x05,0x06] +v_frexp_mant_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_frexp_exp_i16_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x86,0x02,0x7e,0x00,0x06,0x05,0x06] +v_frexp_exp_i16_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_floor_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x88,0x02,0x7e,0x00,0x06,0x05,0x06] +v_floor_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_ceil_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x8a,0x02,0x7e,0x00,0x06,0x05,0x06] +v_ceil_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_trunc_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x8c,0x02,0x7e,0x00,0x06,0x05,0x06] +v_trunc_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_rndne_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x8e,0x02,0x7e,0x00,0x06,0x05,0x06] +v_rndne_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_fract_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x90,0x02,0x7e,0x00,0x06,0x05,0x06] +v_fract_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_sin_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x92,0x02,0x7e,0x00,0x06,0x05,0x06] +v_sin_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +// NOSICI: error: +// VI: v_cos_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x94,0x02,0x7e,0x00,0x06,0x05,0x06] +v_cos_f16 v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 + +//===----------------------------------------------------------------------===// +// Check VOP2 opcodes +//===----------------------------------------------------------------------===// + +// NOSICI: error: +// VI: v_add_f32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x02,0x00,0x06,0x05,0x02] +v_add_f32 v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_min_f32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x14,0x00,0x06,0x05,0x02] +v_min_f32 v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_and_b32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x26,0x00,0x06,0x05,0x02] +v_and_b32 v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mul_i32_i24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x0c,0x02,0x06,0x05,0x02] +v_mul_i32_i24 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_sub_f32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x04,0x02,0x06,0x05,0x02] +v_sub_f32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_subrev_f32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x06,0x02,0x06,0x05,0x02] +v_subrev_f32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mul_f32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x0a,0x02,0x06,0x05,0x02] +v_mul_f32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mul_hi_i32_i24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x0e,0x02,0x06,0x05,0x02] +v_mul_hi_i32_i24 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mul_u32_u24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x10,0x02,0x06,0x05,0x02] +v_mul_u32_u24 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mul_hi_u32_u24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x12,0x02,0x06,0x05,0x02] +v_mul_hi_u32_u24 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_max_f32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x16,0x02,0x06,0x05,0x02] +v_max_f32 v1, v2 v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_min_i32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x18,0x02,0x06,0x05,0x02] +v_min_i32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_max_i32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x1a,0x02,0x06,0x05,0x02] +v_max_i32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_min_u32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x1c,0x02,0x06,0x05,0x02] +v_min_u32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_max_u32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x1e,0x02,0x06,0x05,0x02] +v_max_u32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_lshrrev_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x20,0x02,0x06,0x05,0x02] +v_lshrrev_b32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_ashrrev_i32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x22,0x02,0x06,0x05,0x02] +v_ashrrev_i32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_lshlrev_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x24,0x02,0x06,0x05,0x02] +v_lshlrev_b32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_or_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x28,0x02,0x06,0x05,0x02] +v_or_b32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_xor_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x2a,0x02,0x06,0x05,0x02] +v_xor_b32 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_add_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x3e,0x02,0x06,0x05,0x02] +v_add_f16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_sub_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x40,0x02,0x06,0x05,0x02] +v_sub_f16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_subrev_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x42,0x02,0x06,0x05,0x02] +v_subrev_f16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mul_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x44,0x02,0x06,0x05,0x02] +v_mul_f16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mac_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x46,0x02,0x06,0x05,0x02] +v_mac_f16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_add_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x4c,0x02,0x06,0x05,0x02] +v_add_u16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_sub_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x4e,0x02,0x06,0x05,0x02] +v_sub_u16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_subrev_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x50,0x02,0x06,0x05,0x02] +v_subrev_u16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_mul_lo_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x52,0x02,0x06,0x05,0x02] +v_mul_lo_u16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_lshlrev_b16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x54,0x02,0x06,0x05,0x02] +v_lshlrev_b16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_lshrrev_b16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x56,0x02,0x06,0x05,0x02] +v_lshrrev_b16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_ashrrev_b16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x58,0x02,0x06,0x05,0x02] +v_ashrrev_b16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_max_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x5a,0x02,0x06,0x05,0x02] +v_max_f16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_min_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x5c,0x02,0x06,0x05,0x02] +v_min_f16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_max_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x5e,0x02,0x06,0x05,0x02] +v_max_u16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_max_i16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x60,0x02,0x06,0x05,0x02] +v_max_i16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_min_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x62,0x02,0x06,0x05,0x02] +v_min_u16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_min_i16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x64,0x02,0x06,0x05,0x02] +v_min_i16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +// NOSICI: error: +// VI: v_ldexp_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x66,0x02,0x06,0x05,0x02] +v_ldexp_f16 v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 + +//===----------------------------------------------------------------------===// +// Check VOPC opcodes +//===----------------------------------------------------------------------===// + +// NOSICI: error: +// VI: v_cmp_eq_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x84,0x7c,0x01,0x16,0x02,0x04] +v_cmp_eq_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmp_nle_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x98,0x7c,0x01,0x16,0x02,0x04] +v_cmp_nle_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmpx_gt_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0xa8,0x7c,0x01,0x16,0x02,0x04] +v_cmpx_gt_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmpx_nlt_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0xbc,0x7c,0x01,0x16,0x02,0x04] +v_cmpx_nlt_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmp_lt_i32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x82,0x7d,0x01,0x16,0x02,0x04] +v_cmp_lt_i32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmp_t_i32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x8e,0x7d,0x01,0x16,0x02,0x04] +v_cmp_t_i32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmpx_eq_i32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0xa4,0x7d,0x01,0x16,0x02,0x04] +v_cmpx_eq_i32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmpx_ne_i32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0xaa,0x7d,0x01,0x16,0x02,0x04] +v_cmpx_ne_i32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmp_f_u32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x90,0x7d,0x01,0x16,0x02,0x04] +v_cmp_f_u32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmp_gt_u32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x98,0x7d,0x01,0x16,0x02,0x04] +v_cmp_gt_u32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmpx_le_u32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0xb6,0x7d,0x01,0x16,0x02,0x04] +v_cmpx_le_u32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmpx_ne_u32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0xba,0x7d,0x01,0x16,0x02,0x04] +v_cmpx_ne_u32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmp_class_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x20,0x7c,0x01,0x16,0x02,0x04] +v_cmp_class_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 + +// NOSICI: error: +// VI: v_cmpx_class_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 ; encoding: [0xf9,0x04,0x22,0x7c,0x01,0x16,0x02,0x04] +v_cmpx_class_f32 vcc, v1, v2 src0_sel:BYTE_2 src1_sel:WORD_0 diff --git a/test/MC/ARM/aligned-blx.s b/test/MC/ARM/aligned-blx.s new file mode 100644 index 000000000000..562eaac04677 --- /dev/null +++ b/test/MC/ARM/aligned-blx.s @@ -0,0 +1,34 @@ +@ RUN: llvm-mc -triple thumbv7-apple-ios -filetype=obj %s -o %t +@ RUN: llvm-objdump -macho -d %t | FileCheck %s + + @ Size: 2 bytes + .thumb_func _f1 + .thumb + .globl _f1 +_f1: + bx lr + + @ A properly aligned ARM function + .globl _aligned + .p2align 2 + .arm +_aligned: + bx lr + + @ Align this Thumb function so we can predict the outcome of + @ "Align(PC, 4)" during blx operation. + .thumb_func _test + .thumb + .p2align 2 + .globl _test +_test: + blx _elsewhere + blx _aligned @ PC=0 (mod 4) + blx _aligned @ PC=0 (mod 4) + movs r0, r0 + blx _aligned @ PC=2 (mod 4) + +@ CHECK: blx _elsewhere +@ CHECK: ff f7 fa ef blx _aligned +@ CHECK: ff f7 f8 ef blx _aligned +@ CHECK: ff f7 f6 ef blx _aligned diff --git a/test/MC/ARM/arm-branch-errors.s b/test/MC/ARM/arm-branch-errors.s new file mode 100644 index 000000000000..0bef3b165a56 --- /dev/null +++ b/test/MC/ARM/arm-branch-errors.s @@ -0,0 +1,16 @@ +@ RUN: not llvm-mc -triple=armv7-apple-darwin < %s 2>&1 | FileCheck %s + +@------------------------------------------------------------------------------ +@ Branch targets destined for ARM mode must == 0 (mod 4), otherwise (mod 2). +@------------------------------------------------------------------------------ + + b #2 + bl #2 + beq #2 + +@ CHECK: error: instruction requires: thumb +@ CHECK: b #2 +@ CHECK: error: instruction requires: thumb +@ CHECK: bl #2 +@ CHECK: error: instruction requires: thumb +@ CHECK: beq #2 diff --git a/test/MC/ARM/arm-branches.s b/test/MC/ARM/arm-branches.s new file mode 100644 index 000000000000..4a451114d888 --- /dev/null +++ b/test/MC/ARM/arm-branches.s @@ -0,0 +1,15 @@ +@ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s + +@------------------------------------------------------------------------------ +@ Branch targets destined for ARM mode must == 0 (mod 4), otherwise (mod 2). +@------------------------------------------------------------------------------ + + b #4 + bl #4 + beq #4 + blx #2 + +@ CHECK: b #4 @ encoding: [0x01,0x00,0x00,0xea] +@ CHECK: bl #4 @ encoding: [0x01,0x00,0x00,0xeb] +@ CHECK: beq #4 @ encoding: [0x01,0x00,0x00,0x0a] +@ CHECK: blx #2 @ encoding: [0x00,0x00,0x00,0xfb] diff --git a/test/MC/ARM/arm11-hint-instr.s b/test/MC/ARM/arm11-hint-instr.s index 2c0fef4adf73..4193a686870a 100644 --- a/test/MC/ARM/arm11-hint-instr.s +++ b/test/MC/ARM/arm11-hint-instr.s @@ -65,7 +65,7 @@ @ CHECK-THUMB: wfe @ encoding: [0x20,0xbf] @ CHECK-THUMB: wfi @ encoding: [0x30,0xbf] @ CHECK-THUMB: sev @ encoding: [0x40,0xbf] -@ CHECK-ERROR-THUMB: error: instruction requires: armv7 +@ CHECK-ERROR-THUMB: error: instruction requires: v7 clrex @ CHECK-ERROR-THUMB: clrex @ CHECK-ERROR-THUMB: ^ @@ -77,6 +77,6 @@ @ CHECK-V6M: wfe @ encoding: [0x20,0xbf] @ CHECK-V6M: wfi @ encoding: [0x30,0xbf] @ CHECK-V6M: sev @ encoding: [0x40,0xbf] -@ CHECK-ERROR-V6M: error: instruction requires: armv7 +@ CHECK-ERROR-V6M: error: instruction requires: v7 clrex @ CHECK-ERROR-V6M: clrex @ CHECK-ERROR-V6M: ^ diff --git a/test/MC/ARM/arm_fixups.s b/test/MC/ARM/arm_fixups.s index 1f56e1285245..a7655092a7a5 100644 --- a/test/MC/ARM/arm_fixups.s +++ b/test/MC/ARM/arm_fixups.s @@ -32,3 +32,10 @@ @ CHECK: @ fixup A - offset: 0, value: fred, kind: fixup_arm_movw_lo16 @ CHECK-BE: movw r2, :lower16:fred @ encoding: [0xe3,0b0000AAAA,0x20'A',A] @ CHECK-BE: @ fixup A - offset: 0, value: fred, kind: fixup_arm_movw_lo16 + + add r0, r0, #(L1 - L2) + +@ CHECK: add r0, r0, #L1-L2 @ encoding: [A,0b0000AAAA,0x80,0xe2] +@ CHECK: @ fixup A - offset: 0, value: L1-L2, kind: fixup_arm_mod_imm +@ CHECK-BE: add r0, r0, #L1-L2 @ encoding: [0xe2,0x80,0b0000AAAA,A] +@ CHECK-BE: @ fixup A - offset: 0, value: L1-L2, kind: fixup_arm_mod_imm diff --git a/test/MC/ARM/basic-arm-instructions.s b/test/MC/ARM/basic-arm-instructions.s index 99a3cfa7b29e..da68a6cfd104 100644 --- a/test/MC/ARM/basic-arm-instructions.s +++ b/test/MC/ARM/basic-arm-instructions.s @@ -1749,7 +1749,7 @@ Lforward: @ CHECK: pkhbt r2, r2, r3 @ encoding: [0x13,0x20,0x82,0xe6] @ CHECK: pkhbt r2, r2, r3, lsl #15 @ encoding: [0x93,0x27,0x82,0xe6] -@ CHECK: pkhbt r2, r2, r3 @ encoding: [0x13,0x20,0x82,0xe6] +@ CHECK: pkhbt r2, r3, r2 @ encoding: [0x12,0x20,0x83,0xe6] @ CHECK: pkhtb r2, r2, r3, asr #31 @ encoding: [0xd3,0x2f,0x82,0xe6] @ CHECK: pkhtb r2, r2, r3, asr #15 @ encoding: [0xd3,0x27,0x82,0xe6] diff --git a/test/MC/ARM/basic-thumb2-instructions.s b/test/MC/ARM/basic-thumb2-instructions.s index c289325d6d12..4dfa6d35f6ab 100644 --- a/test/MC/ARM/basic-thumb2-instructions.s +++ b/test/MC/ARM/basic-thumb2-instructions.s @@ -1731,7 +1731,7 @@ _func: @ CHECK: pkhbt r2, r2, r3 @ encoding: [0xc2,0xea,0x03,0x02] @ CHECK: pkhbt r2, r2, r3, lsl #15 @ encoding: [0xc2,0xea,0xc3,0x32] -@ CHECK: pkhbt r2, r2, r3 @ encoding: [0xc2,0xea,0x03,0x02] +@ CHECK: pkhbt r2, r3, r2 @ encoding: [0xc3,0xea,0x02,0x02] @ CHECK: pkhtb r2, r2, r3, asr #31 @ encoding: [0xc2,0xea,0xe3,0x72] @ CHECK: pkhtb r2, r2, r3, asr #15 @ encoding: [0xc2,0xea,0xe3,0x32] diff --git a/test/MC/ARM/coff-debugging-secrel.ll b/test/MC/ARM/coff-debugging-secrel.ll index a950ba2b6896..1d234919f120 100644 --- a/test/MC/ARM/coff-debugging-secrel.ll +++ b/test/MC/ARM/coff-debugging-secrel.ll @@ -18,14 +18,13 @@ entry: !llvm.module.flags = !{!9, !10} !0 = !DILocation(line: 1, scope: !1) -!1 = distinct !DISubprogram(name: "function", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 1, file: !2, scope: !3, type: !4, variables: !6) +!1 = distinct !DISubprogram(name: "function", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !7, scopeLine: 1, file: !2, scope: !3, type: !4, variables: !6) !2 = !DIFile(filename: "/Users/compnerd/work/llvm/test/MC/ARM/reduced.c", directory: "/Users/compnerd/work/llvm") !3 = !DIFile(filename: "/Users/compnerd/work/llvm/test/MC/ARM/reduced.c", directory: "/Users/compnerd/work/llvm") !4 = !DISubroutineType(types: !5) !5 = !{null} !6 = !{} -!7 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5.0", isOptimized: false, emissionKind: 1, file: !2, enums: !6, retainedTypes: !6, subprograms: !8, globals: !6, imports: !6) -!8 = !{!1} +!7 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5.0", isOptimized: false, emissionKind: FullDebug, file: !2, enums: !6, retainedTypes: !6, globals: !6, imports: !6) !9 = !{i32 2, !"Dwarf Version", i32 4} !10 = !{i32 1, !"Debug Info Version", i32 3} diff --git a/test/MC/ARM/directive-align.s b/test/MC/ARM/directive-align.s index d3e39cb1c563..34fd96d6cc6a 100644 --- a/test/MC/ARM/directive-align.s +++ b/test/MC/ARM/directive-align.s @@ -8,7 +8,7 @@ unaligned: @ CHECK-LABEL: unaligned @ CHECK-NEXT: .byte 1 -@ CHECK-NEXT: .align 2 +@ CHECK-NEXT: .p2align 2 aligned: .long 0x1d10c1e5 @@ -16,7 +16,7 @@ aligned: @ CHECK-LABEL: aligned @ CHECK-NEXT: .long 487637477 -@ CHECK-NEXT: .align 2 +@ CHECK-NEXT: .p2align 2 trailer: .long 0xd1ab011c @@ -24,5 +24,5 @@ trailer: @ CHECK-LABEL: trailer @ CHECK-NEXT: .long 3517645084 -@ CHECK-NEXT: .align 2 +@ CHECK-NEXT: .p2align 2 diff --git a/test/MC/ARM/directive-arch-mode-switch.s b/test/MC/ARM/directive-arch-mode-switch.s new file mode 100644 index 000000000000..abb88a60163f --- /dev/null +++ b/test/MC/ARM/directive-arch-mode-switch.s @@ -0,0 +1,52 @@ +@ RUN: llvm-mc -triple arm-none-eabi -filetype asm %s 2>%t | FileCheck %s +@ RUN: FileCheck %s <%t --check-prefix=STDERR + +@ Start in arm mode + .arm +@ CHECK: .code 32 + +@ In ARM mode, switch to an arch which has ARM and Thumb, no warning or .code directive (stay in ARM mode) + .arch armv7-a +@ STDERR-NOT: [[@LINE-1]]:{{[0-9]+}}: warning: +@ CHECK-NOT: .code +@ CHECK: .arch armv7-a +@ CHECK-NOT: .code + +@ In ARM mode, switch to an arch which has Thumb only, expect warning and .code 16 directive + .arch armv6-m +@ STDERR: [[@LINE-1]]:{{[0-9]+}}: warning: new target does not support arm mode, switching to thumb mode +@ CHECK: .code 16 +@ CHECK: .arch armv6-m + +@ In Thumb mode, switch to an arch which has ARM and Thumb, no warning or .code directive (stay in Thumb mode) + .arch armv7-a +@ STDERR-NOT: [[@LINE-1]]:{{[0-9]+}}: warning: +@ CHECK-NOT: .code +@ CHECK: .arch armv7-a +@ CHECK-NOT: .code + +@ In Thumb mode, switch to a CPU which has ARM and Thumb, no warning or .code directive (stay in Thumb mode) + .cpu cortex-a8 +@ STDERR-NOT: [[@LINE-1]]:{{[0-9]+}}: warning: +@ CHECK-NOT: .code +@ CHECK: .cpu cortex-a8 +@ CHECK-NOT: .code + +@ Switch to ARM mode + .arm +@ CHECK: .code 32 + +@ In ARM mode, switch to a CPU which has ARM and Thumb, no warning or .code directive (stay in ARM mode) + .cpu cortex-a8 +@ STDERR-NOT: [[@LINE-1]]:{{[0-9]+}}: warning: +@ CHECK-NOT: .code +@ CHECK: .cpu cortex-a8 +@ CHECK-NOT: .code + +@ In ARM mode, switch to a CPU which has Thumb only, expect warning and .code 16 directive + .cpu cortex-m3 +@ STDERR: [[@LINE-1]]:{{[0-9]+}}: warning: new target does not support arm mode, switching to thumb mode +@ CHECK: .cpu cortex-m3 +@ CHECK: .code 16 + +@ We don't have any ARM-only targets (i.e. v4), so we can't test the forced Thumb->ARM case diff --git a/test/MC/ARM/directive-eabi_attribute.s b/test/MC/ARM/directive-eabi_attribute.s index 74a51ab7279a..e848f774b34b 100644 --- a/test/MC/ARM/directive-eabi_attribute.s +++ b/test/MC/ARM/directive-eabi_attribute.s @@ -209,6 +209,12 @@ @ CHECK-OBJ-NEXT: Value: 0 @ CHECK-OBJ-NEXT: TagName: DIV_use @ CHECK-OBJ-NEXT: Description: If Available + .eabi_attribute Tag_DSP_extension, 0 +@ CHECK: .eabi_attribute 46, 0 +@ CHECK-OBJ: Tag: 46 +@ CHECK-OBJ-NEXT: Value: 0 +@ CHECK-OBJ-NEXT: TagName: DSP_extension +@ CHECK-OBJ-NEXT: Description: Not Permitted .eabi_attribute Tag_nodefaults, 0 @ CHECK: .eabi_attribute 64, 0 @ CHECK-OBJ: Tag: 64 diff --git a/test/MC/ARM/eh-directive-pad-diagnostics.s b/test/MC/ARM/eh-directive-pad-diagnostics.s index 707215962155..5f7ac56314cd 100644 --- a/test/MC/ARM/eh-directive-pad-diagnostics.s +++ b/test/MC/ARM/eh-directive-pad-diagnostics.s @@ -1,5 +1,5 @@ @ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t -@ RUN: FileCheck --check-prefix=CHECK < %t %s +@ RUN: FileCheck < %t %s @ Check the diagnostics for .pad directive. diff --git a/test/MC/ARM/eh-directive-personality-diagnostics.s b/test/MC/ARM/eh-directive-personality-diagnostics.s index 83e9c25f0bd7..d90204aa29dc 100644 --- a/test/MC/ARM/eh-directive-personality-diagnostics.s +++ b/test/MC/ARM/eh-directive-personality-diagnostics.s @@ -1,5 +1,5 @@ @ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t -@ RUN: FileCheck --check-prefix=CHECK < %t %s +@ RUN: FileCheck < %t %s @ Check the diagnostics for .personality directive. diff --git a/test/MC/ARM/eh-directive-save-diagnostics.s b/test/MC/ARM/eh-directive-save-diagnostics.s index 0e6d7404a3af..0fd5582e0498 100644 --- a/test/MC/ARM/eh-directive-save-diagnostics.s +++ b/test/MC/ARM/eh-directive-save-diagnostics.s @@ -1,5 +1,5 @@ @ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t -@ RUN: FileCheck --check-prefix=CHECK < %t %s +@ RUN: FileCheck < %t %s @ Check the diagnostics for .save directive diff --git a/test/MC/ARM/eh-directive-setfp-diagnostics.s b/test/MC/ARM/eh-directive-setfp-diagnostics.s index a5b8aa2386a5..384422c09247 100644 --- a/test/MC/ARM/eh-directive-setfp-diagnostics.s +++ b/test/MC/ARM/eh-directive-setfp-diagnostics.s @@ -1,5 +1,5 @@ @ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t -@ RUN: FileCheck --check-prefix=CHECK < %t %s +@ RUN: FileCheck < %t %s @ Check the diagnostics for .setfp directive. diff --git a/test/MC/ARM/eh-directive-vsave-diagnostics.s b/test/MC/ARM/eh-directive-vsave-diagnostics.s index 62787f37c27f..1108625d6e0c 100644 --- a/test/MC/ARM/eh-directive-vsave-diagnostics.s +++ b/test/MC/ARM/eh-directive-vsave-diagnostics.s @@ -1,5 +1,5 @@ @ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t -@ RUN: FileCheck --check-prefix=CHECK < %t %s +@ RUN: FileCheck < %t %s @ Check the diagnostics for .vsave directive diff --git a/test/MC/ARM/elf-thumbfunc-reloc2.s b/test/MC/ARM/elf-thumbfunc-reloc2.s index 54eedcd95756..18c13d90332b 100644 --- a/test/MC/ARM/elf-thumbfunc-reloc2.s +++ b/test/MC/ARM/elf-thumbfunc-reloc2.s @@ -1,4 +1,4 @@ -// RUN: llvm-mc %s -triple=thumbv7-linux-gnueabi -relocation-model=pic \ +// RUN: llvm-mc %s -triple=thumbv7-linux-gnueabi \ // RUN: -filetype=obj -o - | llvm-readobj -s -sd -r -t | \ // RUN: FileCheck %s diff --git a/test/MC/ARM/error-location.s b/test/MC/ARM/error-location.s index 112acf318ed3..58ec585a9289 100644 --- a/test/MC/ARM/error-location.s +++ b/test/MC/ARM/error-location.s @@ -16,9 +16,6 @@ @ CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Cannot represent a difference across sections .word x_a - y_a -@ CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Cannot represent a subtraction with a weak symbol - .word a - w - @ CHECK: <unknown>:0: error: expression could not be evaluated .set v1, -undef @@ -26,9 +23,6 @@ @ CHECK: <unknown>:0: error: Common symbol 'common' cannot be used in assignment expr .set v3, common -@ CHECK: <unknown>:0: error: Undefined temporary symbol - .word 5f - @ CHECK: <unknown>:0: error: symbol 'undef' could not be evaluated in a subtraction expression .set v2, a-undef diff --git a/test/MC/ARM/fp-const-errors.s b/test/MC/ARM/fp-const-errors.s index 2a68ddbe727e..a91799ba21d2 100644 --- a/test/MC/ARM/fp-const-errors.s +++ b/test/MC/ARM/fp-const-errors.s @@ -20,3 +20,6 @@ fconsts s1, #1.0 fconstd d2, #1.0 @ CHECK: error: invalid floating point immediate + +vmov.i64 d0, 0x8000000000000000 +@ CHECK: error: invalid operand for instruction diff --git a/test/MC/ARM/fullfp16-neg.s b/test/MC/ARM/fullfp16-neg.s new file mode 100644 index 000000000000..4ac4683428f9 --- /dev/null +++ b/test/MC/ARM/fullfp16-neg.s @@ -0,0 +1,189 @@ +@ RUN: not llvm-mc -triple armv8a-none-eabi -mattr=-fullfp16 -show-encoding < %s 2>&1 | FileCheck %s +@ RUN: not llvm-mc -triple armv8a-none-eabi -mattr=-fullfp16,+thumb-mode -show-encoding < %s 2>&1 | FileCheck %s + + vadd.f16 s0, s1, s0 +@ CHECK: error: instruction requires: + + vsub.f16 s0, s1, s0 +@ CHECK: error: instruction requires: + + vdiv.f16 s0, s1, s0 +@ CHECK: error: instruction requires: + + vmul.f16 s0, s1, s0 +@ CHECK: error: instruction requires: + + vnmul.f16 s0, s1, s0 +@ CHECK: error: instruction requires: + + vmla.f16 s1, s2, s0 +@ CHECK: error: instruction requires: + + vmls.f16 s1, s2, s0 +@ CHECK: error: instruction requires: + + vnmla.f16 s1, s2, s0 +@ CHECK: error: instruction requires: + + vnmls.f16 s1, s2, s0 +@ CHECK: error: instruction requires: + + vcmp.f16 s0, s1 +@ CHECK: error: instruction requires: + + vcmp.f16 s2, #0 +@ CHECK: error: instruction requires: + + vcmpe.f16 s1, s0 +@ CHECK: error: instruction requires: + + vcmpe.f16 s0, #0 +@ CHECK: error: instruction requires: + + vabs.f16 s0, s0 +@ CHECK: error: instruction requires: + + vneg.f16 s0, s0 +@ CHECK: error: instruction requires: + + vsqrt.f16 s0, s0 +@ CHECK: error: instruction requires: + + vcvt.f16.s32 s0, s0 + vcvt.f16.u32 s0, s0 + vcvt.s32.f16 s0, s0 + vcvt.u32.f16 s0, s0 +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: + + vcvtr.s32.f16 s0, s1 + vcvtr.u32.f16 s0, s1 +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: + + vcvt.f16.u32 s0, s0, #20 + vcvt.f16.u16 s0, s0, #1 + vcvt.f16.s32 s1, s1, #20 + vcvt.f16.s16 s17, s17, #1 + vcvt.u32.f16 s12, s12, #20 + vcvt.u16.f16 s28, s28, #1 + vcvt.s32.f16 s1, s1, #20 + vcvt.s16.f16 s17, s17, #1 +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: + + vcvta.s32.f16 s2, s3 +@ CHECK: error: instruction requires: + + vcvtn.s32.f16 s6, s23 +@ CHECK: error: instruction requires: + + vcvtp.s32.f16 s0, s4 +@ CHECK: error: instruction requires: + + vcvtm.s32.f16 s17, s8 +@ CHECK: error: instruction requires: + + vcvta.u32.f16 s2, s3 +@ CHECK: error: instruction requires: + + vcvtn.u32.f16 s6, s23 +@ CHECK: error: instruction requires: + + vcvtp.u32.f16 s0, s4 +@ CHECK: error: instruction requires: + + vcvtm.u32.f16 s17, s8 +@ CHECK: error: instruction requires: + + vselge.f16 s4, s1, s23 +@ CHECK: error: instruction requires: + + vselgt.f16 s0, s1, s0 +@ CHECK: error: instruction requires: + + vseleq.f16 s30, s28, s23 +@ CHECK: error: instruction requires: + + vselvs.f16 s21, s16, s14 +@ CHECK: error: instruction requires: + + vmaxnm.f16 s5, s12, s0 +@ CHECK: error: instruction requires: + + vminnm.f16 s0, s0, s12 +@ CHECK: error: instruction requires: + + vrintz.f16 s3, s24 +@ CHECK: error: instruction requires: + + vrintr.f16 s0, s9 +@ CHECK: error: instruction requires: + + vrintx.f16 s10, s14 +@ CHECK: error: instruction requires: + + vrinta.f16 s12, s1 +@ CHECK: error: instruction requires: + + vrintn.f16 s12, s1 +@ CHECK: error: instruction requires: + + vrintp.f16 s12, s1 +@ CHECK: error: instruction requires: + + vrintm.f16 s12, s1 +@ CHECK: error: instruction requires: + + vfma.f16 s2, s7, s4 +@ CHECK: error: instruction requires: + + vfms.f16 s2, s7, s4 +@ CHECK: error: instruction requires: + + vfnma.f16 s2, s7, s4 +@ CHECK: error: instruction requires: + + vfnms.f16 s2, s7, s4 +@ CHECK: error: instruction requires: + + vmovx.f16 s2, s5 + vins.f16 s2, s5 +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: + + + vldr.16 s1, [pc, #6] + vldr.16 s2, [pc, #510] + vldr.16 s3, [pc, #-510] + vldr.16 s4, [r4, #-18] +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: + + + vstr.16 s1, [pc, #6] + vstr.16 s2, [pc, #510] + vstr.16 s3, [pc, #-510] + vstr.16 s4, [r4, #-18] +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: + + vmov.f16 s0, #1.0 +@ CHECK: error: instruction requires: + + vmov.f16 s1, r2 + vmov.f16 r3, s4 +@ CHECK: error: instruction requires: +@ CHECK: error: instruction requires: diff --git a/test/MC/ARM/fullfp16.s b/test/MC/ARM/fullfp16.s new file mode 100644 index 000000000000..bb7863c23539 --- /dev/null +++ b/test/MC/ARM/fullfp16.s @@ -0,0 +1,257 @@ +@ RUN: llvm-mc -triple armv8a-none-eabi -mattr=+fullfp16 -show-encoding < %s | FileCheck %s --check-prefix=ARM +@ RUN: llvm-mc -triple armv8a-none-eabi -mattr=+fullfp16,+thumb-mode -show-encoding < %s | FileCheck %s --check-prefix=THUMB + + vadd.f16 s0, s1, s0 +@ ARM: vadd.f16 s0, s1, s0 @ encoding: [0x80,0x09,0x30,0xee] +@ THUMB: vadd.f16 s0, s1, s0 @ encoding: [0x30,0xee,0x80,0x09] + + vsub.f16 s0, s1, s0 +@ ARM: vsub.f16 s0, s1, s0 @ encoding: [0xc0,0x09,0x30,0xee] +@ THUMB: vsub.f16 s0, s1, s0 @ encoding: [0x30,0xee,0xc0,0x09] + + vdiv.f16 s0, s1, s0 +@ ARM: vdiv.f16 s0, s1, s0 @ encoding: [0x80,0x09,0x80,0xee] +@ THUMB: vdiv.f16 s0, s1, s0 @ encoding: [0x80,0xee,0x80,0x09] + + vmul.f16 s0, s1, s0 +@ ARM: vmul.f16 s0, s1, s0 @ encoding: [0x80,0x09,0x20,0xee] +@ THUMB: vmul.f16 s0, s1, s0 @ encoding: [0x20,0xee,0x80,0x09] + + vnmul.f16 s0, s1, s0 +@ ARM: vnmul.f16 s0, s1, s0 @ encoding: [0xc0,0x09,0x20,0xee] +@ THUMB: vnmul.f16 s0, s1, s0 @ encoding: [0x20,0xee,0xc0,0x09] + + vmla.f16 s1, s2, s0 +@ ARM: vmla.f16 s1, s2, s0 @ encoding: [0x00,0x09,0x41,0xee] +@ THUMB: vmla.f16 s1, s2, s0 @ encoding: [0x41,0xee,0x00,0x09] + + vmls.f16 s1, s2, s0 +@ ARM: vmls.f16 s1, s2, s0 @ encoding: [0x40,0x09,0x41,0xee] +@ THUMB: vmls.f16 s1, s2, s0 @ encoding: [0x41,0xee,0x40,0x09] + + vnmla.f16 s1, s2, s0 +@ ARM: vnmla.f16 s1, s2, s0 @ encoding: [0x40,0x09,0x51,0xee] +@ THUMB: vnmla.f16 s1, s2, s0 @ encoding: [0x51,0xee,0x40,0x09] + + vnmls.f16 s1, s2, s0 +@ ARM: vnmls.f16 s1, s2, s0 @ encoding: [0x00,0x09,0x51,0xee] +@ THUMB: vnmls.f16 s1, s2, s0 @ encoding: [0x51,0xee,0x00,0x09] + + vcmp.f16 s0, s1 +@ ARM: vcmp.f16 s0, s1 @ encoding: [0x60,0x09,0xb4,0xee] +@ THUMB: vcmp.f16 s0, s1 @ encoding: [0xb4,0xee,0x60,0x09] + + vcmp.f16 s2, #0 +@ ARM: vcmp.f16 s2, #0 @ encoding: [0x40,0x19,0xb5,0xee] +@ THUMB: vcmp.f16 s2, #0 @ encoding: [0xb5,0xee,0x40,0x19] + + vcmpe.f16 s1, s0 +@ ARM: vcmpe.f16 s1, s0 @ encoding: [0xc0,0x09,0xf4,0xee] +@ THUMB: vcmpe.f16 s1, s0 @ encoding: [0xf4,0xee,0xc0,0x09] + + vcmpe.f16 s0, #0 +@ ARM: vcmpe.f16 s0, #0 @ encoding: [0xc0,0x09,0xb5,0xee] +@ THUMB: vcmpe.f16 s0, #0 @ encoding: [0xb5,0xee,0xc0,0x09] + + vabs.f16 s0, s0 +@ ARM: vabs.f16 s0, s0 @ encoding: [0xc0,0x09,0xb0,0xee] +@ THUMB: vabs.f16 s0, s0 @ encoding: [0xb0,0xee,0xc0,0x09] + + vneg.f16 s0, s0 +@ ARM: vneg.f16 s0, s0 @ encoding: [0x40,0x09,0xb1,0xee] +@ THUMB: vneg.f16 s0, s0 @ encoding: [0xb1,0xee,0x40,0x09] + + vsqrt.f16 s0, s0 +@ ARM: vsqrt.f16 s0, s0 @ encoding: [0xc0,0x09,0xb1,0xee] +@ THUMB: vsqrt.f16 s0, s0 @ encoding: [0xb1,0xee,0xc0,0x09] + + vcvt.f16.s32 s0, s0 + vcvt.f16.u32 s0, s0 + vcvt.s32.f16 s0, s0 + vcvt.u32.f16 s0, s0 +@ ARM: vcvt.f16.s32 s0, s0 @ encoding: [0xc0,0x09,0xb8,0xee] +@ ARM: vcvt.f16.u32 s0, s0 @ encoding: [0x40,0x09,0xb8,0xee] +@ ARM: vcvt.s32.f16 s0, s0 @ encoding: [0xc0,0x09,0xbd,0xee] +@ ARM: vcvt.u32.f16 s0, s0 @ encoding: [0xc0,0x09,0xbc,0xee] +@ THUMB: vcvt.f16.s32 s0, s0 @ encoding: [0xb8,0xee,0xc0,0x09] +@ THUMB: vcvt.f16.u32 s0, s0 @ encoding: [0xb8,0xee,0x40,0x09] +@ THUMB: vcvt.s32.f16 s0, s0 @ encoding: [0xbd,0xee,0xc0,0x09] +@ THUMB: vcvt.u32.f16 s0, s0 @ encoding: [0xbc,0xee,0xc0,0x09] + + vcvtr.s32.f16 s0, s1 + vcvtr.u32.f16 s0, s1 +@ ARM: vcvtr.s32.f16 s0, s1 @ encoding: [0x60,0x09,0xbd,0xee] +@ ARM: vcvtr.u32.f16 s0, s1 @ encoding: [0x60,0x09,0xbc,0xee] +@ THUMB: vcvtr.s32.f16 s0, s1 @ encoding: [0xbd,0xee,0x60,0x09] +@ THUMB: vcvtr.u32.f16 s0, s1 @ encoding: [0xbc,0xee,0x60,0x09] + + vcvt.f16.u32 s0, s0, #20 + vcvt.f16.u16 s0, s0, #1 + vcvt.f16.s32 s1, s1, #20 + vcvt.f16.s16 s17, s17, #1 + vcvt.u32.f16 s12, s12, #20 + vcvt.u16.f16 s28, s28, #1 + vcvt.s32.f16 s1, s1, #20 + vcvt.s16.f16 s17, s17, #1 +@ ARM: vcvt.f16.u32 s0, s0, #20 @ encoding: [0xc6,0x09,0xbb,0xee] +@ ARM: vcvt.f16.u16 s0, s0, #1 @ encoding: [0x67,0x09,0xbb,0xee] +@ ARM: vcvt.f16.s32 s1, s1, #20 @ encoding: [0xc6,0x09,0xfa,0xee] +@ ARM: vcvt.f16.s16 s17, s17, #1 @ encoding: [0x67,0x89,0xfa,0xee] +@ ARM: vcvt.u32.f16 s12, s12, #20 @ encoding: [0xc6,0x69,0xbf,0xee] +@ ARM: vcvt.u16.f16 s28, s28, #1 @ encoding: [0x67,0xe9,0xbf,0xee] +@ ARM: vcvt.s32.f16 s1, s1, #20 @ encoding: [0xc6,0x09,0xfe,0xee] +@ ARM: vcvt.s16.f16 s17, s17, #1 @ encoding: [0x67,0x89,0xfe,0xee] +@ THUMB: vcvt.f16.u32 s0, s0, #20 @ encoding: [0xbb,0xee,0xc6,0x09] +@ THUMB: vcvt.f16.u16 s0, s0, #1 @ encoding: [0xbb,0xee,0x67,0x09] +@ THUMB: vcvt.f16.s32 s1, s1, #20 @ encoding: [0xfa,0xee,0xc6,0x09] +@ THUMB: vcvt.f16.s16 s17, s17, #1 @ encoding: [0xfa,0xee,0x67,0x89] +@ THUMB: vcvt.u32.f16 s12, s12, #20 @ encoding: [0xbf,0xee,0xc6,0x69] +@ THUMB: vcvt.u16.f16 s28, s28, #1 @ encoding: [0xbf,0xee,0x67,0xe9] +@ THUMB: vcvt.s32.f16 s1, s1, #20 @ encoding: [0xfe,0xee,0xc6,0x09] +@ THUMB: vcvt.s16.f16 s17, s17, #1 @ encoding: [0xfe,0xee,0x67,0x89] + + vcvta.s32.f16 s2, s3 +@ ARM: vcvta.s32.f16 s2, s3 @ encoding: [0xe1,0x19,0xbc,0xfe] +@ THUMB: vcvta.s32.f16 s2, s3 @ encoding: [0xbc,0xfe,0xe1,0x19] + + vcvtn.s32.f16 s6, s23 +@ ARM: vcvtn.s32.f16 s6, s23 @ encoding: [0xeb,0x39,0xbd,0xfe] +@ THUMB: vcvtn.s32.f16 s6, s23 @ encoding: [0xbd,0xfe,0xeb,0x39] + + vcvtp.s32.f16 s0, s4 +@ ARM: vcvtp.s32.f16 s0, s4 @ encoding: [0xc2,0x09,0xbe,0xfe] +@ THUMB: vcvtp.s32.f16 s0, s4 @ encoding: [0xbe,0xfe,0xc2,0x09] + + vcvtm.s32.f16 s17, s8 +@ ARM: vcvtm.s32.f16 s17, s8 @ encoding: [0xc4,0x89,0xff,0xfe] +@ THUMB: vcvtm.s32.f16 s17, s8 @ encoding: [0xff,0xfe,0xc4,0x89] + + vcvta.u32.f16 s2, s3 +@ ARM: vcvta.u32.f16 s2, s3 @ encoding: [0x61,0x19,0xbc,0xfe] +@ THUMB: vcvta.u32.f16 s2, s3 @ encoding: [0xbc,0xfe,0x61,0x19] + + vcvtn.u32.f16 s6, s23 +@ ARM: vcvtn.u32.f16 s6, s23 @ encoding: [0x6b,0x39,0xbd,0xfe] +@ THUMB: vcvtn.u32.f16 s6, s23 @ encoding: [0xbd,0xfe,0x6b,0x39] + + vcvtp.u32.f16 s0, s4 +@ ARM: vcvtp.u32.f16 s0, s4 @ encoding: [0x42,0x09,0xbe,0xfe] +@ THUMB: vcvtp.u32.f16 s0, s4 @ encoding: [0xbe,0xfe,0x42,0x09] + + vcvtm.u32.f16 s17, s8 +@ ARM: vcvtm.u32.f16 s17, s8 @ encoding: [0x44,0x89,0xff,0xfe] +@ THUMB: vcvtm.u32.f16 s17, s8 @ encoding: [0xff,0xfe,0x44,0x89] + + vselge.f16 s4, s1, s23 +@ ARM: vselge.f16 s4, s1, s23 @ encoding: [0xab,0x29,0x20,0xfe] +@ THUMB: vselge.f16 s4, s1, s23 @ encoding: [0x20,0xfe,0xab,0x29] + + vselgt.f16 s0, s1, s0 +@ ARM: vselgt.f16 s0, s1, s0 @ encoding: [0x80,0x09,0x30,0xfe] +@ THUMB: vselgt.f16 s0, s1, s0 @ encoding: [0x30,0xfe,0x80,0x09] + + vseleq.f16 s30, s28, s23 +@ ARM: vseleq.f16 s30, s28, s23 @ encoding: [0x2b,0xf9,0x0e,0xfe] +@ THUMB: vseleq.f16 s30, s28, s23 @ encoding: [0x0e,0xfe,0x2b,0xf9] + + vselvs.f16 s21, s16, s14 +@ ARM: vselvs.f16 s21, s16, s14 @ encoding: [0x07,0xa9,0x58,0xfe] +@ THUMB: vselvs.f16 s21, s16, s14 @ encoding: [0x58,0xfe,0x07,0xa9] + + vmaxnm.f16 s5, s12, s0 +@ ARM: vmaxnm.f16 s5, s12, s0 @ encoding: [0x00,0x29,0xc6,0xfe] +@ THUMB: vmaxnm.f16 s5, s12, s0 @ encoding: [0xc6,0xfe,0x00,0x29] + + vminnm.f16 s0, s0, s12 +@ ARM: vminnm.f16 s0, s0, s12 @ encoding: [0x46,0x09,0x80,0xfe] +@ THUMB: vminnm.f16 s0, s0, s12 @ encoding: [0x80,0xfe,0x46,0x09] + + vrintz.f16 s3, s24 +@ ARM: vrintz.f16 s3, s24 @ encoding: [0xcc,0x19,0xf6,0xee] +@ THUMB: vrintz.f16 s3, s24 @ encoding: [0xf6,0xee,0xcc,0x19] + + vrintr.f16 s0, s9 +@ ARM: vrintr.f16 s0, s9 @ encoding: [0x64,0x09,0xb6,0xee] +@ THUMB: vrintr.f16 s0, s9 @ encoding: [0xb6,0xee,0x64,0x09] + + vrintx.f16 s10, s14 +@ ARM: vrintx.f16 s10, s14 @ encoding: [0x47,0x59,0xb7,0xee] +@ THUMB: vrintx.f16 s10, s14 @ encoding: [0xb7,0xee,0x47,0x59] + + vrinta.f16 s12, s1 +@ ARM: vrinta.f16 s12, s1 @ encoding: [0x60,0x69,0xb8,0xfe] +@ THUMB: vrinta.f16 s12, s1 @ encoding: [0xb8,0xfe,0x60,0x69] + + vrintn.f16 s12, s1 +@ ARM: vrintn.f16 s12, s1 @ encoding: [0x60,0x69,0xb9,0xfe] +@ THUMB: vrintn.f16 s12, s1 @ encoding: [0xb9,0xfe,0x60,0x69] + + vrintp.f16 s12, s1 +@ ARM: vrintp.f16 s12, s1 @ encoding: [0x60,0x69,0xba,0xfe] +@ THUMB: vrintp.f16 s12, s1 @ encoding: [0xba,0xfe,0x60,0x69] + + vrintm.f16 s12, s1 +@ ARM: vrintm.f16 s12, s1 @ encoding: [0x60,0x69,0xbb,0xfe] +@ THUMB: vrintm.f16 s12, s1 @ encoding: [0xbb,0xfe,0x60,0x69] + + vfma.f16 s2, s7, s4 +@ ARM: vfma.f16 s2, s7, s4 @ encoding: [0x82,0x19,0xa3,0xee] +@ THUMB: vfma.f16 s2, s7, s4 @ encoding: [0xa3,0xee,0x82,0x19] + + vfms.f16 s2, s7, s4 +@ ARM: vfms.f16 s2, s7, s4 @ encoding: [0xc2,0x19,0xa3,0xee] +@ THUMB: vfms.f16 s2, s7, s4 @ encoding: [0xa3,0xee,0xc2,0x19] + + vfnma.f16 s2, s7, s4 +@ ARM: vfnma.f16 s2, s7, s4 @ encoding: [0xc2,0x19,0x93,0xee] +@ THUMB: vfnma.f16 s2, s7, s4 @ encoding: [0x93,0xee,0xc2,0x19] + + vfnms.f16 s2, s7, s4 +@ ARM: vfnms.f16 s2, s7, s4 @ encoding: [0x82,0x19,0x93,0xee] +@ THUMB: vfnms.f16 s2, s7, s4 @ encoding: [0x93,0xee,0x82,0x19] + + vmovx.f16 s2, s5 + vins.f16 s2, s5 +@ ARM: vmovx.f16 s2, s5 @ encoding: [0x62,0x1a,0xb0,0xfe] +@ ARM: vins.f16 s2, s5 @ encoding: [0xe2,0x1a,0xb0,0xfe] +@ THUMB: vmovx.f16 s2, s5 @ encoding: [0xb0,0xfe,0x62,0x1a] +@ THUMB: vins.f16 s2, s5 @ encoding: [0xb0,0xfe,0xe2,0x1a] + + + vldr.16 s1, [pc, #6] + vldr.16 s2, [pc, #510] + vldr.16 s3, [pc, #-510] + vldr.16 s4, [r4, #-18] +@ ARM: vldr.16 s1, [pc, #6] @ encoding: [0x03,0x09,0xdf,0xed] +@ ARM: vldr.16 s2, [pc, #510] @ encoding: [0xff,0x19,0x9f,0xed] +@ ARM: vldr.16 s3, [pc, #-510] @ encoding: [0xff,0x19,0x5f,0xed] +@ ARM: vldr.16 s4, [r4, #-18] @ encoding: [0x09,0x29,0x14,0xed] +@ THUMB: vldr.16 s1, [pc, #6] @ encoding: [0xdf,0xed,0x03,0x09] +@ THUMB: vldr.16 s2, [pc, #510] @ encoding: [0x9f,0xed,0xff,0x19] +@ THUMB: vldr.16 s3, [pc, #-510] @ encoding: [0x5f,0xed,0xff,0x19] +@ THUMB: vldr.16 s4, [r4, #-18] @ encoding: [0x14,0xed,0x09,0x29] + + + vstr.16 s1, [pc, #6] + vstr.16 s2, [pc, #510] + vstr.16 s3, [pc, #-510] + vstr.16 s4, [r4, #-18] +@ ARM: vstr.16 s1, [pc, #6] @ encoding: [0x03,0x09,0xcf,0xed] +@ ARM: vstr.16 s2, [pc, #510] @ encoding: [0xff,0x19,0x8f,0xed] +@ ARM: vstr.16 s3, [pc, #-510] @ encoding: [0xff,0x19,0x4f,0xed] +@ ARM: vstr.16 s4, [r4, #-18] @ encoding: [0x09,0x29,0x04,0xed] +@ THUMB: vstr.16 s1, [pc, #6] @ encoding: [0xcf,0xed,0x03,0x09] +@ THUMB: vstr.16 s2, [pc, #510] @ encoding: [0x8f,0xed,0xff,0x19] +@ THUMB: vstr.16 s3, [pc, #-510] @ encoding: [0x4f,0xed,0xff,0x19] +@ THUMB: vstr.16 s4, [r4, #-18] @ encoding: [0x04,0xed,0x09,0x29] + + vmov.f16 s0, #1.0 +@ ARM: vmov.f16 s0, #1.000000e+00 @ encoding: [0x00,0x09,0xb7,0xee] +@ THUMB: vmov.f16 s0, #1.000000e+00 @ encoding: [0xb7,0xee,0x00,0x09] + + vmov.f16 s1, r2 + vmov.f16 r3, s4 +@ ARM: vmov.f16 s1, r2 @ encoding: [0x90,0x29,0x00,0xee] +@ ARM: vmov.f16 r3, s4 @ encoding: [0x10,0x39,0x12,0xee] +@ THUMB: vmov.f16 s1, r2 @ encoding: [0x00,0xee,0x90,0x29] +@ THUMB: vmov.f16 r3, s4 @ encoding: [0x12,0xee,0x10,0x39] diff --git a/test/MC/ARM/inst-directive-emit.s b/test/MC/ARM/inst-directive-emit.s index 63fdd15ee388..fbcc9c91d681 100644 --- a/test/MC/ARM/inst-directive-emit.s +++ b/test/MC/ARM/inst-directive-emit.s @@ -3,7 +3,7 @@ .syntax unified .thumb - .align 2 + .p2align 2 .global emit_asm .type emit_asm,%function emit_asm: @@ -11,7 +11,7 @@ emit_asm: @ CHECK: .text @ CHECK: .code 16 -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .globl emit_asm @ CHECK: .type emit_asm,%function @ CHECK: emit_asm: diff --git a/test/MC/ARM/ldr-pseudo-cond-darwin.s b/test/MC/ARM/ldr-pseudo-cond-darwin.s new file mode 100644 index 000000000000..542b060d1e23 --- /dev/null +++ b/test/MC/ARM/ldr-pseudo-cond-darwin.s @@ -0,0 +1,55 @@ +@RUN: llvm-mc -triple armv7-base-apple-darwin %s | FileCheck --check-prefix=CHECK-ARM --check-prefix=CHECK %s +@RUN: llvm-mc -triple thumbv7-base-apple-darwin %s | FileCheck --check-prefix=CHECK-THUMB2 --check-prefix=CHECK %s + +@ +@ Check that ldr to constant pool correctly transfers the condition codes +@ +@ simple test +.section __TEXT,a,regular,pure_instructions +@ CHECK-LABEL: f0: +f0: + it eq + ldreq r0, =0x10002 +@ CHECK: ldreq r0, Ltmp0 + +@ loading multiple constants +.section __TEXT,b,regular,pure_instructions +@ CHECK-LABEL: f1: +f1: + ite eq + ldreq r0, =0x10003 +@ CHECK: ldreq r0, Ltmp1 + ldrne r0, =0x10004 +@ CHECK: ldrne r0, Ltmp2 + +@ transformation to mov +.section __TEXT,d,regular,pure_instructions +@ CHECK-LABEL: f2: +f2: +@ Can use the narrow Thumb mov as it does not set flags in an IT block + it eq + ldreq r1, =0x1 +@ CHECK: moveq r1, #1 + +@ Must use the wide Thumb mov if the constant can't be represented + ite eq + ldreq r2, = 0x1f000000 +@ CHECK-ARM moveq r2, #520093696 +@ CHECK-THUMB2 moveq.w r2, #520093696 + ldrne r3, = 0x00001234 +@ CHECK movwne r2, #4660 + +@ +@ Constant Pools +@ +@ CHECK: .section __TEXT,a,regular,pure_instructions +@ CHECK: .p2align 2 +@ CHECK: Ltmp0: +@ CHECK: .long 65538 + +@ CHECK: .section __TEXT,b,regular,pure_instructions +@ CHECK: .p2align 2 +@ CHECK: Ltmp1: +@ CHECK: .long 65539 +@ CHECK: Ltmp2: +@ CHECK: .long 65540 diff --git a/test/MC/ARM/ldr-pseudo-cond.s b/test/MC/ARM/ldr-pseudo-cond.s new file mode 100644 index 000000000000..f8d17f6c46bf --- /dev/null +++ b/test/MC/ARM/ldr-pseudo-cond.s @@ -0,0 +1,55 @@ +@RUN: llvm-mc -triple armv7-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-ARM --check-prefix=CHECK %s +@RUN: llvm-mc -triple thumbv7-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-THUMB2 --check-prefix=CHECK %s + +@ +@ Check that ldr to constant pool correctly transfers the condition codes +@ +@ simple test +.section a,"ax",%progbits +@ CHECK-LABEL: f0: +f0: + it eq + ldreq r0, =0x10002 +@ CHECK: ldreq r0, .Ltmp[[TMP0:[0-9]+]] + +@ loading multiple constants +.section b,"ax",%progbits +@ CHECK-LABEL: f1: +f1: + ite eq + ldreq r0, =0x10003 +@ CHECK: ldreq r0, .Ltmp[[TMP1:[0-9]+]] + ldrne r0, =0x10004 +@ CHECK: ldrne r0, .Ltmp[[TMP2:[0-9]+]] + +@ transformation to mov +.section c, "ax", %progbits +@ CHECK-LABEL: f2: +f2: +@ Can use the narrow Thumb mov as it does not set flags in an IT block + it eq + ldreq r1, =0x1 +@ CHECK: moveq r1, #1 + +@ Must use the wide Thumb mov if the constant can't be represented + ite eq + ldreq r2, = 0x1f000000 +@ CHECK-ARM moveq r2, #520093696 +@ CHECK-THUMB2 moveq.w r2, #520093696 + ldrne r3, = 0x00001234 +@ CHECK movwne r2, #4660 + +@ +@ Constant Pools +@ +@ CHECK: .section a,"ax",%progbits +@ CHECK: .p2align 2 +@ CHECK: .Ltmp[[TMP0]] +@ CHECK: .long 65538 + +@ CHECK: .section b,"ax",%progbits +@ CHECK: .p2align 2 +@ CHECK: .Ltmp[[TMP1]] +@ CHECK: .long 65539 +@ CHECK: .Ltmp[[TMP2]] +@ CHECK: .long 65540 diff --git a/test/MC/ARM/ldr-pseudo-darwin.s b/test/MC/ARM/ldr-pseudo-darwin.s index f04f533cfae7..4972cf389e0d 100644 --- a/test/MC/ARM/ldr-pseudo-darwin.s +++ b/test/MC/ARM/ldr-pseudo-darwin.s @@ -4,10 +4,11 @@ @ between darwin and linux. Any tests added here should have a matching @ test added there. -@RUN: llvm-mc -triple armv7-apple-darwin %s | FileCheck %s -@RUN: llvm-mc -triple thumbv5-apple-darwin %s | FileCheck %s -@RUN: llvm-mc -triple thumbv7-apple-darwin %s | FileCheck %s - +@RUN: llvm-mc -triple armv7-base-apple-darwin %s | FileCheck --check-prefix=CHECK-ARM --check-prefix=CHECK %s +@RUN: llvm-mc -triple armv5-base-apple-darwin %s | FileCheck --check-prefix=CHECK-ARMV5 --check-prefix=CHECK %s +@RUN: llvm-mc -triple thumbv5-base-apple-darwin %s | FileCheck --check-prefix=CHECK-THUMB --check-prefix=CHECK %s +@RUN: llvm-mc -triple thumbv7-base-apple-darwin %s | FileCheck --check-prefix=CHECK-THUMB2 --check-prefix=CHECK %s +@RUN: llvm-mc -triple thumbv8m.base-base-apple-darwin %s | FileCheck --check-prefix=CHECK-BASELINE --check-prefix=CHECK %s @ @ Check that large constants are converted to ldr from constant pool @ @@ -15,20 +16,20 @@ .section __TEXT,b,regular,pure_instructions @ CHECK-LABEL: f3: f3: - ldr r0, =0x10001 + ldr r0, =0x10002 @ CHECK: ldr r0, Ltmp0 @ loading multiple constants .section __TEXT,c,regular,pure_instructions @ CHECK-LABEL: f4: f4: - ldr r0, =0x10002 + ldr r0, =0x10003 @ CHECK: ldr r0, Ltmp1 adds r0, r0, #1 adds r0, r0, #1 adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x10003 + ldr r0, =0x10004 @ CHECK: ldr r0, Ltmp2 adds r0, r0, #1 adds r0, r0, #1 @@ -37,7 +38,7 @@ f4: .section __TEXT,d,regular,pure_instructions @ CHECK-LABEL: f5: f5: - ldr r0, =0x10004 + ldr r0, =0x10005 @ CHECK: ldr r0, Ltmp3 adds r0, r0, #1 adds r0, r0, #1 @@ -46,7 +47,7 @@ f5: adds r0, r0, #1 adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x10004 + ldr r0, =0x10005 @ CHECK: ldr r0, Ltmp4 adds r0, r0, #1 adds r0, r0, #1 @@ -117,7 +118,7 @@ f12: f13: adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x101 + ldr r0, =0x10008 @ CHECK: ldr r0, Ltmp10 adds r0, r0, #1 adds r0, r0, #1 @@ -131,7 +132,7 @@ f13: @ usage in macro .macro useit_in_a_macro - ldr r0, =0x10008 + ldr r0, =0x10009 ldr r0, =baz .endm .section __TEXT,k,regular,pure_instructions @@ -145,49 +146,141 @@ f14: .section __TEXT,l,regular,pure_instructions @ CHECK-LABEL: f15: f15: - ldr r0, =0x10001+8 + ldr r0, =0x10001+9 @ CHECK: ldr r0, Ltmp14 adds r0, r0, #1 ldr r0, =bar+4 @ CHECK: ldr r0, Ltmp15 adds r0, r0, #1 +@ transformation to mov +.section __TEXT,m,regular,pure_instructions +@ CHECK-LABEL: f16: +f16: + +@ Representable in ARM, and Thumb with support mov.w or movw + ldr r1, =0x1 +@ CHECK-ARM: mov r1, #1 +@ CHECK-ARMV5: mov r1, #1 +@ CHECK-THUMB: ldr r1, Ltmp16 +@ CHECK-THUMB2: mov.w r1, #1 +@ CHECK-BASELINE: movw r1, #1 + +@ Immediate is representable in A1 and T2 modified immediate only not movw + ldr r2, =0x120000 +@ CHECK-ARM: mov r2, #1179648 +@ CHECK-ARMV5: mov r2, #1179648 +@ CHECK-THUMB: ldr r2, Ltmp17 +@ CHECK-THUMB2: mov.w r2, #1179648 +@ CHECK-BASELINE: ldr r2, Ltmp16 + +@ Immediate can be represented only with movw instruction + ldr r3, =0x1234 +@ CHECK-ARM: movw r3, #4660 +@ CHECK-ARMV5: ldr r3, Ltmp16 +@ CHECK-THUMB: ldr r3, Ltmp18 +@ CHECK-THUMB2: movw r3, #4660 +@ CHECK-BASELINE: movw r3, #4660 + +@ Immediate can be represented only with T2 modified immediate + ldr r4, =0xabababab +@ CHECK-ARM: ldr r4, Ltmp16 +@ CHECK-ARMV5: ldr r4, Ltmp17 +@ CHECK-THUMB: ldr r4, Ltmp19 +@ CHECK-THUMB2: mov.w r4, #2880154539 +@ CHECK-BASELINE: ldr r4, Ltmp17 + +@ Immediate can be represented only with A1 modified immediate + ldr r5, =0x1000000b +@ CHECK-ARM: mov r5, #268435467 +@ CHECK-ARMV5: mov r5, #268435467 +@ CHECK-THUMB: ldr r5, Ltmp20 +@ CHECK-THUMB2: ldr r5, Ltmp16 +@ CHECK-BASELINE: ldr r5, Ltmp18 + +@ Negative numbers can be used with MVN or in Thumb2 with modified immediate + ldr r6, =-1 +@ CHECK-ARM: mvn r6, #0 +@ CHECK-ARMV5: mvn r6, #0 +@ CHECK-THUMB: ldr r6, Ltmp21 +@ CHECK-THUMB2: mov.w r6, #-1 +@ CHECK-BASELINE: ldr r6, Ltmp19 + ldr r7, =-0x100 +@ CHECK-ARM: mvn r7, #255 +@ CHECK-ARMV5: mvn r7, #255 +@ CHECK-THUMB: ldr r7, Ltmp22 +@ CHECK-THUMB2: mvn r7, #255 +@ CHECK-BASELINE: ldr r7, Ltmp20 + +@ Constant expressions can be used + .equ expr, 0x10 + 0x10 + ldr r0, = expr +@ CHECK-ARM: mov r0, #32 +@ CHECK-ARMV5: mov r0, #32 +@ CHECK-THUMB: ldr r0, Ltmp23 +@ CHECK-THUMB2: mov.w r0, #32 +@ CHECK-BASELINE: movw r0, #32 + ldr r1, = expr - 0x10 +@ CHECK-ARM: mov r1, #16 +@ CHECK-ARMV5: mov r1, #16 +@ CHECK-THUMB: ldr r1, Ltmp24 +@ CHECK-THUMB2: mov.w r1, #16 +@ CHECK-BASELINE: movw r1, #16 + +@ usage of translation in macro +.macro usemov_in_a_macro + ldr r2, =0x3 + ldr r3, =expr +.endm +@ CHECK-LABEL: f17: +f17: + usemov_in_a_macro +@ CHECK-ARM: mov r2, #3 +@ CHECK-ARM: mov r3, #32 +@ CHECK-ARMV5: mov r2, #3 +@ CHECK-ARMV5: mov r3, #32 +@ CHECK-THUMB: ldr r2, Ltmp25 +@ CHECK-THUMB: ldr r3, Ltmp26 +@ CHECK-THUMB2: mov.w r2, #3 +@ CHECK-THUMB2: mov.w r3, #32 +@ CHECK-BASELINE: movw r2, #3 +@ CHECK-BASELINE: movw r3, #32 @ @ Constant Pools @ @ CHECK: .section __TEXT,b,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp0: -@ CHECK: .long 65537 +@ CHECK: .long 65538 @ CHECK: .end_data_region @ CHECK: .section __TEXT,c,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp1: -@ CHECK: .long 65538 -@ CHECK: .align 2 -@ CHECK-LABEL: Ltmp2: @ CHECK: .long 65539 +@ CHECK: .p2align 2 +@ CHECK-LABEL: Ltmp2: +@ CHECK: .long 65540 @ CHECK: .end_data_region @ CHECK: .section __TEXT,d,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp3: -@ CHECK: .long 65540 -@ CHECK: .align 2 +@ CHECK: .long 65541 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp4: -@ CHECK: .long 65540 +@ CHECK: .long 65541 @ CHECK: .end_data_region @ CHECK: .section __TEXT,e,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp5: @ CHECK: .long 65542 -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp6: @ CHECK: .long 65543 @ CHECK: .end_data_region @@ -197,51 +290,51 @@ f15: @ CHECK: .section __TEXT,g,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp7: @ CHECK: .long foo @ CHECK: .end_data_region @ CHECK: .section __TEXT,h,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp8: @ CHECK: .long f5 @ CHECK: .end_data_region @ CHECK: .section __TEXT,i,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp9: @ CHECK: .long f12 @ CHECK: .end_data_region @ CHECK: .section __TEXT,j,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp10: -@ CHECK: .long 257 -@ CHECK: .align 2 +@ CHECK: .long 65544 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp11: @ CHECK: .long bar @ CHECK: .end_data_region @ CHECK: .section __TEXT,k,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp12: -@ CHECK: .long 65544 -@ CHECK: .align 2 +@ CHECK: .long 65545 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp13: @ CHECK: .long baz @ CHECK: .end_data_region @ CHECK: .section __TEXT,l,regular,pure_instructions @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp14: -@ CHECK: .long 65545 -@ CHECK: .align 2 +@ CHECK: .long 65546 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp15: @ CHECK: .long bar+4 @ CHECK: .end_data_region diff --git a/test/MC/ARM/ldr-pseudo-obj-errors.s b/test/MC/ARM/ldr-pseudo-obj-errors.s index dce88f058f83..a2884853cea3 100644 --- a/test/MC/ARM/ldr-pseudo-obj-errors.s +++ b/test/MC/ARM/ldr-pseudo-obj-errors.s @@ -10,8 +10,8 @@ .text foo: - ldr r0, =0x101 + ldr r0, =0x12345678 .space 8000 @ CHECK: error: out of range pc-relative fixup value -@ CHECK: ldr r0, =0x101 +@ CHECK: ldr r0, =0x12345678 @ CHECK: ^ diff --git a/test/MC/ARM/ldr-pseudo-unpredictable.s b/test/MC/ARM/ldr-pseudo-unpredictable.s new file mode 100644 index 000000000000..b275dc71ab4b --- /dev/null +++ b/test/MC/ARM/ldr-pseudo-unpredictable.s @@ -0,0 +1,21 @@ +@RUN: llvm-mc -triple armv5-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-ARM %s +@RUN: not llvm-mc -triple thumbv7-unknown-linux-gnueabi %s 2>&1 | FileCheck --check-prefix=CHECK-SP %s +@RUN: not llvm-mc -triple thumbv5-unknown-linux-gnueabi %s 2>&1 | FileCheck --check-prefix=CHECK-NONE %s +@RUN: llvm-mc -triple armv5-base-apple-darwin %s | FileCheck --check-prefix=CHECK-DARWIN-ARM %s +@RUN: not llvm-mc -triple thumbv7-base-apple-darwin %s 2>&1 | FileCheck --check-prefix=CHECK-DARWIN-SP %s +@RUN: not llvm-mc -triple thumbv5-base.apple.darwin %s 2>&1 | FileCheck --check-prefix=CHECK-NONE %s + +@ We dont't do the transformation for rt = sp or pc +@ as it is unpredictable for many of the MOV encondings + ldr pc, = 0x4 +@ CHECK-ARM: ldr pc, .Ltmp[[TMP0:[0-9]+]] +@ CHECK-DARWIN-ARM: ldr pc, Ltmp0 +@ CHECK-SP: error: instruction requires: arm-mode +@ CHECK-DARWIN-SP: error: instruction requires: arm-mode +@ CHECK-NONE: error: instruction requires: arm-mode + ldr sp, = 0x8 +@ CHECK-ARM: ldr sp, .Ltmp[[TMP1:[0-9]+]] +@ CHECK-DARWIN-ARM: ldr sp, Ltmp1 +@ CHECK-SP: ldr.w sp, .Ltmp[[TMP0:[0-9]+]] +@ CHECK-DARWIN-SP: ldr.w sp, Ltmp0 +@ CHECK-NONE: error: instruction requires: arm-mode diff --git a/test/MC/ARM/ldr-pseudo.s b/test/MC/ARM/ldr-pseudo.s index df0d88a9a56e..2358c4832956 100644 --- a/test/MC/ARM/ldr-pseudo.s +++ b/test/MC/ARM/ldr-pseudo.s @@ -4,10 +4,11 @@ @ between darwin and linux. Any tests added here should have a matching @ test added there. -@RUN: llvm-mc -triple armv7-unknown-linux-gnueabi %s | FileCheck %s -@RUN: llvm-mc -triple thumbv5-unknown-linux-gnueabi %s | FileCheck %s -@RUN: llvm-mc -triple thumbv7-unknown-linux-gnueabi %s | FileCheck %s - +@RUN: llvm-mc -triple armv7-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-ARM --check-prefix=CHECK %s +@RUN: llvm-mc -triple armv5-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-ARMV5 --check-prefix=CHECK %s +@RUN: llvm-mc -triple thumbv5-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-THUMB --check-prefix=CHECK %s +@RUN: llvm-mc -triple thumbv7-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-THUMB2 --check-prefix=CHECK %s +@RUN: llvm-mc -triple thumbv8m.base-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-BASELINE --check-prefix=CHECK %s @ @ Check that large constants are converted to ldr from constant pool @ @@ -15,20 +16,20 @@ .section b,"ax",%progbits @ CHECK-LABEL: f3: f3: - ldr r0, =0x10001 + ldr r0, =0x10002 @ CHECK: ldr r0, .Ltmp[[TMP0:[0-9]+]] @ loading multiple constants .section c,"ax",%progbits @ CHECK-LABEL: f4: f4: - ldr r0, =0x10002 + ldr r0, =0x10003 @ CHECK: ldr r0, .Ltmp[[TMP1:[0-9]+]] adds r0, r0, #1 adds r0, r0, #1 adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x10003 + ldr r0, =0x10004 @ CHECK: ldr r0, .Ltmp[[TMP2:[0-9]+]] adds r0, r0, #1 adds r0, r0, #1 @@ -37,7 +38,7 @@ f4: .section d,"ax",%progbits @ CHECK-LABEL: f5: f5: - ldr r0, =0x10004 + ldr r0, =0x10005 @ CHECK: ldr r0, .Ltmp[[TMP3:[0-9]+]] adds r0, r0, #1 adds r0, r0, #1 @@ -46,7 +47,7 @@ f5: adds r0, r0, #1 adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x10004 + ldr r0, =0x10005 @ CHECK: ldr r0, .Ltmp[[TMP4:[0-9]+]] adds r0, r0, #1 adds r0, r0, #1 @@ -117,7 +118,7 @@ f12: f13: adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x101 + ldr r0, =0x10008 @ CHECK: ldr r0, .Ltmp[[TMP10:[0-9]+]] adds r0, r0, #1 adds r0, r0, #1 @@ -131,7 +132,7 @@ f13: @ usage in macro .macro useit_in_a_macro - ldr r0, =0x10008 + ldr r0, =0x10009 ldr r0, =baz .endm .section k,"ax",%progbits @@ -145,37 +146,129 @@ f14: .section l, "ax", %progbits @ CHECK-LABEL: f15: f15: - ldr r0, =0x10001+8 + ldr r0, =0x10001+9 @ CHECK: ldr r0, .Ltmp[[TMP14:[0-9]+]] adds r0, r0, #1 ldr r0, =bar+4 @ CHECK: ldr r0, .Ltmp[[TMP15:[0-9]+]] adds r0, r0, #1 +@ transformation to mov +.section m, "ax", %progbits +@ CHECK-LABEL: f16: +f16: + +@ Representable in ARM, and Thumb with support mov.w or movw + ldr r1, =0x1 +@ CHECK-ARM: mov r1, #1 +@ CHECK-ARMV5: mov r1, #1 +@ CHECK-THUMB: ldr r1, .Ltmp[[TMP16:[0-9]+]] +@ CHECK-THUMB2: mov.w r1, #1 +@ CHECK-BASELINE: movw r1, #1 + +@ Immediate is representable in A1 and T2 modified immediate only not movw + ldr r2, =0x120000 +@ CHECK-ARM: mov r2, #1179648 +@ CHECK-ARMV5: mov r2, #1179648 +@ CHECK-THUMB: ldr r2, .Ltmp[[TMP17:[0-9]+]] +@ CHECK-THUMB2: mov.w r2, #1179648 +@ CHECK-BASELINE: ldr r2, .Ltmp[[TMP16:[0-9]+]] + +@ Immediate can be represented only with movw instruction + ldr r3, =0x1234 +@ CHECK-ARM: movw r3, #4660 +@ CHECK-ARMV5: ldr r3, .Ltmp[[TMP16:[0-9]+]] +@ CHECK-THUMB: ldr r3, .Ltmp[[TMP18:[0-9]+]] +@ CHECK-THUMB2: movw r3, #4660 +@ CHECK-BASELINE: movw r3, #4660 + +@ Immediate can be represented only with T2 modified immediate + ldr r4, =0xabababab +@ CHECK-ARM: ldr r4, .Ltmp[[TMP16:[0-9]+]] +@ CHECK-ARMV5: ldr r4, .Ltmp[[TMP17:[0-9]+]] +@ CHECK-THUMB: ldr r4, .Ltmp[[TMP19:[0-9]+]] +@ CHECK-THUMB2: mov.w r4, #2880154539 +@ CHECK-BASELINE: ldr r4, .Ltmp[[TMP17:[0-9]+]] + +@ Immediate can be represented only with A1 modified immediate + ldr r5, =0x1000000b +@ CHECK-ARM: mov r5, #268435467 +@ CHECK-ARMV5: mov r5, #268435467 +@ CHECK-THUMB: ldr r5, .Ltmp[[TMP20:[0-9]+]] +@ CHECK-THUMB2: ldr r5, .Ltmp[[TMP16:[0-9]+]] +@ CHECK-BASELINE: ldr r5, .Ltmp[[TMP18:[0-9]+]] + +@ Negative numbers can be used with MVN or in Thumb2 with modified immediate + ldr r6, =-1 +@ CHECK-ARM: mvn r6, #0 +@ CHECK-ARMV5: mvn r6, #0 +@ CHECK-THUMB: ldr r6, .Ltmp[[TMP21:[0-9]+]] +@ CHECK-THUMB2: mov.w r6, #-1 +@ CHECK-BASELINE: ldr r6, .Ltmp[[TMP19:[0-9]+]] + ldr r7, =-0x100 +@ CHECK-ARM: mvn r7, #255 +@ CHECK-ARMV5: mvn r7, #255 +@ CHECK-THUMB: ldr r7, .Ltmp[[TMP22:[0-9]+]] +@ CHECK-THUMB2: mvn r7, #255 +@ CHECK-BASELINE: ldr r7, .Ltmp[[TMP20:[0-9]+]] + +@ Constant expressions can be used + .equ expr, 0x10 + 0x10 + ldr r0, = expr +@ CHECK-ARM: mov r0, #32 +@ CHECK-ARMV5: mov r0, #32 +@ CHECK-THUMB: ldr r0, .Ltmp[[TMP23:[0-9]+]] +@ CHECK-THUMB2: mov.w r0, #32 +@ CHECK-BASELINE: movw r0, #32 + ldr r1, = expr - 0x10 +@ CHECK-ARM: mov r1, #16 +@ CHECK-ARMV5: mov r1, #16 +@ CHECK-THUMB: ldr r1, .Ltmp[[TMP24:[0-9]+]] +@ CHECK-THUMB2: mov.w r1, #16 +@ CHECK-BASELINE: movw r1, #16 + +@ usage of translation in macro +.macro usemov_in_a_macro + ldr r2, =0x3 + ldr r3, =expr +.endm +@ CHECK-LABEL: f17: +f17: + usemov_in_a_macro +@ CHECK-ARM: mov r2, #3 +@ CHECK-ARM: mov r3, #32 +@ CHECK-ARMV5: mov r2, #3 +@ CHECK-ARMV5: mov r3, #32 +@ CHECK-THUMB: ldr r2, .Ltmp[[TMP25:[0-9]+]] +@ CHECK-THUMB: ldr r3, .Ltmp[[TMP26:[0-9]+]] +@ CHECK-THUMB2: mov.w r2, #3 +@ CHECK-THUMB2: mov.w r3, #32 +@ CHECK-BASELINE: movw r2, #3 +@ CHECK-BASELINE: movw r3, #32 @ @ Constant Pools @ @ CHECK: .section b,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP0]] -@ CHECK: .long 65537 +@ CHECK: .long 65538 @ CHECK: .section c,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP1]] -@ CHECK: .long 65538 -@ CHECK: .Ltmp[[TMP2]] @ CHECK: .long 65539 +@ CHECK: .Ltmp[[TMP2]] +@ CHECK: .long 65540 @ CHECK: .section d,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP3]] -@ CHECK: .long 65540 +@ CHECK: .long 65541 @ CHECK: .Ltmp[[TMP4]] -@ CHECK: .long 65540 +@ CHECK: .long 65541 @ CHECK: .section e,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP5]] @ CHECK: .long 65542 @ CHECK: .Ltmp[[TMP6]] @@ -185,37 +278,37 @@ f15: @ CHECK-NOT: .section f,"ax",%progbits @ CHECK: .section g,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP7]] @ CHECK: .long foo @ CHECK: .section h,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP8]] @ CHECK: .long f5 @ CHECK: .section i,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP9]] @ CHECK: .long f12 @ CHECK: .section j,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP10]] -@ CHECK: .long 257 +@ CHECK: .long 65544 @ CHECK: .Ltmp[[TMP11]] @ CHECK: .long bar @ CHECK: .section k,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP12]] -@ CHECK: .long 65544 +@ CHECK: .long 65545 @ CHECK: .Ltmp[[TMP13]] @ CHECK: .long baz @ CHECK: .section l,"ax",%progbits -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP14]] -@ CHECK: .long 65545 +@ CHECK: .long 65546 @ CHECK: .Ltmp[[TMP15]] @ CHECK: .long bar+4 diff --git a/test/MC/ARM/load-store-acquire-release-v8-thumb.s b/test/MC/ARM/load-store-acquire-release-v8-thumb.s index e34a26387357..be8d3c324e68 100644 --- a/test/MC/ARM/load-store-acquire-release-v8-thumb.s +++ b/test/MC/ARM/load-store-acquire-release-v8-thumb.s @@ -9,10 +9,10 @@ @ CHECK: ldaexh r2, [r5] @ encoding: [0xd5,0xe8,0xdf,0x2f] @ CHECK: ldaex r1, [r7] @ encoding: [0xd7,0xe8,0xef,0x1f] @ CHECK: ldaexd r6, r7, [r8] @ encoding: [0xd8,0xe8,0xff,0x67] -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release stlexb r1, r3, [r4] stlexh r4, r2, [r5] @@ -22,10 +22,10 @@ @ CHECK: stlexh r4, r2, [r5] @ encoding: [0xc5,0xe8,0xd4,0x2f] @ CHECK: stlex r2, r1, [r7] @ encoding: [0xc7,0xe8,0xe2,0x1f] @ CHECK: stlexd r6, r2, r3, [r8] @ encoding: [0xc8,0xe8,0xf6,0x23] -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release lda r5, [r6] ldab r5, [r6] @@ -33,9 +33,9 @@ @ CHECK: lda r5, [r6] @ encoding: [0xd6,0xe8,0xaf,0x5f] @ CHECK: ldab r5, [r6] @ encoding: [0xd6,0xe8,0x8f,0x5f] @ CHECK: ldah r12, [r9] @ encoding: [0xd9,0xe8,0x9f,0xcf] -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release stl r3, [r0] stlb r2, [r1] @@ -43,6 +43,6 @@ @ CHECK: stl r3, [r0] @ encoding: [0xc0,0xe8,0xaf,0x3f] @ CHECK: stlb r2, [r1] @ encoding: [0xc1,0xe8,0x8f,0x2f] @ CHECK: stlh r2, [r3] @ encoding: [0xc3,0xe8,0x9f,0x2f] -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 -@ CHECK-V7: error: instruction requires: armv8 +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release +@ CHECK-V7: error: instruction requires: acquire/release diff --git a/test/MC/ARM/load-store-acquire-release-v8.s b/test/MC/ARM/load-store-acquire-release-v8.s index bc55364e684b..273519e050b1 100644 --- a/test/MC/ARM/load-store-acquire-release-v8.s +++ b/test/MC/ARM/load-store-acquire-release-v8.s @@ -9,10 +9,10 @@ @ CHECK: ldaexh r2, [r5] @ encoding: [0x9f,0x2e,0xf5,0xe1] @ CHECK: ldaex r1, [r7] @ encoding: [0x9f,0x1e,0x97,0xe1] @ CHECK: ldaexd r6, r7, [r8] @ encoding: [0x9f,0x6e,0xb8,0xe1] -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release stlexb r1, r3, [r4] stlexh r4, r2, [r5] @@ -22,10 +22,10 @@ @ CHECK: stlexh r4, r2, [r5] @ encoding: [0x92,0x4e,0xe5,0xe1] @ CHECK: stlex r2, r1, [r7] @ encoding: [0x91,0x2e,0x87,0xe1] @ CHECK: stlexd r6, r2, r3, [r8] @ encoding: [0x92,0x6e,0xa8,0xe1] -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release lda r5, [r6] ldab r5, [r6] @@ -33,9 +33,9 @@ @ CHECK: lda r5, [r6] @ encoding: [0x9f,0x5c,0x96,0xe1] @ CHECK: ldab r5, [r6] @ encoding: [0x9f,0x5c,0xd6,0xe1] @ CHECK: ldah r12, [r9] @ encoding: [0x9f,0xcc,0xf9,0xe1] -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release stl r3, [r0] stlb r2, [r1] @@ -43,6 +43,6 @@ @ CHECK: stl r3, [r0] @ encoding: [0x93,0xfc,0x80,0xe1] @ CHECK: stlb r2, [r1] @ encoding: [0x92,0xfc,0xc1,0xe1] @ CHECK: stlh r2, [r3] @ encoding: [0x92,0xfc,0xe3,0xe1] -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 -@ CHECK-V7: instruction requires: armv8 +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release +@ CHECK-V7: instruction requires: acquire/release diff --git a/test/MC/ARM/ltorg-darwin.s b/test/MC/ARM/ltorg-darwin.s index 3402f4053cb4..e62aceaa6d27 100644 --- a/test/MC/ARM/ltorg-darwin.s +++ b/test/MC/ARM/ltorg-darwin.s @@ -12,7 +12,7 @@ .section __TEXT,a,regular,pure_instructions @ CHECK-LABEL: f2: f2: - ldr r0, =0x10001 + ldr r0, =0x10002 @ CHECK: ldr r0, Ltmp0 adds r0, r0, #1 adds r0, r0, #1 @@ -20,9 +20,9 @@ f2: .ltorg @ constant pool @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp0: -@ CHECK: .long 65537 +@ CHECK: .long 65538 @ CHECK: .end_data_region @ CHECK-LABEL: f3: @@ -34,7 +34,7 @@ f3: .section __TEXT,b,regular,pure_instructions @ CHECK-LABEL: f4: f4: - ldr r0, =0x10002 + ldr r0, =0x10003 @ CHECK: ldr r0, Ltmp1 adds r0, r0, #1 adds r0, r0, #1 @@ -42,25 +42,25 @@ f4: .ltorg @ constant pool @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp1: -@ CHECK: .long 65538 +@ CHECK: .long 65539 @ CHECK: .end_data_region @ CHECK-LABEL: f5: f5: adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x10003 + ldr r0, =0x10004 @ CHECK: ldr r0, Ltmp2 adds r0, r0, #1 b f6 .ltorg @ constant pool @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp2: -@ CHECK: .long 65539 +@ CHECK: .long 65540 @ CHECK: .end_data_region @ CHECK-LABEL: f6: @@ -93,7 +93,7 @@ f9: .ltorg @ constant pool @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp3: @ CHECK: .long bar @ CHECK: .end_data_region @@ -109,21 +109,21 @@ f10: f11: adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x10004 + ldr r0, =0x10005 @ CHECK: ldr r0, Ltmp4 b f12 .ltorg @ constant pool @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp4: -@ CHECK: .long 65540 +@ CHECK: .long 65541 @ CHECK: .end_data_region @ CHECK-LABEL: f12: f12: adds r0, r0, #1 - ldr r0, =0x10005 + ldr r0, =0x10006 @ CHECK: ldr r0, Ltmp5 .section __TEXT,f,regular,pure_instructions @@ -142,9 +142,9 @@ f13: @ CHECK: .section __TEXT,e,regular,pure_instructions @ constant pool @ CHECK: .data_region -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: Ltmp5: -@ CHECK: .long 65541 +@ CHECK: .long 65542 @ CHECK: .end_data_region @ should not have a constant pool at end of section with empty constant pools diff --git a/test/MC/ARM/ltorg.s b/test/MC/ARM/ltorg.s index e28862cb2a47..a19694c10ec2 100644 --- a/test/MC/ARM/ltorg.s +++ b/test/MC/ARM/ltorg.s @@ -12,16 +12,16 @@ .section a,"ax",%progbits @ CHECK-LABEL: f2: f2: - ldr r0, =0x10001 + ldr r0, =0x10002 @ CHECK: ldr r0, .Ltmp[[TMP0:[0-9+]]] adds r0, r0, #1 adds r0, r0, #1 b f3 .ltorg @ constant pool -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP0]] -@ CHECK: .long 65537 +@ CHECK: .long 65538 @ CHECK-LABEL: f3: f3: @@ -32,30 +32,30 @@ f3: .section b,"ax",%progbits @ CHECK-LABEL: f4: f4: - ldr r0, =0x10002 + ldr r0, =0x10003 @ CHECK: ldr r0, .Ltmp[[TMP1:[0-9+]]] adds r0, r0, #1 adds r0, r0, #1 b f5 .ltorg @ constant pool -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP1]] -@ CHECK: .long 65538 +@ CHECK: .long 65539 @ CHECK-LABEL: f5: f5: adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x10003 + ldr r0, =0x10004 @ CHECK: ldr r0, .Ltmp[[TMP2:[0-9+]]] adds r0, r0, #1 b f6 .ltorg @ constant pool -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP2]] -@ CHECK: .long 65539 +@ CHECK: .long 65540 @ CHECK-LABEL: f6: f6: @@ -86,7 +86,7 @@ f9: b f10 .ltorg @ constant pool -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP3]] @ CHECK: .long bar @@ -101,18 +101,18 @@ f10: f11: adds r0, r0, #1 adds r0, r0, #1 - ldr r0, =0x10004 + ldr r0, =0x10005 @ CHECK: ldr r0, .Ltmp[[TMP4:[0-9+]]] b f12 .ltorg @ constant pool -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP4]] -@ CHECK: .long 65540 +@ CHECK: .long 65541 @ CHECK-LABEL: f12: f12: adds r0, r0, #1 - ldr r0, =0x10005 + ldr r0, =0x10006 @ CHECK: ldr r0, .Ltmp[[TMP5:[0-9+]]] .section f,"ax",%progbits @@ -130,9 +130,9 @@ f13: @ should have a non-empty constant pool at end of this section @ CHECK: .section e,"ax",%progbits @ constant pool -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK: .Ltmp[[TMP5]] -@ CHECK: .long 65541 +@ CHECK: .long 65542 @ should not have a constant pool at end of section with empty constant pools @ CHECK-NOT: .section f,"ax",%progbits diff --git a/test/MC/ARM/macho-movwt.s b/test/MC/ARM/macho-movwt.s new file mode 100644 index 000000000000..6f067cd86dc1 --- /dev/null +++ b/test/MC/ARM/macho-movwt.s @@ -0,0 +1,66 @@ +@ RUN: llvm-mc -triple thumbv7s-apple-ios9.0 %s -filetype obj -o %t.o +@ RUN: llvm-readobj -r %t.o | FileCheck %s + + .thumb + movw r0, :lower16:_x + movt r0, :upper16:_x + + movw r0, :lower16:_x+4 + movt r0, :upper16:_x+4 + + movw r0, :lower16:_x+0x10000 + movt r0, :upper16:_x+0x10000 + + .arm + movw r0, :lower16:_x + movt r0, :upper16:_x + + movw r0, :lower16:_x+4 + movt r0, :upper16:_x+4 + + movw r0, :lower16:_x+0x10000 + movt r0, :upper16:_x+0x10000 + +@ Enter the bizarre world of MachO relocations. First, they're in reverse order +@ to the actual instructions + +@ First column on the second line is the "other half" of the addend, its partner +@ being in the instruction itself. + +@ Third column identifies ARM/Thumb & HI/LO. + +@ CHECK: 0x2C 0 1 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x0 0 1 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x28 0 0 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x1 0 0 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x24 0 1 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x4 0 1 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x20 0 0 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x0 0 0 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x1C 0 1 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x0 0 1 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x18 0 0 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x0 0 0 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x14 0 3 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x0 0 3 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x10 0 2 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x1 0 2 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0xC 0 3 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x4 0 3 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x8 0 2 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x0 0 2 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x4 0 3 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x0 0 3 0 ARM_RELOC_PAIR 0 - + +@ CHECK: 0x0 0 2 1 ARM_RELOC_HALF 0 _x +@ CHECK: 0x0 0 2 0 ARM_RELOC_PAIR 0 - diff --git a/test/MC/ARM/misaligned-blx.s b/test/MC/ARM/misaligned-blx.s new file mode 100644 index 000000000000..b3cef0275280 --- /dev/null +++ b/test/MC/ARM/misaligned-blx.s @@ -0,0 +1,40 @@ +@ RUN: not llvm-mc -triple thumbv7-apple-ios -filetype=obj %s -o /dev/null 2>&1 | FileCheck %s + @ Size: 2 bytes + .thumb_func _f1 + .thumb + .globl _f1 +_f1: + bx lr + + @ A misalgined ARM destination. + .arm + .globl _misaligned +_misaligned: + bx lr + + @ And a properly aligned one. + .globl _aligned + .p2align 2 + .arm +_aligned: + bx lr + + @ Align this Thumb function so we can predict the outcome of + @ "Align(PC, 4)" during blx operation. + .thumb_func _test + .thumb + .p2align 2 + .globl _test +_test: + blx _misaligned @ PC=0 (mod 4) + movs r0, r0 + blx _misaligned @ PC=2 (mod 4) + movs r0, r0 + blx _aligned @ PC=0 (mod 4) + movs r0, r0 + blx _aligned @ PC=2 (mod 4) + +@ CHECK: error: misaligned ARM call destination +@ CHECK: blx _misaligned +@ CHECK: error: misaligned ARM call destination +@ CHECK: blx _misaligned diff --git a/test/MC/ARM/modified-immediate-fixup-error.s b/test/MC/ARM/modified-immediate-fixup-error.s new file mode 100644 index 000000000000..2d111751cc1f --- /dev/null +++ b/test/MC/ARM/modified-immediate-fixup-error.s @@ -0,0 +1,14 @@ +@ PR24346 +@ RUN: not llvm-mc -triple=arm-linux-gnueabi -filetype=obj < %s 2>&1 | FileCheck %s + + .data + .align 8 +L2: + .word 0 + .align 8 + .byte 0 +L1: + + .text +@ CHECK: error: out of range immediate fixup value + add r0, r0, #(L1 - L2) diff --git a/test/MC/ARM/modified-immediate-fixup.s b/test/MC/ARM/modified-immediate-fixup.s new file mode 100644 index 000000000000..288814b4009e --- /dev/null +++ b/test/MC/ARM/modified-immediate-fixup.s @@ -0,0 +1,15 @@ +@ PR24346 +@ RUN: llvm-mc < %s -triple=arm-linux-gnueabi -filetype=obj -o - \ +@ RUN: | llvm-objdump --disassemble -arch=arm - | FileCheck %s + + .data + .align 8 +L2: + .word 0 + .align 8 + .word 0 +L1: + + .text +@ CHECK: add r0, r0, #260 + add r0, r0, #(L1 - L2) diff --git a/test/MC/ARM/not-armv4.s b/test/MC/ARM/not-armv4.s index a1ba611a61e4..d25281a4bc47 100644 --- a/test/MC/ARM/not-armv4.s +++ b/test/MC/ARM/not-armv4.s @@ -6,3 +6,8 @@ clz r4,r9 @ CHECK: error: instruction requires: armv6t2 rbit r4,r9 + +@ CHECK: error: instruction requires: armv6t2 +movw r4,#0x1234 +@ CHECK: error: instruction requires: armv6t2 +mov r4,#0x1234 diff --git a/test/MC/ARM/pool.s b/test/MC/ARM/pool.s index 782f67e1fea5..c87d37f9efd0 100644 --- a/test/MC/ARM/pool.s +++ b/test/MC/ARM/pool.s @@ -2,7 +2,7 @@ .syntax unified - .align 2 + .p2align 2 .global pool .type pool,%function pool: @@ -12,7 +12,7 @@ pool: @ CHECK-LABEL: pool @ CHECK: ldr r0, .Ltmp0 -@ CHECK: .align 2 +@ CHECK: .p2align 2 @ CHECK-LABEL: .Ltmp0: @ CHECK: .long 3126770193 diff --git a/test/MC/ARM/ras-extension.s b/test/MC/ARM/ras-extension.s new file mode 100644 index 000000000000..019d84ca080d --- /dev/null +++ b/test/MC/ARM/ras-extension.s @@ -0,0 +1,6 @@ +@ RUN: llvm-mc -triple armv8a-none-eabi -mattr=+ras -show-encoding %s | FileCheck %s --check-prefix=ARM +@ RUN: llvm-mc -triple thumbv8a-none-eabi -mattr=+ras -show-encoding %s | FileCheck %s --check-prefix=THUMB + + esb +@ ARM: esb @ encoding: [0x10,0xf0,0x20,0xe3] +@ THUMB: esb.w @ encoding: [0xaf,0xf3,0x10,0x80] diff --git a/test/MC/ARM/symbol-variants.s b/test/MC/ARM/symbol-variants.s index af1bc07b5e1a..c54190587a27 100644 --- a/test/MC/ARM/symbol-variants.s +++ b/test/MC/ARM/symbol-variants.s @@ -84,8 +84,14 @@ bl f05(plt) @ CHECK: 60 R_ARM_TLS_GOTDESC f24 @ CHECK: 64 R_ARM_TLS_GOTDESC f25 +@ prel31 (relative) +.word f26(PREL31)-. +.word f27(prel31)-. +@CHECK: 68 R_ARM_PREL31 f26 +@CHECK: 6c R_ARM_PREL31 f27 + @ got_prel -.word f26(GOT_PREL) + (. - .Lsym) - ldr r3, =f27(GOT_PREL) -@ CHECK: 68 R_ARM_GOT_PREL f26 -@ CHECK: 70 R_ARM_GOT_PREL f27 +.word f28(GOT_PREL) + (. - .Lsym) + ldr r3, =f29(GOT_PREL) +@ CHECK: 70 R_ARM_GOT_PREL f28 +@ CHECK: 78 R_ARM_GOT_PREL f29 diff --git a/test/MC/ARM/thumb-branch-errors.s b/test/MC/ARM/thumb-branch-errors.s new file mode 100644 index 000000000000..82525c15a54a --- /dev/null +++ b/test/MC/ARM/thumb-branch-errors.s @@ -0,0 +1,22 @@ +@ RUN: not llvm-mc -triple=thumbv7-apple-darwin < %s 2>&1 | FileCheck %s + +@------------------------------------------------------------------------------ +@ Branch targets destined for ARM mode must == 0 (mod 4), otherwise (mod 2). +@------------------------------------------------------------------------------ + + b #1 + bl #1 + cbnz r2, #1 + beq #1 + blx #2 + +@ CHECK: error: branch target out of range +@ CHECK: b #1 +@ CHECK: error: invalid operand for instruction +@ CHECK: bl #1 +@ CHECK: error: invalid operand for instruction +@ CHECK: cbnz r2, #1 +@ CHECK: error: branch target out of range +@ CHECK: beq #1 +@ CHECK: error: invalid operand for instruction +@ CHECK: blx #2 diff --git a/test/MC/ARM/thumb-movwt-reloc.s b/test/MC/ARM/thumb-movwt-reloc.s new file mode 100644 index 000000000000..c00cf1c1c9e0 --- /dev/null +++ b/test/MC/ARM/thumb-movwt-reloc.s @@ -0,0 +1,27 @@ +@ RUN: llvm-mc -triple thumbv8m.base-eabi -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple thumbv8m.base-eabi -filetype obj -o - %s | llvm-readobj -r \ +@ RUN: | FileCheck -check-prefix CHECK-RELOCATIONS %s + + .syntax unified + + .type function,%function +function: + bx lr + + .global external + .type external,%function + + .type test,%function +test: + movw r0, :lower16:function + movt r0, :upper16:function + +@ CHECK-LABEL: test: +@ CHECK: movw r0, :lower16:function +@ CHECK: movt r0, :upper16:function + +@ CHECK-RELOCATIONS: Relocations [ +@ CHECK-RELOCATIONS: 0x2 R_ARM_THM_MOVW_ABS_NC function 0x0 +@ CHECK-RELOCATIONS: 0x6 R_ARM_THM_MOVT_ABS function 0x0 +@ CHECK-RELOCATIONS: ] + diff --git a/test/MC/ARM/thumb1-relax-8m-baseline.s b/test/MC/ARM/thumb1-relax-8m-baseline.s new file mode 100644 index 000000000000..e9c88bb462cb --- /dev/null +++ b/test/MC/ARM/thumb1-relax-8m-baseline.s @@ -0,0 +1,10 @@ +@ RUN: not llvm-mc -triple thumbv6m-none-eabi -filetype=obj -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=CHECK-V6M +@ RUN: llvm-mc -triple thumbv8m.base-none-eabi -filetype=obj -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=CHECK-V8MBASE --allow-empty + +@ CHECK-V8MBASE-NOT: out of range pc-relative fixup value +@ CHECK-V6M: out of range pc-relative fixup value + b Lfar2 + + .space 2050 +Lfar2: + .word 42 diff --git a/test/MC/ARM/thumb1-relax-bcc.s b/test/MC/ARM/thumb1-relax-bcc.s index 02fde2e040ea..f17840ff763f 100644 --- a/test/MC/ARM/thumb1-relax-bcc.s +++ b/test/MC/ARM/thumb1-relax-bcc.s @@ -9,4 +9,4 @@ _func1: @ CHECK-ERROR: unsupported relocation on symbol @ CHECK-ELF: 7f f4 fe af bne.w #-4 -@ CHECK-ELF-NEXT: R_ARM_THM_JUMP24 _func2 +@ CHECK-ELF-NEXT: R_ARM_THM_JUMP19 _func2 diff --git a/test/MC/ARM/thumb2-branches.s b/test/MC/ARM/thumb2-branches.s index 9148233a79c9..51f01e320d83 100644 --- a/test/MC/ARM/thumb2-branches.s +++ b/test/MC/ARM/thumb2-branches.s @@ -284,3 +284,21 @@ @ CHECK: addeq r0, r1 @ encoding: [0x08,0x44] @ CHECK: bne #128 @ encoding: [0x40,0xe0] + +@------------------------------------------------------------------------------ +@ Branch targets destined for ARM mode must == 0 (mod 4), otherwise (mod 2). +@------------------------------------------------------------------------------ + + b #2 + bl #2 + beq #2 + cbz r0, #2 + @ N.b. destination is "align(PC, 4) + imm" so imm is still 4-byte + @ aligned even though current PC may not and destination must be. + blx #4 + +@ CHECK: b #2 @ encoding: [0x01,0xe0] +@ CHECK: bl #2 @ encoding: [0x00,0xf0,0x01,0xf8] +@ CHECK: beq #2 @ encoding: [0x01,0xd0] +@ CHECK: cbz r0, #2 @ encoding: [0x08,0xb1] +@ CHECK: blx #4 @ encoding: [0x00,0xf0,0x02,0xe8] diff --git a/test/MC/ARM/thumb2-diagnostics.s b/test/MC/ARM/thumb2-diagnostics.s index 96978899faa2..38cc74dee565 100644 --- a/test/MC/ARM/thumb2-diagnostics.s +++ b/test/MC/ARM/thumb2-diagnostics.s @@ -102,3 +102,19 @@ foo2: @ CHECK-ERRORS: error: invalid operand for instruction @ CHECK-ERRORS: error: invalid operand for instruction + + @ PC is not valid as base of load + ldr r0, [pc, r0] + ldrb r1, [pc, r2] + ldrh r3, [pc, r3] + pld r4, [pc, r5] + str r6, [pc, r7] + strb r7 [pc, r8] + strh r9, [pc, r10] +@ CHECK-ERRORS: error: instruction requires: arm-mode +@ CHECK-ERRORS: error: instruction requires: arm-mode +@ CHECK-ERRORS: error: instruction requires: arm-mode +@ CHECK-ERRORS: error: invalid operand for instruction +@ CHECK-ERRORS: error: instruction requires: arm-mode +@ CHECK-ERRORS: error: immediate value expected for vector index +@ CHECK-ERRORS: error: instruction requires: arm-mode diff --git a/test/MC/ARM/thumb2-ldrb-ldrh.s b/test/MC/ARM/thumb2-ldrb-ldrh.s index 8c97987fc68d..db589dd63349 100644 --- a/test/MC/ARM/thumb2-ldrb-ldrh.s +++ b/test/MC/ARM/thumb2-ldrb-ldrh.s @@ -1,5 +1,5 @@ -@ RUN: not llvm-mc -triple thumbv7a-none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK -@ RUN: not llvm-mc -triple thumbv7m-none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK +@ RUN: not llvm-mc -triple thumbv7a-none-eabi -show-encoding < %s 2>&1 | FileCheck %s +@ RUN: not llvm-mc -triple thumbv7m-none-eabi -show-encoding < %s 2>&1 | FileCheck %s @ Thumb2 LDRS?[BH] are not valid when Rt == PC (these encodings are used for @ preload hints). diff --git a/test/MC/ARM/thumbv8m.s b/test/MC/ARM/thumbv8m.s new file mode 100644 index 000000000000..a0830a227a15 --- /dev/null +++ b/test/MC/ARM/thumbv8m.s @@ -0,0 +1,282 @@ +// RUN: not llvm-mc -triple=thumbv8m.base -show-encoding < %s 2>%t \ +// RUN: | FileCheck --check-prefix=CHECK-BASELINE --check-prefix=CHECK %s +// RUN: FileCheck --check-prefix=UNDEF-BASELINE --check-prefix=UNDEF < %t %s +// RUN: not llvm-mc -triple=thumbv8m.main -show-encoding < %s 2>%t \ +// RUN: | FileCheck --check-prefix=CHECK-MAINLINE --check-prefix=CHECK %s +// RUN: FileCheck --check-prefix=UNDEF-MAINLINE --check-prefix=UNDEF < %t %s +// RUN: not llvm-mc -triple=thumbv8m.main -mattr=+dsp,+t2xtpk -show-encoding < %s 2>%t \ +// RUN: | FileCheck --check-prefix=CHECK-MAINLINE_DSP --check-prefix=CHECK %s +// RUN: FileCheck --check-prefix=UNDEF-MAINLINE_DSP --check-prefix=UNDEF < %t %s + +// Simple check that baseline is v6M and mainline is v7M +// UNDEF-BASELINE: error: instruction requires: thumb2 +// UNDEF-MAINLINE-NOT: error: instruction requires: +// UNDEF-MAINLINE_DSP-NOT: error: instruction requires: +mov.w r0, r0 + +// Check that .arm is invalid +// UNDEF: target does not support ARM mode +.arm + +// And only +dsp,+t2xtpk has DSP and t2xtpk instructions +// UNDEF-BASELINE: error: instruction requires: arm-mode +// UNDEF-MAINLINE: error: instruction requires: arm-mode +// UNDEF-MAINLINE_DSP-NOT: error: instruction requires: +qadd16 r0, r0, r0 +// UNDEF-BASELINE: error: instruction requires: arm-mode +// UNDEF-MAINLINE: error: instruction requires: arm-mode +// UNDEF-MAINLINE_DSP-NOT: error: instruction requires: +uxtab16 r0, r1, r2 + +// Instruction availibility checks + +// 'Barrier instructions' + +// CHECK: isb sy @ encoding: [0xbf,0xf3,0x6f,0x8f] +isb sy + +// 'Code optimization' + +// CHECK: cbz r3, .Ltmp0 @ encoding: [0x03'A',0xb1'A'] +// CHECK-NEXT: @ fixup A - offset: 0, value: .Ltmp0, kind: fixup_arm_thumb_cb +cbz r3, 1f + +// CHECK: cbnz r3, .Ltmp0 @ encoding: [0x03'A',0xb9'A'] +// CHECK-NEXT: @ fixup A - offset: 0, value: .Ltmp0, kind: fixup_arm_thumb_cb +cbnz r3, 1f + +// CHECK: b.w .Ltmp0 @ encoding: [A,0xf0'A',A,0x90'A'] +// CHECK-NEXT: @ fixup A - offset: 0, value: .Ltmp0, kind: fixup_t2_uncondbranch +b.w 1f + +// CHECK: sdiv r1, r2, r3 @ encoding: [0x92,0xfb,0xf3,0xf1] +sdiv r1, r2, r3 + +// CHECK: udiv r1, r2, r3 @ encoding: [0xb2,0xfb,0xf3,0xf1] +udiv r1, r2, r3 + +// 'Exclusives from ARMv7-M' + +// CHECK: clrex @ encoding: [0xbf,0xf3,0x2f,0x8f] +clrex + +// CHECK: ldrex r1, [r2, #4] @ encoding: [0x52,0xe8,0x01,0x1f] +ldrex r1, [r2, #4] + +// CHECK: ldrexb r1, [r2] @ encoding: [0xd2,0xe8,0x4f,0x1f] +ldrexb r1, [r2] + +// CHECK: ldrexh r1, [r2] @ encoding: [0xd2,0xe8,0x5f,0x1f] +ldrexh r1, [r2] + +// UNDEF-BASELINE: error: instruction requires: !armv*m thumb2 +// UNDEF-MAINLINE: error: instruction requires: !armv*m +ldrexd r0, r1, [r2] + +// CHECK: strex r1, r2, [r3, #4] @ encoding: [0x43,0xe8,0x01,0x21] +strex r1, r2, [r3, #4] + +// CHECK: strexb r1, r2, [r3] @ encoding: [0xc3,0xe8,0x41,0x2f] +strexb r1, r2, [r3] + +// CHECK: strexh r1, r2, [r3] @ encoding: [0xc3,0xe8,0x51,0x2f] +strexh r1, r2, [r3] + +// UNDEF-BASELINE: error: instruction requires: !armv*m thumb2 +// UNDEF-MAINLINE: error: instruction requires: !armv*m +strexd r0, r1, r2, [r3] + +// 'XO generation' + +// CHECK: movw r1, #65535 @ encoding: [0x4f,0xf6,0xff,0x71] +movw r1, #0xffff + +// CHECK: movt r1, #65535 @ encoding: [0xcf,0xf6,0xff,0x71] +movt r1, #0xffff + +// 'Acquire/Release from ARMv8-A' + +// CHECK: lda r1, [r2] @ encoding: [0xd2,0xe8,0xaf,0x1f] +lda r1, [r2] + +// CHECK: ldab r1, [r2] @ encoding: [0xd2,0xe8,0x8f,0x1f] +ldab r1, [r2] + +// CHECK: ldah r1, [r2] @ encoding: [0xd2,0xe8,0x9f,0x1f] +ldah r1, [r2] + +// CHECK: stl r1, [r3] @ encoding: [0xc3,0xe8,0xaf,0x1f] +stl r1, [r3] + +// CHECK: stlb r1, [r3] @ encoding: [0xc3,0xe8,0x8f,0x1f] +stlb r1, [r3] + +// CHECK: stlh r1, [r3] @ encoding: [0xc3,0xe8,0x9f,0x1f] +stlh r1, [r3] + +// CHECK: ldaex r1, [r2] @ encoding: [0xd2,0xe8,0xef,0x1f] +ldaex r1, [r2] + +// CHECK: ldaexb r1, [r2] @ encoding: [0xd2,0xe8,0xcf,0x1f] +ldaexb r1, [r2] + +// CHECK: ldaexh r1, [r2] @ encoding: [0xd2,0xe8,0xdf,0x1f] +ldaexh r1, [r2] + +// UNDEF: error: instruction requires: !armv*m +ldaexd r0, r1, [r2] + +// CHECK: stlex r1, r2, [r3] @ encoding: [0xc3,0xe8,0xe1,0x2f] +stlex r1, r2, [r3] + +// CHECK: stlexb r1, r2, [r3] @ encoding: [0xc3,0xe8,0xc1,0x2f] +stlexb r1, r2, [r3] + +// CHECK: stlexh r1, r2, [r3] @ encoding: [0xc3,0xe8,0xd1,0x2f] +stlexh r1, r2, [r3] + +// UNDEF: error: instruction requires: !armv*m +stlexd r0, r1, r2, [r2] + +// ARMv8-M Security Extensions + +// CHECK: sg @ encoding: [0x7f,0xe9,0x7f,0xe9] +sg + +// CHECK: bxns r0 @ encoding: [0x04,0x47] +bxns r0 + +// UNDEF-BASELINE: error: invalid operand for instruction +// UNDEF-BASELINE: error: conditional execution not supported in Thumb1 +// CHECK-MAINLINE: it eq @ encoding: [0x08,0xbf] +// CHECK-MAINLINE: bxnseq r1 @ encoding: [0x0c,0x47] +it eq +bxnseq r1 + +// CHECK: bxns lr @ encoding: [0x74,0x47] +bxns lr + +// CHECK: blxns r0 @ encoding: [0x84,0x47] +blxns r0 + +// UNDEF-BASELINE: error: invalid operand for instruction +// UNDEF-BASELINE: error: conditional execution not supported in Thumb1 +// CHECK-MAINLINE: it eq @ encoding: [0x08,0xbf] +// CHECK-MAINLINE: blxnseq r1 @ encoding: [0x8c,0x47] +it eq +blxnseq r1 + +// CHECK: tt r0, r1 @ encoding: [0x41,0xe8,0x00,0xf0] +tt r0, r1 + +// CHECK: tt r0, sp @ encoding: [0x4d,0xe8,0x00,0xf0] +tt r0, sp + +// CHECK: tta r0, r1 @ encoding: [0x41,0xe8,0x80,0xf0] +tta r0, r1 + +// CHECK: ttt r0, r1 @ encoding: [0x41,0xe8,0x40,0xf0] +ttt r0, r1 + +// CHECK: ttat r0, r1 @ encoding: [0x41,0xe8,0xc0,0xf0] +ttat r0, r1 + +// 'Lazy Load/Store Multiple' + +// UNDEF-BASELINE: error: instruction requires: armv8m.main +// CHECK-MAINLINE: vlldm r5 @ encoding: [0x35,0xec,0x00,0x0a] +// CHECK-MAINLINE_DSP: vlldm r5 @ encoding: [0x35,0xec,0x00,0x0a] +vlldm r5 + +// UNDEF-BASELINE: error: instruction requires: armv8m.main +// CHECK-MAINLINE: vlstm r10 @ encoding: [0x2a,0xec,0x00,0x0a] +// CHECK-MAINLINE_DSP: vlstm r10 @ encoding: [0x2a,0xec,0x00,0x0a] +vlstm r10 + +// New SYSm's + +MRS r1, MSP_NS +// CHECK: mrs r1, msp_ns @ encoding: [0xef,0xf3,0x88,0x81] +MSR PSP_NS, r2 +// CHECK: msr psp_ns, r2 @ encoding: [0x82,0xf3,0x89,0x88] +MRS r3, PRIMASK_NS +// CHECK: mrs r3, primask_ns @ encoding: [0xef,0xf3,0x90,0x83] +MSR CONTROL_NS, r4 +// CHECK: msr control_ns, r4 @ encoding: [0x84,0xf3,0x94,0x88] +MRS r5, SP_NS +// CHECK: mrs r5, sp_ns @ encoding: [0xef,0xf3,0x98,0x85] +MRS r6,MSPLIM +// CHECK: mrs r6, msplim @ encoding: [0xef,0xf3,0x0a,0x86] +MRS r7,PSPLIM +// CHECK: mrs r7, psplim @ encoding: [0xef,0xf3,0x0b,0x87] +MSR MSPLIM,r8 +// CHECK: msr msplim, r8 @ encoding: [0x88,0xf3,0x0a,0x88] +MSR PSPLIM,r9 +// CHECK: msr psplim, r9 @ encoding: [0x89,0xf3,0x0b,0x88] + +MRS r10, MSPLIM_NS +// CHECK-MAINLINE: mrs r10, msplim_ns @ encoding: [0xef,0xf3,0x8a,0x8a] +// UNDEF-BASELINE: error: invalid operand for instruction +MSR PSPLIM_NS, r11 +// CHECK-MAINLINE: msr psplim_ns, r11 @ encoding: [0x8b,0xf3,0x8b,0x88] +// UNDEF-BASELINE: error: invalid operand for instruction +MRS r12, BASEPRI_NS +// CHECK-MAINLINE: mrs r12, basepri_ns @ encoding: [0xef,0xf3,0x91,0x8c] +// UNDEF-BASELINE: error: invalid operand for instruction +MRS r12, BASEPRI_MAX_NS +// CHECK-MAINLINE: mrs r12, basepri_max_ns @ encoding: [0xef,0xf3,0x92,0x8c] +// UNDEF-BASELINE: error: invalid operand for instruction +MSR FAULTMASK_NS, r14 +// CHECK-MAINLINE: msr faultmask_ns, lr @ encoding: [0x8e,0xf3,0x93,0x88] +// UNDEF-BASELINE: error: invalid operand for instruction + +// Invalid operand tests +// UNDEF: error: invalid operand for instruction +// UNDEF: sg #0 +sg #0 +// UNDEF: error: invalid operand for instruction +// UNDEF: sg r0 +sg r0 +// UNDEF: error: invalid operand for instruction +// UNDEF: bxns r0, r1 +bxns r0, r1 +// UNDEF: error: invalid operand for instruction +// UNDEF: blxns r0, #0 +blxns r0, #0 +// UNDEF: error: invalid operand for instruction +// UNDEF: blxns label +blxns label +// UNDEF: error: invalid operand for instruction +// UNDEF: tt r0, r1, r2 +tt r0, r1, r2 +// UNDEF: error: invalid operand for instruction +// UNDEF: tt r0, [r1] +tt r0, [r1] +// UNDEF: error: invalid operand for instruction +// UNDEF: tt r0, r1, #4 +tt r0, r1, #4 +// UNDEF: error: invalid operand for instruction +// UNDEF: tt r0, #4 +tt r0, #4 + +// Unpredictable operands +// UNDEF: error: invalid operand for instruction +// UNDEF: blxns pc +blxns pc +// UNDEF: error: invalid operand for instruction +// UNDEF: tt sp, r0 +tt sp, r0 +// UNDEF: error: invalid operand for instruction +// UNDEF: tt pc, r0 +tt pc, r0 +// UNDEF: error: invalid operand for instruction +// UNDEF: tt r0, pc +tt r0, pc + +// UNDEF: error: invalid operand for instruction +// UNDEF: vlldm pc +vlldm pc + +// UNDEF: error: invalid operand for instruction +// UNDEF: vlstm pc +vlstm pc diff --git a/test/MC/ARM/tls-directives.s b/test/MC/ARM/tls-directives.s new file mode 100644 index 000000000000..69a026892899 --- /dev/null +++ b/test/MC/ARM/tls-directives.s @@ -0,0 +1,50 @@ +@ RUN: llvm-mc -triple thumbv7-apple-ios -filetype=obj -o %t %s +@ RUN: llvm-objdump -macho -p -indirect-symbols %t | FileCheck %s + +@ CHECK: Indirect symbols for (__DATA,__thread_ptr) +@ CHECK: 0x0000001c 5 _a + + +@ CHECK: sectname __thread_data +@ CHECK: segname __DATA +@ CHECK: type S_THREAD_LOCAL_REGULAR + +@ CHECK: sectname __thread_vars +@ CHECK: segname __DATA +@ CHECK: type S_THREAD_LOCAL_VARIABLES + +@ CHECK: sectname __thread_bss +@ CHECK: segname __DATA +@ CHECK: type S_THREAD_LOCAL_ZEROFILL + +@ CHECK: sectname __thread_ptr +@ CHECK: segname __DATA +@ CHECK: type S_THREAD_LOCAL_VARIABLE_POINTERS + + + .section __DATA,__thread_data,thread_local_regular + .p2align 2 +_b$tlv$init: + .long 42 + + .section __DATA,__thread_vars,thread_local_variables + .globl _b +_b: + .long __tlv_bootstrap + .long 0 + .long _b$tlv$init + +.tbss _c$tlv$init, 4, 2 @ @c + + .globl _c +_c: + .long __tlv_bootstrap + .long 0 + .long _c$tlv$init + + + .section __DATA,__thread_ptr,thread_local_variable_pointers + .p2align 2 +L_a$non_lazy_ptr: + .indirect_symbol _a + .long 0 diff --git a/test/MC/AsmParser/comments-x86-darwin.s b/test/MC/AsmParser/comments-x86-darwin.s index e201f48b1d79..5a873495ce67 100644 --- a/test/MC/AsmParser/comments-x86-darwin.s +++ b/test/MC/AsmParser/comments-x86-darwin.s @@ -1,7 +1,7 @@ // RUN: llvm-mc -triple x86_64-apple-darwin %s 2>&1 | FileCheck %s # ensure that single '#' comments are worink as expected on x86 darwin -.align 3 # test single hash after align -// CHECK: .align 3 +.p2align 3 # test single hash after align +// CHECK: .p2align 3 foo: # single hash should be ignored as comment // CHECK-LABEL: foo: movl %esp, %ebp # same after an instruction diff --git a/test/MC/AsmParser/directive_align.s b/test/MC/AsmParser/directive_align.s index 7ce28559d951..9eb1d7f2d8fa 100644 --- a/test/MC/AsmParser/directive_align.s +++ b/test/MC/AsmParser/directive_align.s @@ -1,7 +1,7 @@ # RUN: not llvm-mc -triple i386-apple-darwin9 %s | FileCheck %s # CHECK: TEST0: -# CHECK: .align 1 +# CHECK: .p2align 1 TEST0: .align 1 diff --git a/test/MC/AsmParser/directive_file-2.s b/test/MC/AsmParser/directive_file-2.s new file mode 100644 index 000000000000..ff6df5116ad5 --- /dev/null +++ b/test/MC/AsmParser/directive_file-2.s @@ -0,0 +1,11 @@ +// RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s +// Test for Bug 11740 +// This testcase has two directive files, +// when compiled with -g, this testcase will not report error, +// but keep the debug info existing in the assembly file. + + .file "hello" + .file 1 "world" + +// CHECK: .file "hello" +// CHECK: .file 1 "world" diff --git a/test/MC/AsmParser/directive_file-errors.s b/test/MC/AsmParser/directive_file-errors.s deleted file mode 100644 index 5ae2bbe80051..000000000000 --- a/test/MC/AsmParser/directive_file-errors.s +++ /dev/null @@ -1,9 +0,0 @@ -// RUN: not llvm-mc -g -triple i386-unknown-unknown %s 2> %t.err | FileCheck %s -// RUN: FileCheck --check-prefix=CHECK-ERRORS %s < %t.err -// Test for Bug 11740 - - .file "hello" - .file 1 "world" - -// CHECK: .file "hello" -// CHECK-ERRORS:6:9: error: input can't have .file dwarf directives when -g is used to generate dwarf debug info for assembly code diff --git a/test/MC/AsmParser/directive_fill.s b/test/MC/AsmParser/directive_fill.s index 28d7fa2a3435..64d0936e5165 100644 --- a/test/MC/AsmParser/directive_fill.s +++ b/test/MC/AsmParser/directive_fill.s @@ -1,66 +1,53 @@ # RUN: llvm-mc -triple i386-unknown-unknown %s 2> %t.err | FileCheck %s # RUN: FileCheck --check-prefix=CHECK-WARNINGS %s < %t.err +# RUN: llvm-mc -triple i386-unknown-unknown -filetype=obj -o %t.o %s 2> %t.err +# RUN: FileCheck --check-prefix=OBJ-WARNINGS %s < %t.err # CHECK: TEST0: -# CHECK: .byte 10 +# CHECK: .fill 1, 1, 0xa TEST0: .fill 1, 1, 10 # CHECK: TEST1: -# CHECK: .short 3 -# CHECK: .short 3 +# CHECK: .fill 2, 2, 0x3 TEST1: .fill 2, 2, 3 # CHECK: TEST2: -# CHECK: .long 4 -# CHECK: .long 0 +# CHECK: .fill 1, 8, 0x4 TEST2: .fill 1, 8, 4 # CHECK: TEST3 -# CHECK: .byte 0 -# CHECK: .byte 0 -# CHECK: .byte 0 -# CHECK: .byte 0 +# CHECK: .fill 4 TEST3: .fill 4 # CHECK: TEST4 -# CHECK: .short 0 -# CHECK: .short 0 -# CHECK: .short 0 -# CHECK: .short 0 +# CHECK: .fill 4, 2 TEST4: .fill 4, 2 # CHECK: TEST5 -# CHECK: .short 2 -# CHECK: .byte 0 -# CHECK: .short 2 -# CHECK: .byte 0 -# CHECK: .short 2 -# CHECK: .byte 0 -# CHECK: .short 2 -# CHECK: .byte 0 +# CHECK: .fill 4, 3, 0x2 TEST5: .fill 4, 3, 2 # CHECK: TEST6 -# CHECK: .long 2 -# CHECK: .long 0 +# CHECK: .fill 1, 8, 0x2 # CHECK-WARNINGS: '.fill' directive with size greater than 8 has been truncated to 8 TEST6: .fill 1, 9, 2 # CHECK: TEST7 -# CHECK: .long 0 -# CHECK: .long 0 +# CHECK: .fill 1, 8, 0x0 # CHECK-WARNINGS: '.fill' directive pattern has been truncated to 32-bits TEST7: .fill 1, 8, 1<<32 -# CHECK-WARNINGS: '.fill' directive with negative repeat count has no effect +# CHECK: TEST8 +# CHECK: .fill -1, 8, 0x1 +# OBJ-WARNINGS: '.fill' directive with negative repeat count has no effect TEST8: .fill -1, 8, 1 @@ -69,7 +56,17 @@ TEST9: .fill 1, -1, 1 # CHECK: TEST10 -# CHECK: .short 22136 -# CHECK: .byte 52 +# CHECK: .fill 1, 3, 0x12345678 TEST10: .fill 1, 3, 0x12345678 + +# CHECK: TEST11 +# CHECK: .fill TEST11-TEST10, 1, 0x0 +TEST11: + .fill TEST11 - TEST10 + +# CHECK: TEST12 +# CHECK: .fill TEST11-TEST12, 3, 0x12345678 +# OBJ-WARNINGS: '.fill' directive with negative repeat count has no effect +TEST12: + .fill TEST11 - TEST12, 3, 0x12345678 diff --git a/test/MC/AsmParser/directive_space.s b/test/MC/AsmParser/directive_space.s index fc5aeb4b6338..eadc4fc63831 100644 --- a/test/MC/AsmParser/directive_space.s +++ b/test/MC/AsmParser/directive_space.s @@ -14,3 +14,8 @@ TEST1: # CHECK: .space 1 TEST2: .skip 1 + +# CHECK: TEST3 +# CHECK: .space TEST0-TEST1 +TEST3: + .space TEST0 - TEST1 diff --git a/test/MC/AsmParser/expr-shr.s b/test/MC/AsmParser/expr-shr.s index 792bef050d31..105858cd6a8d 100644 --- a/test/MC/AsmParser/expr-shr.s +++ b/test/MC/AsmParser/expr-shr.s @@ -1,5 +1,5 @@ -// RUN: llvm-mc -triple x86_64-unknown-unknown-elf %s | FileCheck %s --check-prefix=CHECK -// RUN: llvm-mc -triple x86_64-unknown-darwin %s | FileCheck %s --check-prefix=CHECK +// RUN: llvm-mc -triple x86_64-unknown-unknown-elf %s | FileCheck %s +// RUN: llvm-mc -triple x86_64-unknown-darwin %s | FileCheck %s // RUN: llvm-mc -triple x86_64-pc-windows-msvc %s | FileCheck %s --check-prefix=MSVC .data diff --git a/test/MC/AsmParser/floating-literals.s b/test/MC/AsmParser/floating-literals.s index 6578e32ce822..de0b4ca06401 100644 --- a/test/MC/AsmParser/floating-literals.s +++ b/test/MC/AsmParser/floating-literals.s @@ -58,25 +58,19 @@ .float -0x1.0p0 # CHECK-ERROR: invalid hexadecimal floating-point constant: expected at least one exponent digit -# CHECK-ERROR: unexpected token in directive .float 0xa.apa # CHECK-ERROR: invalid hexadecimal floating-point constant: expected at least one exponent digit -# CHECK-ERROR: unexpected token in directive .double -0x1.2p+ # CHECK-ERROR: invalid hexadecimal floating-point constant: expected at least one exponent digit -# CHECK-ERROR: unexpected token in directive .double -0x1.2p # CHECK-ERROR: invalid hexadecimal floating-point constant: expected at least one significand digit -# CHECK-ERROR: unexpected token in directive .float 0xp2 # CHECK-ERROR: invalid hexadecimal floating-point constant: expected at least one significand digit -# CHECK-ERROR: unexpected token in directive .float 0x.p5 # CHECK-ERROR: error: invalid hexadecimal floating-point constant: expected exponent part 'p' -# CHECK-ERROR: unexpected token in directive .float 0x1.2 diff --git a/test/MC/AsmParser/hash-directive.s b/test/MC/AsmParser/hash-directive.s new file mode 100644 index 000000000000..4c242fd9a0c8 --- /dev/null +++ b/test/MC/AsmParser/hash-directive.s @@ -0,0 +1,23 @@ +# RUN: not llvm-mc -triple i386-unknown-unknown %s 2>&1 | FileCheck %s +error +# CHECK: hash-directive.s:[[@LINE-1]]:1: error +# 3 "FILE1" 1 #<- This is a CPP Hash w/ comment +error +# CHECK: FILE1:3:1: error +# 0 "" 2 #<- This is too +error +# CHECK: hash-directive.s:[[@LINE-1]]:1: error + # 1 "FILE2" 2 #<- This is a comment +error +# CHECK: hash-directive.s:[[@LINE-1]]:1: error +nop; # 6 "FILE3" 2 #<- This is a still comment +error +# CHECK: hash-directive.s:[[@LINE-1]]:1: error +nop;# 6 "FILE4" 2 + nop; +error +# CHECK: FILE4:7:1: error +# 0 "" 2 +/*comment*/# 6 "FILE5" 2 #<- This is a comment +error +# CHECK: hash-directive.s:[[@LINE-1]]:1: error diff --git a/test/MC/AsmParser/inline-comments.ll b/test/MC/AsmParser/inline-comments.ll new file mode 100644 index 000000000000..b0699d44ebb9 --- /dev/null +++ b/test/MC/AsmParser/inline-comments.ll @@ -0,0 +1,88 @@ +; RUN: llc %s -o - | sed -n -e '/#APP/,/#NO_APP/p' > %t +; RUN: sed -n -e 's/^;CHECK://p' %s > %t2 +; RUN: diff %t %t2 + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +; Function Attrs: nounwind uwtable +define void @foo() #0 { +entry: + call void asm sideeffect "", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: #NO_APP + call void asm sideeffect " ", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: +;CHECK: #NO_APP + call void asm sideeffect "\0A", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: +;CHECK: +;CHECK: #NO_APP + call void asm sideeffect "/*isolated c comment*/", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: #isolated c comment +;CHECK: #NO_APP + call void asm sideeffect "/**/", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: # +;CHECK: #NO_APP + call void asm sideeffect "/*comment with\0Anewline*/", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: #comment with +;CHECK: #newline +;CHECK: #NO_APP + call void asm sideeffect "//isolated line comment", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: #isolated line comment +;CHECK: #NO_APP + call void asm sideeffect "#isolated line comment", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: #isolated line comment +;CHECK: #NO_APP + call void asm sideeffect "nop /* after nop */", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: nop # after nop +;CHECK: #NO_APP + call void asm sideeffect "nop // after nop", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: nop # after nop +;CHECK: #NO_APP + call void asm sideeffect "nop # after nop", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: nop # after nop +;CHECK: #NO_APP + call void asm sideeffect "nop /* after explicit ended nop */", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: nop # after explicit ended nop +;CHECK: #NO_APP + call void asm sideeffect "nop # after explicit ended nop", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: nop # after explicit ended nop +;CHECK: #NO_APP + call void asm sideeffect "nop # after explicit end nop", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: nop # after explicit end nop +;CHECK: #NO_APP + call void asm sideeffect "/* before nop */ nop", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: nop # before nop +;CHECK: #NO_APP + call void asm sideeffect "//comment with escaped newline\0A", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: #comment with escaped newline +;CHECK: +;CHECK: #NO_APP + call void asm sideeffect "/*0*/xor/*1*/%eax,/*2*/%ecx/*3*///eol", "~{dirflag},~{fpsr},~{flags}"() #0 +;CHECK: #APP +;CHECK: xorl %eax, %ecx #0 #1 #2 #3 #eol +;CHECK: #NO_APP + ret void +} + +attributes #0 = { nounwind } + +!llvm.ident = !{!0} + +!0 = !{!"clang version 3.9.0 (trunk 268625) (llvm/trunk 268631)"} diff --git a/test/MC/AsmParser/macro-irp.s b/test/MC/AsmParser/macro-irp.s index 2f26eabae53c..42902bc94b5f 100644 --- a/test/MC/AsmParser/macro-irp.s +++ b/test/MC/AsmParser/macro-irp.s @@ -6,3 +6,16 @@ // CHECK: pushl %eax // CHECK: pushl %ebx + +.irp reg,%eax,%ebx +.irp imm,4,3,5 + addl \reg, \imm +.endr +.endr + +// CHECK: addl %eax, 4 +// CHECK: addl %eax, 3 +// CHECK: addl %eax, 5 +// CHECK: addl %ebx, 4 +// CHECK: addl %ebx, 3 +// CHECK: addl %ebx, 5 diff --git a/test/MC/AsmParser/macro-irpc.s b/test/MC/AsmParser/macro-irpc.s index ea5efbfb2452..d39399b131f7 100644 --- a/test/MC/AsmParser/macro-irpc.s +++ b/test/MC/AsmParser/macro-irpc.s @@ -7,3 +7,16 @@ // CHECK: long 1 // CHECK: long 2 // CHECK: long 3 + +.irpc foo,123 +.irpc bar,45 + addl %eax, \foo\bar +.endr +.endr + +// CHECK: addl %eax, 14 +// CHECK: addl %eax, 15 +// CHECK: addl %eax, 24 +// CHECK: addl %eax, 25 +// CHECK: addl %eax, 34 +// CHECK: addl %eax, 35 diff --git a/test/MC/AsmParser/macro_parsing.s b/test/MC/AsmParser/macro_parsing.s new file mode 100644 index 000000000000..2aa0733db2c1 --- /dev/null +++ b/test/MC/AsmParser/macro_parsing.s @@ -0,0 +1,16 @@ +# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s + + .macro DEF num + int $0x\num + .endm + DEF 02 + DEF 08 + DEF 09 + DEF 0A + DEF 10 + +# CHECK: int $2 +# CHECK: int $8 +# CHECK: int $9 +# CHECK: int $10 +# CHECK: int $16 diff --git a/test/MC/AsmParser/macros-gas.s b/test/MC/AsmParser/macros-gas.s index d907a2517f8c..b88058ec7feb 100644 --- a/test/MC/AsmParser/macros-gas.s +++ b/test/MC/AsmParser/macros-gas.s @@ -39,10 +39,10 @@ test3 1, 2 3 .ascii "\_a \_b \_c" .endm -// CHECK: .ascii "1 (23) " +// CHECK: .ascii "1 (2 3) " test3_prime 1, (2 3) -// CHECK: .ascii "1 (23) " +// CHECK: .ascii "1 (2 3) " test3_prime 1 (2 3) // CHECK: .ascii "1 2 " diff --git a/test/MC/AsmParser/preserve-comments.s b/test/MC/AsmParser/preserve-comments.s new file mode 100644 index 000000000000..a0f50196213c --- /dev/null +++ b/test/MC/AsmParser/preserve-comments.s @@ -0,0 +1,13 @@ + #RUN: llvm-mc -preserve-comments -n -triple i386-linux-gnu < %s > %t + #RUN: diff %s %t + .text + +foo: #Comment here + #comment here + nop + #if DIRECTIVE COMMENT + ## WHOLE LINE COMMENT + cmpl $196, %eax ## EOL COMMENT + #endif + .ident "clang version 3.9.0" + .section ".note.GNU-stack","",@progbits diff --git a/test/MC/AsmParser/uppercase-hex.s b/test/MC/AsmParser/uppercase-hex.s new file mode 100644 index 000000000000..721fc7f08148 --- /dev/null +++ b/test/MC/AsmParser/uppercase-hex.s @@ -0,0 +1,7 @@ +# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s + +foo: +.short 0X1 +# CHECK: .short 1 +.short 0B1 +# CHECK: .short 1 diff --git a/test/MC/COFF/cross-section-relative.ll b/test/MC/COFF/cross-section-relative.ll index 6b7a3d7b40b2..724b1a0a426e 100644 --- a/test/MC/COFF/cross-section-relative.ll +++ b/test/MC/COFF/cross-section-relative.ll @@ -22,16 +22,19 @@ ;;;; image base relocation -; CHECK: .long g3@IMGREL +; CHECK: .long g3@IMGREL{{$}} @t5 = global i32 trunc(i64 sub(i64 ptrtoint(i32* @g3 to i64), i64 ptrtoint(i64** @__ImageBase to i64)) to i32), section ".fix" +; CHECK: .long g3@IMGREL+4{{$}} +@t6 = global i32 trunc(i64 sub(i64 ptrtoint(i32* getelementptr (i32, i32* @g3, i32 1) to i64), i64 ptrtoint(i64** @__ImageBase to i64)) to i32), section ".fix" + ;;;; cross-section relative with source offset %struct.EEType = type { [2 x i8], i64, i32} -; CHECK: .long g3-(t6+16) -@t6 = global %struct.EEType { +; CHECK: .long (g3-t7)-16 +@t7 = global %struct.EEType { [2 x i8] c"\01\02", i64 256, - i32 trunc(i64 sub(i64 ptrtoint(i32* @g3 to i64), i64 ptrtoint(i32* getelementptr inbounds (%struct.EEType, %struct.EEType* @t6, i32 0, i32 2) to i64)) to i32 ) + i32 trunc(i64 sub(i64 ptrtoint(i32* @g3 to i64), i64 ptrtoint(i32* getelementptr inbounds (%struct.EEType, %struct.EEType* @t7, i32 0, i32 2) to i64)) to i32 ) }, section ".fix" diff --git a/test/MC/COFF/cv-def-range.s b/test/MC/COFF/cv-def-range.s new file mode 100644 index 000000000000..a1ae1404e925 --- /dev/null +++ b/test/MC/COFF/cv-def-range.s @@ -0,0 +1,97 @@ +# RUN: llvm-mc -triple=i686-pc-win32 -filetype=obj < %s | llvm-readobj -codeview -codeview-subsection-bytes | FileCheck %s + .text + .def @feat.00; + .scl 3; + .type 0; + .endef + .globl @feat.00 +@feat.00 = 1 + .def _g; + .scl 2; + .type 32; + .endef + .globl _g + .p2align 4, 0x90 +_g: # @g +Lfunc_begin0: + .cv_file 1 "\\usr\\local\\google\\home\\majnemer\\llvm\\src\\<stdin>" + .cv_loc 0 1 3 0 is_stmt 0 # <stdin>:3:0 +# BB#0: # %entry + pushl %ebp + movl %esp, %ebp + subl $8, %esp + leal -4(%ebp), %eax +Lvar_begin0: + #DEBUG_VALUE: g:x <- %EAX + .cv_loc 0 1 4 7 # <stdin>:4:7 + movl $0, -4(%ebp) + .cv_loc 0 1 5 3 # <stdin>:5:3 + movl %eax, (%esp) + calll _f + .cv_loc 0 1 6 1 # <stdin>:6:1 +Lvar_end0: + addl $8, %esp + popl %ebp + retl +Lfunc_end0: + + .section .debug$T,"dr" + .long 4 # Debug section magic + .short 6 # Type record length + .short 4609 # Leaf type: LF_ARGLIST + .long 0 # Number of arguments + .short 14 # Type record length + .short 4104 # Leaf type: LF_PROCEDURE + .long 3 # Return type index + .byte 0 # Calling convention + .byte 0 # Function options + .short 0 # # of parameters + .long 4096 # Argument list type index + .short 12 # Type record length + .short 5633 # Leaf type: LF_FUNC_ID + .long 0 # Scope type index + .long 4097 # Function type + .asciz "g" # Function name + .section .debug$S,"dr" + .long 4 # Debug section magic + .long 241 # Symbol subsection for g + .long Ltmp1-Ltmp0 # Subsection size +Ltmp0: + .short Ltmp3-Ltmp2 # Record length +Ltmp2: + .short 4423 # Record kind: S_GPROC32_ID + .long 0 # PtrParent + .long 0 # PtrEnd + .long 0 # PtrNext + .long Lfunc_end0-_g # Code size + .long 0 # Offset after prologue + .long 0 # Offset before epilogue + .long 0 # Function type index + .secrel32 _g # Function section relative address + .secidx _g # Function section index + .byte 0 # Flags + .asciz "g" # Function name +Ltmp3: + .short 2 # Record length + .short 4431 # Record kind: S_PROC_ID_END + .cv_def_range Lvar_begin0 Lvar_end0, "\102\021\374\377\377\377" + +# CHECK: DefRangeFramePointerRel { +# CHECK: Offset: -4 +# CHECK: LocalVariableAddrRange { +# CHECK: OffsetStart: .text+0x9 +# CHECK: ISectStart: 0x0 +# CHECK: Range: 0xF +# CHECK: } +# CHECK: } +# CHECK: BlockRelocations [ +# CHECK: 0x4 IMAGE_REL_I386_SECREL .text +# CHECK: 0x8 IMAGE_REL_I386_SECTION .text +# CHECK: ] + +Ltmp1: + .p2align 2 + .cv_linetable 0, _g, Lfunc_end0 + .cv_filechecksums # File index to string table offset subsection + .cv_stringtable # String table + diff --git a/test/MC/COFF/cv-empty-file-table.s b/test/MC/COFF/cv-empty-file-table.s new file mode 100644 index 000000000000..157cd3167d2a --- /dev/null +++ b/test/MC/COFF/cv-empty-file-table.s @@ -0,0 +1,13 @@ +# RUN: llvm-mc -filetype=obj -triple i686-pc-win32 < %s | llvm-readobj -codeview - | FileCheck %s + .text + .section .debug$S,"dr" + .p2align 2 + .long 4 # Debug section magic + .cv_filechecksums # File index to string table offset subsection + .cv_stringtable # String table + +# CHECK: CodeViewDebugInfo [ +# CHECK: Section: .debug$S (4) +# CHECK: Magic: 0x4 +# CHECK-NOT: FileChecksum +# CHECK: ] diff --git a/test/MC/COFF/cv-empty-linetable.s b/test/MC/COFF/cv-empty-linetable.s new file mode 100644 index 000000000000..4fcafd2d268d --- /dev/null +++ b/test/MC/COFF/cv-empty-linetable.s @@ -0,0 +1,82 @@ +# RUN: llvm-mc -filetype=obj -triple i686-pc-win32 < %s | llvm-readobj -codeview - | FileCheck %s + .text + .def @feat.00; + .scl 3; + .type 0; + .endef + .globl @feat.00 +@feat.00 = 1 + .def _f; + .scl 2; + .type 32; + .endef + .globl _f + .p2align 4, 0x90 +_f: # @f +Lfunc_begin0: +# BB#0: # %entry + .cv_file 1 "cv-empty-linetable.s" + .cv_loc 1 1 3 15 is_stmt 0 + jmp _g # TAILCALL +Lfunc_end0: + + .section .debug$T,"dr" + .long 4 + .short 6 + .short 4609 + .long 0 + .short 14 + .short 4104 + .asciz "\003\000\000\000\000\000\000\000\000\020\000" + .short 14 + .short 5633 + .asciz "\000\000\000\000\001\020\000" + .ascii "fn1" + .byte 0 + .short 38 + .short 5633 + .asciz "\000\000\000\000\001\020\000" + .ascii "??__Fa@?1??fn1@@YAXXZ@YAXXZ" + .byte 0 + .short 26 + .short 5633 + .asciz "\000\000\000\000\001\020\000" + .ascii "vector::~vector" + .byte 0 + .section .debug$S,"dr" + .long 4 + .long 241 # Symbol subsection for f + .long Ltmp1-Ltmp0 +Ltmp0: + .short Ltmp3-Ltmp2 +Ltmp2: + .short 4423 + .zero 12 + .long Lfunc_end0-_f + .zero 12 + .secrel32 _f + .secidx _f + .byte 0 + .byte 102 + .byte 0 +Ltmp3: + .short Ltmp5-Ltmp4 +Ltmp4: + .short 4429 + .asciz "\000\000\000\000\000\000\000\000\004\020\000" +Ltmp5: + .short 2 + .short 4430 + .short 2 + .short 4431 +Ltmp1: + .zero 3 + .cv_linetable 0, _f, Lfunc_end0 + .cv_filechecksums # File index to string table offset subsection + .cv_stringtable # String table + +# CHECK: FunctionLineTable [ +# CHECK: LinkageName: _f +# CHECK: Flags: 0x0 +# CHECK: CodeSize: 0x5 +# CHECK: ] diff --git a/test/MC/COFF/cv-inline-linetable-infloop.s b/test/MC/COFF/cv-inline-linetable-infloop.s new file mode 100644 index 000000000000..cd0a073be2a9 --- /dev/null +++ b/test/MC/COFF/cv-inline-linetable-infloop.s @@ -0,0 +1,71 @@ +# RUN: llvm-mc -triple=x86_64-pc-win32 -filetype=obj < %s | llvm-readobj -codeview | FileCheck %s + +# CHECK: InlineSite { +# CHECK: BinaryAnnotations [ +# CHECK: ChangeLineOffset: 1 +# CHECK: ChangeCodeLength: 0x2 +# CHECK: ] +# CHECK: } + + .text + .cv_file 1 "D:\\src\\llvm\\build\\t.c" + + .def infloop; + .scl 2; + .type 32; + .endef + .section .text,"xr",one_only,infloop + .globl infloop + .p2align 4, 0x90 +infloop: # @infloop +.Lfunc_begin1: + .cv_loc 2 1 3 7 # t.c:3:7 + jmp .Lfunc_begin1 +.Lfunc_end1: + + .def afterinfloop; + .scl 2; + .type 32; + .endef + .section .text,"xr",one_only,afterinfloop + .globl afterinfloop + .p2align 4, 0x90 +afterinfloop: # @afterinfloop + .cv_loc 3 1 13 0 # t.c:13:0 + retq + + .section .debug$S,"dr" + .long 4 + .long 241 # Symbol subsection for infloop + .long .Ltmp17-.Ltmp16 # Subsection size +.Ltmp16: + .short .Ltmp19-.Ltmp18 # Record length +.Ltmp18: + .short 4423 # Record kind: S_GPROC32_ID + .long 0 # PtrParent + .long 0 # PtrEnd + .long 0 # PtrNext + .long .Lfunc_end1-infloop # Code size + .long 0 # Offset after prologue + .long 0 # Offset before epilogue + .long 0 # Function type index + .secrel32 infloop # Function section relative address + .secidx infloop # Function section index + .byte 0 # Flags + .asciz "infloop" # Function name +.Ltmp19: + .short .Ltmp21-.Ltmp20 # Record length +.Ltmp20: + .short 4429 # Record kind: S_INLINESITE + .long 0 # PtrParent + .long 0 # PtrEnd + .long 4098 # Inlinee type index + .cv_inline_linetable 2 1 2 .Lfunc_begin1 .Lfunc_end1 +.Ltmp21: + .short 2 # Record length + .short 4430 # Record kind: S_INLINESITE_END + .short 2 # Record length + .short 4431 # Record kind: S_PROC_ID_END +.Ltmp17: + .p2align 2 + .cv_linetable 1, infloop, .Lfunc_end1 diff --git a/test/MC/COFF/cv-inline-linetable-unreachable.s b/test/MC/COFF/cv-inline-linetable-unreachable.s new file mode 100644 index 000000000000..eb89dd519275 --- /dev/null +++ b/test/MC/COFF/cv-inline-linetable-unreachable.s @@ -0,0 +1,97 @@ +# RUN: llvm-mc -triple=i686-pc-win32 -filetype=obj < %s | llvm-readobj -codeview | FileCheck %s + .text + .def @feat.00; + .scl 3; + .type 0; + .endef + .globl @feat.00 +@feat.00 = 1 + .def _g; + .scl 2; + .type 32; + .endef + .globl _g + .p2align 4, 0x90 +_g: # @g +Lfunc_begin0: + .cv_file 1 "\\usr\\local\\google\\home\\majnemer\\llvm\\src\\<stdin>" + .cv_loc 0 1 7 0 is_stmt 0 # <stdin>:7:0 +# BB#0: # %entry + pushl %ebp + movl %esp, %ebp + .cv_loc 1 1 4 3 # <stdin>:4:3 + movl _x, %eax + addl $1, %eax + movl %eax, _x +Lfunc_end0: + + .comm _x,4,2 # @x + .section .debug$T,"dr" + .long 4 + .short 6 + .short 4609 + .long 0 + .short 14 + .short 4104 + .asciz "\003\000\000\000\000\000\000\000\000\020\000" + .short 12 + .short 5633 + .asciz "\000\000\000\000\001\020\000" + .byte 103 + .byte 0 + .short 12 + .short 5633 + .asciz "\000\000\000\000\001\020\000" + .byte 102 + .byte 0 + .section .debug$S,"dr" + .long 4 + .long 246 # Inlinee lines subsection + .long Ltmp1-Ltmp0 +Ltmp0: + .long 0 + .long 4099 # Inlined function f starts at <stdin>:3 + .long 0 + .long 3 +Ltmp1: + .long 241 # Symbol subsection for g + .long Ltmp3-Ltmp2 +Ltmp2: + .short Ltmp5-Ltmp4 +Ltmp4: + .short 4423 + .zero 12 + .long Lfunc_end0-_g + .zero 12 + .secrel32 _g + .secidx _g + .byte 0 + .byte 103 + .byte 0 +Ltmp5: + .short Ltmp7-Ltmp6 +Ltmp6: + .short 4429 + .asciz "\000\000\000\000\000\000\000\000\003\020\000" + .cv_inline_linetable 1 1 3 Lfunc_begin0 Lfunc_end0 +# CHECK: InlineSite { +# CHECK: PtrParent: 0x0 +# CHECK: PtrEnd: 0x0 +# CHECK: Inlinee: f (0x1003) +# CHECK: BinaryAnnotations [ +# CHECK: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x3, LineOffset: 1} +# CHECK: ChangeCodeLength: 0xD +# CHECK: ] +# CHECK: } +Ltmp7: + .short 2 + .short 4430 +# CHECK: InlineSiteEnd { +# CHECK: } + .short 2 + .short 4431 +Ltmp3: + .p2align 2 + .cv_linetable 0, _g, Lfunc_end0 + .cv_filechecksums # File index to string table offset subsection + .cv_stringtable # String table diff --git a/test/MC/COFF/cv-inline-linetable.s b/test/MC/COFF/cv-inline-linetable.s new file mode 100644 index 000000000000..67c6da2ab091 --- /dev/null +++ b/test/MC/COFF/cv-inline-linetable.s @@ -0,0 +1,132 @@ +# RUN: llvm-mc -triple=i686-pc-win32 -filetype=obj < %s | llvm-readobj -codeview | FileCheck %s + .text + .def @feat.00; + .scl 3; + .type 0; + .endef + .globl @feat.00 +@feat.00 = 1 + .def "?baz@@YAXXZ"; + .scl 2; + .type 32; + .endef + .globl "?baz@@YAXXZ" + .p2align 4, 0x90 +"?baz@@YAXXZ": # @"\01?baz@@YAXXZ" +Lfunc_begin0: + .cv_file 1 "D:\\src\\llvm\\build\\t.cpp" + .cv_loc 0 1 13 0 is_stmt 0 # t.cpp:13:0 +# BB#0: # %entry + pushl %eax + .cv_loc 0 1 14 5 # t.cpp:14:5 + addl $6, "?x@@3HC" + .cv_loc 1 1 9 5 # t.cpp:9:5 + addl $4, "?x@@3HC" + .cv_loc 2 1 3 7 # t.cpp:3:7 + movl $1, (%esp) + leal (%esp), %eax + .cv_loc 2 1 4 5 # t.cpp:4:5 + addl %eax, "?x@@3HC" + .cv_loc 2 1 5 5 # t.cpp:5:5 + addl $2, "?x@@3HC" + .cv_loc 2 1 6 5 # t.cpp:6:5 + addl $3, "?x@@3HC" + .cv_loc 1 1 11 5 # t.cpp:11:5 + addl $5, "?x@@3HC" + .cv_loc 0 1 16 5 # t.cpp:16:5 + addl $7, "?x@@3HC" + .cv_loc 0 1 17 1 # t.cpp:17:1 + popl %eax + retl +Lfunc_end0: + + .section .debug$T,"dr" + .long 4 + .short 6 + .short 4609 + .long 0 + .short 14 + .short 4104 + .asciz "\003\000\000\000\000\000\000\000\000\020\000" + .short 14 + .short 5633 + .asciz "\000\000\000\000\001\020\000" + .ascii "baz" + .byte 0 + .short 14 + .short 5633 + .asciz "\000\000\000\000\001\020\000" + .ascii "bar" + .byte 0 + .short 14 + .short 5633 + .asciz "\000\000\000\000\001\020\000" + .ascii "foo" + .byte 0 + .section .debug$S,"dr" + .long 4 + .long 241 # Symbol subsection for baz + .long Ltmp1-Ltmp0 +Ltmp0: + .short Ltmp3-Ltmp2 +Ltmp2: + .short 4423 + .zero 12 + .long Lfunc_end0-"?baz@@YAXXZ" + .zero 12 + .secrel32 "?baz@@YAXXZ" + .secidx "?baz@@YAXXZ" + .byte 0 + .ascii "baz" + .byte 0 +Ltmp3: + .short Ltmp5-Ltmp4 +Ltmp4: + .short 4429 + .asciz "\000\000\000\000\000\000\000\000\003\020\000" + .cv_inline_linetable 1 1 9 Lfunc_begin0 Lfunc_end0 contains 2 +# CHECK: InlineSite { +# CHECK: PtrParent: 0x0 +# CHECK: PtrEnd: 0x0 +# CHECK: Inlinee: bar (0x1003) +# CHECK: BinaryAnnotations [ +# CHECK: ChangeLineOffset: 2 +# CHECK: ChangeCodeOffset: 0x2D +# CHECK: ChangeCodeLength: 0x7 +# CHECK: ] +# CHECK: } +Ltmp5: + .short Ltmp7-Ltmp6 +Ltmp6: + .short 4429 + .asciz "\000\000\000\000\000\000\000\000\004\020\000" + .cv_inline_linetable 2 1 3 Lfunc_begin0 Lfunc_end0 +# CHECK: InlineSite { +# CHECK: PtrParent: 0x0 +# CHECK: PtrEnd: 0x0 +# CHECK: Inlinee: foo (0x1004) +# CHECK: BinaryAnnotations [ +# CHECK: ChangeLineOffset: 1 +# CHECK: ChangeCodeOffset: 0x19 +# CHECK: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x6, LineOffset: 1} +# CHECK: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x7, LineOffset: 1} +# CHECK: ChangeCodeLength: 0x7 +# CHECK: ] +# CHECK: } +Ltmp7: + .short 2 + .short 4430 +# CHECK: InlineSiteEnd { +# CHECK: } + .short 2 + .short 4430 +# CHECK: InlineSiteEnd { +# CHECK: } + .short 2 + .short 4431 +Ltmp1: + .p2align 2 + .cv_linetable 0, "?baz@@YAXXZ", Lfunc_end0 + .cv_filechecksums # File index to string table offset subsection + .cv_stringtable # String table + diff --git a/test/MC/COFF/cv-loc.s b/test/MC/COFF/cv-loc.s new file mode 100644 index 000000000000..08ab15aea443 --- /dev/null +++ b/test/MC/COFF/cv-loc.s @@ -0,0 +1,85 @@ +# RUN: llvm-mc < %s -triple=x86_64-pc-win32 -filetype=obj | llvm-readobj - -codeview | FileCheck %s + +.section .debug$S +.long 4 +.cv_stringtable + +.cv_file 1 "a.c" +.cv_file 2 "t.inc" + +# Implements this C: +# void f(volatile int *x) { +# ++*x; +# #include "t.h" // contains two ++*x; statements +# ++*x; +# } + +.text +.def f; + .scl 2; + .type 32; + .endef + .text + .globl f + .align 16, 0x90 +f: +.Lfunc_begin0: + .cv_loc 0 1 5 2 + incl (%rdi) + # #include "t.h" start + .cv_loc 0 2 0 0 is_stmt 1 + incl (%rdi) + .cv_loc 0 2 1 0 + incl (%rdi) + # #include "t.h" end + .cv_loc 0 1 6 2 + incl (%rdi) + retq +.Lfunc_end0: + +.section .debug$S +.cv_filechecksums +.cv_linetable 0, f, .Lfunc_end0 + +# CHECK: FunctionLineTable [ +# CHECK: LinkageName: f +# CHECK: Flags: 0x1 +# CHECK: CodeSize: 0x9 +# CHECK: FilenameSegment [ +# CHECK: Filename: a.c (0x0) +# CHECK: +0x0 [ +# CHECK: LineNumberStart: 5 +# CHECK: LineNumberEndDelta: 0 +# CHECK: IsStatement: No +# CHECK: ColStart: 2 +# CHECK: ColEnd: 0 +# CHECK: ] +# CHECK: ] +# CHECK: FilenameSegment [ +# CHECK: Filename: t.inc (0x8) +# CHECK: +0x2 [ +# CHECK: LineNumberStart: 0 +# CHECK: LineNumberEndDelta: 0 +# CHECK: IsStatement: Yes +# CHECK: ColStart: 0 +# CHECK: ColEnd: 0 +# CHECK: ] +# CHECK: +0x4 [ +# CHECK: LineNumberStart: 1 +# CHECK: LineNumberEndDelta: 0 +# CHECK: IsStatement: No +# CHECK: ColStart: 0 +# CHECK: ColEnd: 0 +# CHECK: ] +# CHECK: ] +# CHECK: FilenameSegment [ +# CHECK: Filename: a.c (0x0) +# CHECK: +0x6 [ +# CHECK: LineNumberStart: 6 +# CHECK: LineNumberEndDelta: 0 +# CHECK: IsStatement: No +# CHECK: ColStart: 2 +# CHECK: ColEnd: 0 +# CHECK: ] +# CHECK: ] +# CHECK: ] diff --git a/test/MC/COFF/pr28462.s b/test/MC/COFF/pr28462.s new file mode 100644 index 000000000000..271963d01c5f --- /dev/null +++ b/test/MC/COFF/pr28462.s @@ -0,0 +1,14 @@ +// RUN: llvm-mc -filetype=obj -triple i686-pc-windows-msvc < %s | llvm-readobj -s --section-data | FileCheck %s + +.text +.set var, 42 +.long var +.set var, 19 +.long var + +// CHECK:Sections [ +// CHECK: Section { +// CHECK: Name: .text (2E 74 65 78 74 00 00 00) +// CHECK: SectionData ( +// CHECK: 0000: 2A000000 13000000 +// CHECK: ) diff --git a/test/MC/COFF/relax-reloc.s b/test/MC/COFF/relax-reloc.s new file mode 100644 index 000000000000..38e0f0cda57d --- /dev/null +++ b/test/MC/COFF/relax-reloc.s @@ -0,0 +1,7 @@ +// RUN: llvm-mc %s -o %t -filetype=obj -triple=x86_64-pc-win32 + +// Don't crash trying to create relaxable relocations on COFF. + + movl bar(%eax), %ebx + add bar(%rip), %rax + call *bar(%rip) diff --git a/test/MC/COFF/seh-section-2.s b/test/MC/COFF/seh-section-2.s new file mode 100644 index 000000000000..9a7156d4d807 --- /dev/null +++ b/test/MC/COFF/seh-section-2.s @@ -0,0 +1,154 @@ +# RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -symbols | FileCheck %s + +# This assembly should make an object with two .text sections, two .xdata +# sections, and two .pdata sections. + + .def f; + .scl 2; + .type 32; + .endef + .section .text,"xr",discard,f + .globl f + .p2align 4, 0x90 +f: # @f +.Ltmp0: +.seh_proc f +# BB#0: + subq $40, %rsp +.Ltmp1: + .seh_stackalloc 40 +.Ltmp2: + .seh_endprologue + callq g + nop + addq $40, %rsp + retq + .seh_handlerdata + .section .text,"xr",discard,f +.Ltmp3: + .seh_endproc + + .def g; + .scl 3; + .type 32; + .endef + .section .text,"xr",associative,f + .p2align 4, 0x90 +g: # @g +.Ltmp4: +.seh_proc g +# BB#0: +.Ltmp5: + .seh_endprologue + retq + .seh_handlerdata + .section .text,"xr",associative,f +.Ltmp6: + .seh_endproc + + +# CHECK: Symbols [ +# CHECK: Symbol { +# CHECK: Name: .text +# CHECK: Section: .text (4) +# CHECK: AuxSymbolCount: 1 +# CHECK: AuxSectionDef { +# CHECK: Length: 15 +# CHECK: RelocationCount: 1 +# CHECK: LineNumberCount: 0 +# CHECK: Checksum: 0xE17CBB7 +# CHECK: Number: 4 +# CHECK: Selection: Any (0x2) +# CHECK: } +# CHECK: } +# CHECK: Symbol { +# CHECK: Name: .xdata +# CHECK: Value: 0 +# CHECK: Section: .xdata (5) +# CHECK: BaseType: Null (0x0) +# CHECK: ComplexType: Null (0x0) +# CHECK: StorageClass: Static (0x3) +# CHECK: AuxSymbolCount: 1 +# CHECK: AuxSectionDef { +# CHECK: Length: 8 +# CHECK: RelocationCount: 0 +# CHECK: LineNumberCount: 0 +# CHECK: Checksum: 0xFC539D1 +# CHECK: Number: 4 +# CHECK: Selection: Associative (0x5) +# CHECK: AssocSection: .text (4) +# CHECK: } +# CHECK: } +# CHECK: Symbol { +# CHECK: Name: .text +# CHECK: Value: 0 +# CHECK: Section: .text (6) +# CHECK: BaseType: Null (0x0) +# CHECK: ComplexType: Null (0x0) +# CHECK: StorageClass: Static (0x3) +# CHECK: AuxSymbolCount: 1 +# CHECK: AuxSectionDef { +# CHECK: Length: 1 +# CHECK: RelocationCount: 0 +# CHECK: LineNumberCount: 0 +# CHECK: Checksum: 0x26D930A +# CHECK: Number: 4 +# CHECK: Selection: Associative (0x5) +# CHECK: AssocSection: .text (4) +# CHECK: } +# CHECK: } +# CHECK: Symbol { +# CHECK: Name: .xdata +# CHECK: Value: 0 +# CHECK: Section: .xdata (7) +# CHECK: BaseType: Null (0x0) +# CHECK: ComplexType: Null (0x0) +# CHECK: StorageClass: Static (0x3) +# CHECK: AuxSymbolCount: 1 +# CHECK: AuxSectionDef { +# CHECK: Length: 8 +# CHECK: RelocationCount: 0 +# CHECK: LineNumberCount: 0 +# CHECK: Checksum: 0xCCAA009E +# CHECK: Number: 4 +# CHECK: Selection: Associative (0x5) +# CHECK: AssocSection: .text (4) +# CHECK: } +# CHECK: } +# CHECK: Symbol { +# CHECK: Name: .pdata +# CHECK: Value: 0 +# CHECK: Section: .pdata (8) +# CHECK: BaseType: Null (0x0) +# CHECK: ComplexType: Null (0x0) +# CHECK: StorageClass: Static (0x3) +# CHECK: AuxSymbolCount: 1 +# CHECK: AuxSectionDef { +# CHECK: Length: 12 +# CHECK: RelocationCount: 3 +# CHECK: LineNumberCount: 0 +# CHECK: Checksum: 0xD92012AC +# CHECK: Number: 4 +# CHECK: Selection: Associative (0x5) +# CHECK: AssocSection: .text (4) +# CHECK: } +# CHECK: } +# CHECK: Symbol { +# CHECK: Name: .pdata +# CHECK: Value: 0 +# CHECK: Section: .pdata (9) +# CHECK: BaseType: Null (0x0) +# CHECK: ComplexType: Null (0x0) +# CHECK: StorageClass: Static (0x3) +# CHECK: AuxSymbolCount: 1 +# CHECK: AuxSectionDef { +# CHECK: Length: 12 +# CHECK: RelocationCount: 3 +# CHECK: LineNumberCount: 0 +# CHECK: Checksum: 0xCCAA009E +# CHECK: Number: 4 +# CHECK: Selection: Associative (0x5) +# CHECK: AssocSection: .text (4) +# CHECK: } +# CHECK: } +# CHECK: ] diff --git a/test/MC/COFF/seh-section.s b/test/MC/COFF/seh-section.s index c95eece800bd..711b3eaccef2 100644 --- a/test/MC/COFF/seh-section.s +++ b/test/MC/COFF/seh-section.s @@ -1,10 +1,8 @@ // This test ensures functions in custom sections get unwind info emitted in a -// distinct .xdata section. Ideally we'd just emit a second .xdata section with -// the same name and characteristics, but MC uniques sections by name and -// characteristics, so that is not possible. +// distinct .xdata section. // RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -s -sd | FileCheck %s -// CHECK: Name: .xdata$foo +// CHECK: Name: .xdata // CHECK-NEXT: VirtualSize // CHECK-NEXT: VirtualAddress // CHECK-NEXT: RawDataSize: 8 @@ -22,7 +20,7 @@ // CHECK-NEXT: 0000: 01050200 05500402 // CHECK-NEXT: ) -// CHECK: Name: .xdata$.mytext +// CHECK: Name: .xdata // CHECK-NEXT: VirtualSize // CHECK-NEXT: VirtualAddress // CHECK-NEXT: RawDataSize: 8 diff --git a/test/MC/COFF/weak-alias-local.s b/test/MC/COFF/weak-alias-local.s new file mode 100644 index 000000000000..01f2ac390a59 --- /dev/null +++ b/test/MC/COFF/weak-alias-local.s @@ -0,0 +1,43 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s -o %t.o +// RUN: llvm-readobj -t %t.o | FileCheck %s + +// test that we create an external symbol for a to point to. + + .data + .long 123 +b: + .long 42 + .weak a +a=b + +// CHECK: Symbol { +// CHECK: Name: b +// CHECK-NEXT: Value: 4 +// CHECK-NEXT: Section: .data (2) +// CHECK-NEXT: BaseType: Null (0x0) +// CHECK-NEXT: ComplexType: Null (0x0) +// CHECK-NEXT: StorageClass: Static (0x3) +// CHECK-NEXT: AuxSymbolCount: 0 +// CHECK-NEXT: } +// CHECK-NEXT: Symbol { +// CHECK-NEXT: Name: a +// CHECK-NEXT: Value: 0 +// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED (0) +// CHECK-NEXT: BaseType: Null (0x0) +// CHECK-NEXT: ComplexType: Null (0x0) +// CHECK-NEXT: StorageClass: WeakExternal (0x69) +// CHECK-NEXT: AuxSymbolCount: 1 +// CHECK-NEXT: AuxWeakExternal { +// CHECK-NEXT: Linked: .weak.a.default (9) +// CHECK-NEXT: Search: Library (0x2) +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT: Symbol { +// CHECK-NEXT: Name: .weak.a.default +// CHECK-NEXT: Value: 4 +// CHECK-NEXT: Section: .data (2) +// CHECK-NEXT: BaseType: Null (0x0) +// CHECK-NEXT: ComplexType: Null (0x0) +// CHECK-NEXT: StorageClass: External (0x2) +// CHECK-NEXT: AuxSymbolCount: 0 +// CHECK-NEXT: } diff --git a/test/MC/COFF/weak-val.s b/test/MC/COFF/weak-val.s new file mode 100644 index 000000000000..250bdd86aa33 --- /dev/null +++ b/test/MC/COFF/weak-val.s @@ -0,0 +1,33 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s -o %t.o +// RUN: llvm-readobj -t %t.o | FileCheck %s + +// test that b and .weak.b have the correct values. + + .data +.long 42 + .weak b +b: + .long 42 + +// CHECK: Symbol { +// CHECK: Name: b +// CHECK-NEXT: Value: 0 +// CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED (0) +// CHECK-NEXT: BaseType: Null (0x0) +// CHECK-NEXT: ComplexType: Null (0x0) +// CHECK-NEXT: StorageClass: WeakExternal (0x69) +// CHECK-NEXT: AuxSymbolCount: 1 +// CHECK-NEXT: AuxWeakExternal { +// CHECK-NEXT: Linked: .weak.b.default (8) +// CHECK-NEXT: Search: Library (0x2) +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT: Symbol { +// CHECK-NEXT: Name: .weak.b.default +// CHECK-NEXT: Value: 4 +// CHECK-NEXT: Section: .data (2) +// CHECK-NEXT: BaseType: Null (0x0) +// CHECK-NEXT: ComplexType: Null (0x0) +// CHECK-NEXT: StorageClass: External (0x2) +// CHECK-NEXT: AuxSymbolCount: 0 +// CHECK-NEXT: } diff --git a/test/MC/COFF/weak.s b/test/MC/COFF/weak.s index 6086749d80de..e0d077840f15 100644 --- a/test/MC/COFF/weak.s +++ b/test/MC/COFF/weak.s @@ -35,6 +35,16 @@ LBB0_2: # %return // CHECK: Symbols [ // CHECK: Symbol { +// CHECK: Name: _main +// CHECK-NEXT: Value: 0 +// CHECK-NEXT: Section: .text +// CHECK-NEXT: BaseType: Null +// CHECK-NEXT: ComplexType: Function +// CHECK-NEXT: StorageClass: External +// CHECK-NEXT: AuxSymbolCount: 0 +// CHECK-NEXT: } + +// CHECK: Symbol { // CHECK: Name: _test_weak // CHECK-NEXT: Value: 0 // CHECK-NEXT: Section: IMAGE_SYM_UNDEFINED (0) @@ -67,7 +77,17 @@ LBB0_2: # %return // CHECK-NEXT: StorageClass: WeakExternal // CHECK-NEXT: AuxSymbolCount: 1 // CHECK-NEXT: AuxWeakExternal { -// CHECK-NEXT: Linked: _main +// CHECK-NEXT: Linked: .weak._test_weak_alias.default // CHECK-NEXT: Search: Library // CHECK-NEXT: } // CHECK-NEXT: } + +// CHECK: Symbol { +// CHECK: Name: .weak._test_weak_alias.default +// CHECK-NEXT: Value: 0 +// CHECK-NEXT: Section: .text +// CHECK-NEXT: BaseType: Null +// CHECK-NEXT: ComplexType: Null +// CHECK-NEXT: StorageClass: External +// CHECK-NEXT: AuxSymbolCount: 0 +// CHECK-NEXT: } diff --git a/test/MC/Disassembler/AArch64/arm64-advsimd.txt b/test/MC/Disassembler/AArch64/arm64-advsimd.txt index ef125c8e32f3..2b9520257dc5 100644 --- a/test/MC/Disassembler/AArch64/arm64-advsimd.txt +++ b/test/MC/Disassembler/AArch64/arm64-advsimd.txt @@ -1,4 +1,4 @@ -# RUN: llvm-mc -triple arm64-apple-darwin -mattr=crypto -output-asm-variant=1 --disassemble < %s | FileCheck %s +# RUN: llvm-mc -triple arm64-apple-darwin -mattr=crypto -output-asm-variant=1 --disassemble -print-imm-hex < %s | FileCheck %s 0x00 0xb8 0x20 0x0e 0x00 0xb8 0x20 0x4e @@ -1804,48 +1804,48 @@ 0x00 0x04 0x41 0x7f 0x00 0x14 0x41 0x7f -# CHECK: shl d0, d0, #1 -# CHECK: sli d0, d0, #1 -# CHECK: sqrshrn b0, h0, #7 -# CHECK: sqrshrn h0, s0, #14 -# CHECK: sqrshrn s0, d0, #29 -# CHECK: sqrshrun b0, h0, #7 -# CHECK: sqrshrun h0, s0, #14 -# CHECK: sqrshrun s0, d0, #29 -# CHECK: sqshlu b0, b0, #1 -# CHECK: sqshlu h0, h0, #2 -# CHECK: sqshlu s0, s0, #3 -# CHECK: sqshlu d0, d0, #4 -# CHECK: sqshl b0, b0, #1 -# CHECK: sqshl h0, h0, #2 -# CHECK: sqshl s0, s0, #3 -# CHECK: sqshl d0, d0, #4 -# CHECK: sqshrn b0, h0, #7 -# CHECK: sqshrn h0, s0, #14 -# CHECK: sqshrn s0, d0, #29 -# CHECK: sqshrun b0, h0, #7 -# CHECK: sqshrun h0, s0, #14 -# CHECK: sqshrun s0, d0, #29 -# CHECK: sri d0, d0, #63 -# CHECK: srshr d0, d0, #63 -# CHECK: srsra d0, d0, #63 -# CHECK: sshr d0, d0, #63 -# CHECK: ucvtf s0, s0, #31 -# CHECK: ucvtf d0, d0, #62 -# CHECK: uqrshrn b0, h0, #7 -# CHECK: uqrshrn h0, s0, #14 -# CHECK: uqrshrn s0, d0, #29 -# CHECK: uqshl b0, b0, #1 -# CHECK: uqshl h0, h0, #2 -# CHECK: uqshl s0, s0, #3 -# CHECK: uqshl d0, d0, #4 -# CHECK: uqshrn b0, h0, #7 -# CHECK: uqshrn h0, s0, #14 -# CHECK: uqshrn s0, d0, #29 -# CHECK: urshr d0, d0, #63 -# CHECK: ursra d0, d0, #63 -# CHECK: ushr d0, d0, #63 -# CHECK: usra d0, d0, #63 +# CHECK: shl d0, d0, #0x1 +# CHECK: sli d0, d0, #0x1 +# CHECK: sqrshrn b0, h0, #0x7 +# CHECK: sqrshrn h0, s0, #0xe +# CHECK: sqrshrn s0, d0, #0x1d +# CHECK: sqrshrun b0, h0, #0x7 +# CHECK: sqrshrun h0, s0, #0xe +# CHECK: sqrshrun s0, d0, #0x1d +# CHECK: sqshlu b0, b0, #0x1 +# CHECK: sqshlu h0, h0, #0x2 +# CHECK: sqshlu s0, s0, #0x3 +# CHECK: sqshlu d0, d0, #0x4 +# CHECK: sqshl b0, b0, #0x1 +# CHECK: sqshl h0, h0, #0x2 +# CHECK: sqshl s0, s0, #0x3 +# CHECK: sqshl d0, d0, #0x4 +# CHECK: sqshrn b0, h0, #0x7 +# CHECK: sqshrn h0, s0, #0xe +# CHECK: sqshrn s0, d0, #0x1d +# CHECK: sqshrun b0, h0, #0x7 +# CHECK: sqshrun h0, s0, #0xe +# CHECK: sqshrun s0, d0, #0x1d +# CHECK: sri d0, d0, #0x3f +# CHECK: srshr d0, d0, #0x3f +# CHECK: srsra d0, d0, #0x3f +# CHECK: sshr d0, d0, #0x3f +# CHECK: ucvtf s0, s0, #0x1f +# CHECK: ucvtf d0, d0, #0x3e +# CHECK: uqrshrn b0, h0, #0x7 +# CHECK: uqrshrn h0, s0, #0xe +# CHECK: uqrshrn s0, d0, #0x1d +# CHECK: uqshl b0, b0, #0x1 +# CHECK: uqshl h0, h0, #0x2 +# CHECK: uqshl s0, s0, #0x3 +# CHECK: uqshl d0, d0, #0x4 +# CHECK: uqshrn b0, h0, #0x7 +# CHECK: uqshrn h0, s0, #0xe +# CHECK: uqshrn s0, d0, #0x1d +# CHECK: urshr d0, d0, #0x3f +# CHECK: ursra d0, d0, #0x3f +# CHECK: ushr d0, d0, #0x3f +# CHECK: usra d0, d0, #0x3f #===-------------------------------------------------------------------------=== # AdvSIMD vector + shift instructions @@ -2023,177 +2023,177 @@ 0x00 0x14 0x26 0x6f 0x00 0x14 0x47 0x6f -# CHECK: fcvtzs.2s v0, v0, #31 -# CHECK: fcvtzs.4s v0, v0, #30 -# CHECK: fcvtzs.2d v0, v0, #61 -# CHECK: fcvtzu.2s v0, v0, #31 -# CHECK: fcvtzu.4s v0, v0, #30 -# CHECK: fcvtzu.2d v0, v0, #61 -# CHECK: rshrn.8b v0, v0, #7 -# CHECK: rshrn2.16b v0, v0, #6 -# CHECK: rshrn.4h v0, v0, #13 -# CHECK: rshrn2.8h v0, v0, #12 -# CHECK: rshrn.2s v0, v0, #27 -# CHECK: rshrn2.4s v0, v0, #26 -# CHECK: scvtf.2s v0, v0, #31 -# CHECK: scvtf.4s v0, v0, #30 -# CHECK: scvtf.2d v0, v0, #61 -# CHECK: shl.8b v0, v0, #1 -# CHECK: shl.16b v0, v0, #2 -# CHECK: shl.4h v0, v0, #3 -# CHECK: shl.8h v0, v0, #4 -# CHECK: shl.2s v0, v0, #5 -# CHECK: shl.4s v0, v0, #6 -# CHECK: shl.2d v0, v0, #7 -# CHECK: shrn.8b v0, v0, #7 -# CHECK: shrn2.16b v0, v0, #6 -# CHECK: shrn.4h v0, v0, #13 -# CHECK: shrn2.8h v0, v0, #12 -# CHECK: shrn.2s v0, v0, #27 -# CHECK: shrn2.4s v0, v0, #26 -# CHECK: sli.8b v0, v0, #1 -# CHECK: sli.16b v0, v0, #2 -# CHECK: sli.4h v0, v0, #3 -# CHECK: sli.8h v0, v0, #4 -# CHECK: sli.2s v0, v0, #5 -# CHECK: sli.4s v0, v0, #6 -# CHECK: sli.2d v0, v0, #7 -# CHECK: sqrshrn.8b v0, v0, #7 -# CHECK: sqrshrn2.16b v0, v0, #6 -# CHECK: sqrshrn.4h v0, v0, #13 -# CHECK: sqrshrn2.8h v0, v0, #12 -# CHECK: sqrshrn.2s v0, v0, #27 -# CHECK: sqrshrn2.4s v0, v0, #26 -# CHECK: sqrshrun.8b v0, v0, #7 -# CHECK: sqrshrun2.16b v0, v0, #6 -# CHECK: sqrshrun.4h v0, v0, #13 -# CHECK: sqrshrun2.8h v0, v0, #12 -# CHECK: sqrshrun.2s v0, v0, #27 -# CHECK: sqrshrun2.4s v0, v0, #26 -# CHECK: sqshlu.8b v0, v0, #1 -# CHECK: sqshlu.16b v0, v0, #2 -# CHECK: sqshlu.4h v0, v0, #3 -# CHECK: sqshlu.8h v0, v0, #4 -# CHECK: sqshlu.2s v0, v0, #5 -# CHECK: sqshlu.4s v0, v0, #6 -# CHECK: sqshlu.2d v0, v0, #7 -# CHECK: sqshl.8b v0, v0, #1 -# CHECK: sqshl.16b v0, v0, #2 -# CHECK: sqshl.4h v0, v0, #3 -# CHECK: sqshl.8h v0, v0, #4 -# CHECK: sqshl.2s v0, v0, #5 -# CHECK: sqshl.4s v0, v0, #6 -# CHECK: sqshl.2d v0, v0, #7 -# CHECK: sqshrn.8b v0, v0, #7 -# CHECK: sqshrn2.16b v0, v0, #6 -# CHECK: sqshrn.4h v0, v0, #13 -# CHECK: sqshrn2.8h v0, v0, #12 -# CHECK: sqshrn.2s v0, v0, #27 -# CHECK: sqshrn2.4s v0, v0, #26 -# CHECK: sqshrun.8b v0, v0, #7 -# CHECK: sqshrun2.16b v0, v0, #6 -# CHECK: sqshrun.4h v0, v0, #13 -# CHECK: sqshrun2.8h v0, v0, #12 -# CHECK: sqshrun.2s v0, v0, #27 -# CHECK: sqshrun2.4s v0, v0, #26 -# CHECK: sri.8b v0, v0, #7 -# CHECK: sri.16b v0, v0, #6 -# CHECK: sri.4h v0, v0, #13 -# CHECK: sri.8h v0, v0, #12 -# CHECK: sri.2s v0, v0, #27 -# CHECK: sri.4s v0, v0, #26 -# CHECK: sri.2d v0, v0, #57 -# CHECK: srshr.8b v0, v0, #7 -# CHECK: srshr.16b v0, v0, #6 -# CHECK: srshr.4h v0, v0, #13 -# CHECK: srshr.8h v0, v0, #12 -# CHECK: srshr.2s v0, v0, #27 -# CHECK: srshr.4s v0, v0, #26 -# CHECK: srshr.2d v0, v0, #57 -# CHECK: srsra.8b v0, v0, #7 -# CHECK: srsra.16b v0, v0, #6 -# CHECK: srsra.4h v0, v0, #13 -# CHECK: srsra.8h v0, v0, #12 -# CHECK: srsra.2s v0, v0, #27 -# CHECK: srsra.4s v0, v0, #26 -# CHECK: srsra.2d v0, v0, #57 -# CHECK: sshll.8h v0, v0, #1 -# CHECK: sshll2.8h v0, v0, #2 -# CHECK: sshll.4s v0, v0, #3 -# CHECK: sshll2.4s v0, v0, #4 -# CHECK: sshll.2d v0, v0, #5 -# CHECK: sshll2.2d v0, v0, #6 -# CHECK: sshr.8b v0, v0, #7 -# CHECK: sshr.16b v0, v0, #6 -# CHECK: sshr.4h v0, v0, #13 -# CHECK: sshr.8h v0, v0, #12 -# CHECK: sshr.2s v0, v0, #27 -# CHECK: sshr.4s v0, v0, #26 -# CHECK: sshr.2d v0, v0, #57 -# CHECK: sshr.8b v0, v0, #7 -# CHECK: ssra.16b v0, v0, #6 -# CHECK: ssra.4h v0, v0, #13 -# CHECK: ssra.8h v0, v0, #12 -# CHECK: ssra.2s v0, v0, #27 -# CHECK: ssra.4s v0, v0, #26 -# CHECK: ssra.2d v0, v0, #57 -# CHECK: ssra d0, d0, #64 -# CHECK: ucvtf.2s v0, v0, #31 -# CHECK: ucvtf.4s v0, v0, #30 -# CHECK: ucvtf.2d v0, v0, #61 -# CHECK: uqrshrn.8b v0, v0, #7 -# CHECK: uqrshrn2.16b v0, v0, #6 -# CHECK: uqrshrn.4h v0, v0, #13 -# CHECK: uqrshrn2.8h v0, v0, #12 -# CHECK: uqrshrn.2s v0, v0, #27 -# CHECK: uqrshrn2.4s v0, v0, #26 -# CHECK: uqshl.8b v0, v0, #1 -# CHECK: uqshl.16b v0, v0, #2 -# CHECK: uqshl.4h v0, v0, #3 -# CHECK: uqshl.8h v0, v0, #4 -# CHECK: uqshl.2s v0, v0, #5 -# CHECK: uqshl.4s v0, v0, #6 -# CHECK: uqshl.2d v0, v0, #7 -# CHECK: uqshrn.8b v0, v0, #7 -# CHECK: uqshrn2.16b v0, v0, #6 -# CHECK: uqshrn.4h v0, v0, #13 -# CHECK: uqshrn2.8h v0, v0, #12 -# CHECK: uqshrn.2s v0, v0, #27 -# CHECK: uqshrn2.4s v0, v0, #26 -# CHECK: urshr.8b v0, v0, #7 -# CHECK: urshr.16b v0, v0, #6 -# CHECK: urshr.4h v0, v0, #13 -# CHECK: urshr.8h v0, v0, #12 -# CHECK: urshr.2s v0, v0, #27 -# CHECK: urshr.4s v0, v0, #26 -# CHECK: urshr.2d v0, v0, #57 -# CHECK: ursra.8b v0, v0, #7 -# CHECK: ursra.16b v0, v0, #6 -# CHECK: ursra.4h v0, v0, #13 -# CHECK: ursra.8h v0, v0, #12 -# CHECK: ursra.2s v0, v0, #27 -# CHECK: ursra.4s v0, v0, #26 -# CHECK: ursra.2d v0, v0, #57 -# CHECK: ushll.8h v0, v0, #1 -# CHECK: ushll2.8h v0, v0, #2 -# CHECK: ushll.4s v0, v0, #3 -# CHECK: ushll2.4s v0, v0, #4 -# CHECK: ushll.2d v0, v0, #5 -# CHECK: ushll2.2d v0, v0, #6 -# CHECK: ushr.8b v0, v0, #7 -# CHECK: ushr.16b v0, v0, #6 -# CHECK: ushr.4h v0, v0, #13 -# CHECK: ushr.8h v0, v0, #12 -# CHECK: ushr.2s v0, v0, #27 -# CHECK: ushr.4s v0, v0, #26 -# CHECK: ushr.2d v0, v0, #57 -# CHECK: usra.8b v0, v0, #7 -# CHECK: usra.16b v0, v0, #6 -# CHECK: usra.4h v0, v0, #13 -# CHECK: usra.8h v0, v0, #12 -# CHECK: usra.2s v0, v0, #27 -# CHECK: usra.4s v0, v0, #26 -# CHECK: usra.2d v0, v0, #57 +# CHECK: fcvtzs.2s v0, v0, #0x1f +# CHECK: fcvtzs.4s v0, v0, #0x1e +# CHECK: fcvtzs.2d v0, v0, #0x3d +# CHECK: fcvtzu.2s v0, v0, #0x1f +# CHECK: fcvtzu.4s v0, v0, #0x1e +# CHECK: fcvtzu.2d v0, v0, #0x3d +# CHECK: rshrn.8b v0, v0, #0x7 +# CHECK: rshrn2.16b v0, v0, #0x6 +# CHECK: rshrn.4h v0, v0, #0xd +# CHECK: rshrn2.8h v0, v0, #0xc +# CHECK: rshrn.2s v0, v0, #0x1b +# CHECK: rshrn2.4s v0, v0, #0x1a +# CHECK: scvtf.2s v0, v0, #0x1f +# CHECK: scvtf.4s v0, v0, #0x1e +# CHECK: scvtf.2d v0, v0, #0x3d +# CHECK: shl.8b v0, v0, #0x1 +# CHECK: shl.16b v0, v0, #0x2 +# CHECK: shl.4h v0, v0, #0x3 +# CHECK: shl.8h v0, v0, #0x4 +# CHECK: shl.2s v0, v0, #0x5 +# CHECK: shl.4s v0, v0, #0x6 +# CHECK: shl.2d v0, v0, #0x7 +# CHECK: shrn.8b v0, v0, #0x7 +# CHECK: shrn2.16b v0, v0, #0x6 +# CHECK: shrn.4h v0, v0, #0xd +# CHECK: shrn2.8h v0, v0, #0xc +# CHECK: shrn.2s v0, v0, #0x1b +# CHECK: shrn2.4s v0, v0, #0x1a +# CHECK: sli.8b v0, v0, #0x1 +# CHECK: sli.16b v0, v0, #0x2 +# CHECK: sli.4h v0, v0, #0x3 +# CHECK: sli.8h v0, v0, #0x4 +# CHECK: sli.2s v0, v0, #0x5 +# CHECK: sli.4s v0, v0, #0x6 +# CHECK: sli.2d v0, v0, #0x7 +# CHECK: sqrshrn.8b v0, v0, #0x7 +# CHECK: sqrshrn2.16b v0, v0, #0x6 +# CHECK: sqrshrn.4h v0, v0, #0xd +# CHECK: sqrshrn2.8h v0, v0, #0xc +# CHECK: sqrshrn.2s v0, v0, #0x1b +# CHECK: sqrshrn2.4s v0, v0, #0x1a +# CHECK: sqrshrun.8b v0, v0, #0x7 +# CHECK: sqrshrun2.16b v0, v0, #0x6 +# CHECK: sqrshrun.4h v0, v0, #0xd +# CHECK: sqrshrun2.8h v0, v0, #0xc +# CHECK: sqrshrun.2s v0, v0, #0x1b +# CHECK: sqrshrun2.4s v0, v0, #0x1a +# CHECK: sqshlu.8b v0, v0, #0x1 +# CHECK: sqshlu.16b v0, v0, #0x2 +# CHECK: sqshlu.4h v0, v0, #0x3 +# CHECK: sqshlu.8h v0, v0, #0x4 +# CHECK: sqshlu.2s v0, v0, #0x5 +# CHECK: sqshlu.4s v0, v0, #0x6 +# CHECK: sqshlu.2d v0, v0, #0x7 +# CHECK: sqshl.8b v0, v0, #0x1 +# CHECK: sqshl.16b v0, v0, #0x2 +# CHECK: sqshl.4h v0, v0, #0x3 +# CHECK: sqshl.8h v0, v0, #0x4 +# CHECK: sqshl.2s v0, v0, #0x5 +# CHECK: sqshl.4s v0, v0, #0x6 +# CHECK: sqshl.2d v0, v0, #0x7 +# CHECK: sqshrn.8b v0, v0, #0x7 +# CHECK: sqshrn2.16b v0, v0, #0x6 +# CHECK: sqshrn.4h v0, v0, #0xd +# CHECK: sqshrn2.8h v0, v0, #0xc +# CHECK: sqshrn.2s v0, v0, #0x1b +# CHECK: sqshrn2.4s v0, v0, #0x1a +# CHECK: sqshrun.8b v0, v0, #0x7 +# CHECK: sqshrun2.16b v0, v0, #0x6 +# CHECK: sqshrun.4h v0, v0, #0xd +# CHECK: sqshrun2.8h v0, v0, #0xc +# CHECK: sqshrun.2s v0, v0, #0x1b +# CHECK: sqshrun2.4s v0, v0, #0x1a +# CHECK: sri.8b v0, v0, #0x7 +# CHECK: sri.16b v0, v0, #0x6 +# CHECK: sri.4h v0, v0, #0xd +# CHECK: sri.8h v0, v0, #0xc +# CHECK: sri.2s v0, v0, #0x1b +# CHECK: sri.4s v0, v0, #0x1a +# CHECK: sri.2d v0, v0, #0x39 +# CHECK: srshr.8b v0, v0, #0x7 +# CHECK: srshr.16b v0, v0, #0x6 +# CHECK: srshr.4h v0, v0, #0xd +# CHECK: srshr.8h v0, v0, #0xc +# CHECK: srshr.2s v0, v0, #0x1b +# CHECK: srshr.4s v0, v0, #0x1a +# CHECK: srshr.2d v0, v0, #0x39 +# CHECK: srsra.8b v0, v0, #0x7 +# CHECK: srsra.16b v0, v0, #0x6 +# CHECK: srsra.4h v0, v0, #0xd +# CHECK: srsra.8h v0, v0, #0xc +# CHECK: srsra.2s v0, v0, #0x1b +# CHECK: srsra.4s v0, v0, #0x1a +# CHECK: srsra.2d v0, v0, #0x39 +# CHECK: sshll.8h v0, v0, #0x1 +# CHECK: sshll2.8h v0, v0, #0x2 +# CHECK: sshll.4s v0, v0, #0x3 +# CHECK: sshll2.4s v0, v0, #0x4 +# CHECK: sshll.2d v0, v0, #0x5 +# CHECK: sshll2.2d v0, v0, #0x6 +# CHECK: sshr.8b v0, v0, #0x7 +# CHECK: sshr.16b v0, v0, #0x6 +# CHECK: sshr.4h v0, v0, #0xd +# CHECK: sshr.8h v0, v0, #0xc +# CHECK: sshr.2s v0, v0, #0x1b +# CHECK: sshr.4s v0, v0, #0x1a +# CHECK: sshr.2d v0, v0, #0x39 +# CHECK: sshr.8b v0, v0, #0x7 +# CHECK: ssra.16b v0, v0, #0x6 +# CHECK: ssra.4h v0, v0, #0xd +# CHECK: ssra.8h v0, v0, #0xc +# CHECK: ssra.2s v0, v0, #0x1b +# CHECK: ssra.4s v0, v0, #0x1a +# CHECK: ssra.2d v0, v0, #0x39 +# CHECK: ssra d0, d0, #0x40 +# CHECK: ucvtf.2s v0, v0, #0x1f +# CHECK: ucvtf.4s v0, v0, #0x1e +# CHECK: ucvtf.2d v0, v0, #0x3d +# CHECK: uqrshrn.8b v0, v0, #0x7 +# CHECK: uqrshrn2.16b v0, v0, #0x6 +# CHECK: uqrshrn.4h v0, v0, #0xd +# CHECK: uqrshrn2.8h v0, v0, #0xc +# CHECK: uqrshrn.2s v0, v0, #0x1b +# CHECK: uqrshrn2.4s v0, v0, #0x1a +# CHECK: uqshl.8b v0, v0, #0x1 +# CHECK: uqshl.16b v0, v0, #0x2 +# CHECK: uqshl.4h v0, v0, #0x3 +# CHECK: uqshl.8h v0, v0, #0x4 +# CHECK: uqshl.2s v0, v0, #0x5 +# CHECK: uqshl.4s v0, v0, #0x6 +# CHECK: uqshl.2d v0, v0, #0x7 +# CHECK: uqshrn.8b v0, v0, #0x7 +# CHECK: uqshrn2.16b v0, v0, #0x6 +# CHECK: uqshrn.4h v0, v0, #0xd +# CHECK: uqshrn2.8h v0, v0, #0xc +# CHECK: uqshrn.2s v0, v0, #0x1b +# CHECK: uqshrn2.4s v0, v0, #0x1a +# CHECK: urshr.8b v0, v0, #0x7 +# CHECK: urshr.16b v0, v0, #0x6 +# CHECK: urshr.4h v0, v0, #0xd +# CHECK: urshr.8h v0, v0, #0xc +# CHECK: urshr.2s v0, v0, #0x1b +# CHECK: urshr.4s v0, v0, #0x1a +# CHECK: urshr.2d v0, v0, #0x39 +# CHECK: ursra.8b v0, v0, #0x7 +# CHECK: ursra.16b v0, v0, #0x6 +# CHECK: ursra.4h v0, v0, #0xd +# CHECK: ursra.8h v0, v0, #0xc +# CHECK: ursra.2s v0, v0, #0x1b +# CHECK: ursra.4s v0, v0, #0x1a +# CHECK: ursra.2d v0, v0, #0x39 +# CHECK: ushll.8h v0, v0, #0x1 +# CHECK: ushll2.8h v0, v0, #0x2 +# CHECK: ushll.4s v0, v0, #0x3 +# CHECK: ushll2.4s v0, v0, #0x4 +# CHECK: ushll.2d v0, v0, #0x5 +# CHECK: ushll2.2d v0, v0, #0x6 +# CHECK: ushr.8b v0, v0, #0x7 +# CHECK: ushr.16b v0, v0, #0x6 +# CHECK: ushr.4h v0, v0, #0xd +# CHECK: ushr.8h v0, v0, #0xc +# CHECK: ushr.2s v0, v0, #0x1b +# CHECK: ushr.4s v0, v0, #0x1a +# CHECK: ushr.2d v0, v0, #0x39 +# CHECK: usra.8b v0, v0, #0x7 +# CHECK: usra.16b v0, v0, #0x6 +# CHECK: usra.4h v0, v0, #0xd +# CHECK: usra.8h v0, v0, #0xc +# CHECK: usra.2s v0, v0, #0x1b +# CHECK: usra.4s v0, v0, #0x1a +# CHECK: usra.2d v0, v0, #0x39 0x00 0xe0 0x20 0x0e diff --git a/test/MC/Disassembler/AArch64/arm64-arithmetic.txt b/test/MC/Disassembler/AArch64/arm64-arithmetic.txt index bd870edc8af7..95b44858e840 100644 --- a/test/MC/Disassembler/AArch64/arm64-arithmetic.txt +++ b/test/MC/Disassembler/AArch64/arm64-arithmetic.txt @@ -452,30 +452,30 @@ 0x20 0x00 0xa0 0x52 0x20 0x00 0xa0 0xd2 -# CHECK: movz w0, #0x1 -# CHECK: movz x0, #0x1 -# CHECK: movz w0, #0x1, lsl #16 -# CHECK: movz x0, #0x1, lsl #16 +# CHECK: mov w0, #1 +# CHECK: mov x0, #1 +# CHECK: mov w0, #65536 +# CHECK: mov x0, #65536 0x40 0x00 0x80 0x12 0x40 0x00 0x80 0x92 0x40 0x00 0xa0 0x12 0x40 0x00 0xa0 0x92 -# CHECK: movn w0, #0x2 -# CHECK: movn x0, #0x2 -# CHECK: movn w0, #0x2, lsl #16 -# CHECK: movn x0, #0x2, lsl #16 +# CHECK: mov w0, #-3 +# CHECK: mov x0, #-3 +# CHECK: mov w0, #-131073 +# CHECK: mov x0, #-131073 0x20 0x00 0x80 0x72 0x20 0x00 0x80 0xf2 0x20 0x00 0xa0 0x72 0x20 0x00 0xa0 0xf2 -# CHECK: movk w0, #0x1 -# CHECK: movk x0, #0x1 -# CHECK: movk w0, #0x1, lsl #16 -# CHECK: movk x0, #0x1, lsl #16 +# CHECK: movk w0, #1 +# CHECK: movk x0, #1 +# CHECK: movk w0, #1, lsl #16 +# CHECK: movk x0, #1, lsl #16 #==---------------------------------------------------------------------------== # Conditionally set flags instructions diff --git a/test/MC/Disassembler/AArch64/arm64-system.txt b/test/MC/Disassembler/AArch64/arm64-system.txt index 9027a60dd30d..e31d32329519 100644 --- a/test/MC/Disassembler/AArch64/arm64-system.txt +++ b/test/MC/Disassembler/AArch64/arm64-system.txt @@ -48,7 +48,7 @@ # CHECK: sys #2, c0, c5, #7 # CHECK: sys #7, c6, c10, #7, x7 # CHECK: sysl x20, #6, c3, c15, #7 -# CHECK: msr SPSEL, #0 +# CHECK: msr SPSel, #0 # CHECK: msr S3_0_C11_C0_0, x0 # CHECK: mrs x0, S3_0_C11_C0_0 diff --git a/test/MC/Disassembler/AArch64/armv8.2a-statistical-profiling.txt b/test/MC/Disassembler/AArch64/armv8.2a-statistical-profiling.txt index 217424cc46e0..dd18b8faf95b 100644 --- a/test/MC/Disassembler/AArch64/armv8.2a-statistical-profiling.txt +++ b/test/MC/Disassembler/AArch64/armv8.2a-statistical-profiling.txt @@ -3,7 +3,7 @@ [0x3f,0x22,0x03,0xd5] # CHECK: psb csync -# NO_SPE: hint #0x11 +# NO_SPE: hint #17 [0x00,0x9a,0x18,0xd5] [0x20,0x9a,0x18,0xd5] diff --git a/test/MC/Disassembler/AArch64/basic-a64-instructions.txt b/test/MC/Disassembler/AArch64/basic-a64-instructions.txt index 185f0c1124a6..4d438e032e77 100644 --- a/test/MC/Disassembler/AArch64/basic-a64-instructions.txt +++ b/test/MC/Disassembler/AArch64/basic-a64-instructions.txt @@ -2907,8 +2907,8 @@ 0x7f 0xf0 0x1 0xf2 0xff 0xf3 0x0 0xf2 -# CHECK: orr w3, wzr, #0xf000f -# CHECK: orr x10, xzr, #0xaaaaaaaaaaaaaaaa +# CHECK: mov w3, #983055 +# CHECK: mov x10, #-6148914691236517206 0xe3 0x8f 0x0 0x32 0xea 0xf3 0x1 0xb2 @@ -2991,19 +2991,19 @@ # limitation in InstAlias. Lots of the "mov[nz]" instructions should # be "mov". -# CHECK: movz w1, #{{65535|0xffff}} +# CHECK: mov w1, #{{65535|0xffff}} # CHECK: movz w2, #0, lsl #16 -# CHECK: movn w2, #{{1234|0x4d2}} +# CHECK: mov w2, #-1235 0xe1 0xff 0x9f 0x52 0x2 0x0 0xa0 0x52 0x42 0x9a 0x80 0x12 -# CHECK: movz x2, #{{1234|0x4d2}}, lsl #32 +# CHECK: mov x2, #5299989643264 # CHECK: movk xzr, #{{4321|0x10e1}}, lsl #48 0x42 0x9a 0xc0 0xd2 0x3f 0x1c 0xe2 0xf2 -# CHECK: movz x2, #0 +# CHECK: mov x2, #0 # CHECK: movk w3, #0 # CHECK: movz x4, #0, lsl #16 # CHECK: movk w5, #0, lsl #16 @@ -3131,9 +3131,9 @@ 0xdf 0x3f 0x3 0xd5 0xdf 0x3c 0x3 0xd5 -# CHECK: msr {{spsel|SPSEL}}, #0 -# CHECK: msr {{daifset|DAIFSET}}, #15 -# CHECK: msr {{daifclr|DAIFCLR}}, #12 +# CHECK: msr {{SPSel|SPSEL}}, #0 +# CHECK: msr {{DAIFSet|DAIFSET}}, #15 +# CHECK: msr {{DAIFClr|DAIFCLR}}, #12 0xbf 0x40 0x0 0xd5 0xdf 0x4f 0x3 0xd5 0xff 0x4c 0x3 0xd5 @@ -3289,14 +3289,14 @@ # CHECK: msr {{sp_el0|SP_EL0}}, x12 # CHECK: msr {{sp_el1|SP_EL1}}, x12 # CHECK: msr {{sp_el2|SP_EL2}}, x12 -# CHECK: msr {{spsel|SPSEL}}, x12 +# CHECK: msr {{SPSel|SPSEL}}, x12 # CHECK: msr {{nzcv|NZCV}}, x12 # CHECK: msr {{daif|DAIF}}, x12 -# CHECK: msr {{currentel|CURRENTEL}}, x12 -# CHECK: msr {{spsr_irq|SPSR_IRQ}}, x12 -# CHECK: msr {{spsr_abt|SPSR_ABT}}, x12 -# CHECK: msr {{spsr_und|SPSR_UND}}, x12 -# CHECK: msr {{spsr_fiq|SPSR_FIQ}}, x12 +# CHECK: msr {{CurrentEL|CURRENTEL}}, x12 +# CHECK: msr {{SPSR_irq|SPSR_IRQ}}, x12 +# CHECK: msr {{SPSR_abt|SPSR_ABT}}, x12 +# CHECK: msr {{SPSR_und|SPSR_UND}}, x12 +# CHECK: msr {{SPSR_fiq|SPSR_FIQ}}, x12 # CHECK: msr {{fpcr|FPCR}}, x12 # CHECK: msr {{fpsr|FPSR}}, x12 # CHECK: msr {{dspsr_el0|DSPSR_EL0}}, x12 @@ -3581,14 +3581,14 @@ # CHECK: mrs x9, {{sp_el0|SP_EL0}} # CHECK: mrs x9, {{sp_el1|SP_EL1}} # CHECK: mrs x9, {{sp_el2|SP_EL2}} -# CHECK: mrs x9, {{spsel|SPSEL}} +# CHECK: mrs x9, {{SPSel|SPSEL}} # CHECK: mrs x9, {{nzcv|NZCV}} # CHECK: mrs x9, {{daif|DAIF}} -# CHECK: mrs x9, {{currentel|CURRENTEL}} -# CHECK: mrs x9, {{spsr_irq|SPSR_IRQ}} -# CHECK: mrs x9, {{spsr_abt|SPSR_ABT}} -# CHECK: mrs x9, {{spsr_und|SPSR_UND}} -# CHECK: mrs x9, {{spsr_fiq|SPSR_FIQ}} +# CHECK: mrs x9, {{CurrentEL|CURRENTEL}} +# CHECK: mrs x9, {{SPSR_irq|SPSR_IRQ}} +# CHECK: mrs x9, {{SPSR_abt|SPSR_ABT}} +# CHECK: mrs x9, {{SPSR_und|SPSR_UND}} +# CHECK: mrs x9, {{SPSR_fiq|SPSR_FIQ}} # CHECK: mrs x9, {{fpcr|FPCR}} # CHECK: mrs x9, {{fpsr|FPSR}} # CHECK: mrs x9, {{dspsr_el0|DSPSR_EL0}} diff --git a/test/MC/Disassembler/AArch64/neon-instructions.txt b/test/MC/Disassembler/AArch64/neon-instructions.txt index 35906684f9ca..ff7dedce444a 100644 --- a/test/MC/Disassembler/AArch64/neon-instructions.txt +++ b/test/MC/Disassembler/AArch64/neon-instructions.txt @@ -87,10 +87,10 @@ # Vector Bitwise Bit Clear (AND NOT) - immediate # Vector Bitwise OR - immedidate #------------------------------------------------------------------------------ -# CHECK: movi v31.4s, #0xff, lsl #24 +# CHECK: movi v31.4s, #255, lsl #24 # CHECK: mvni v0.2s, #{{0x0|0}} -# CHECK: bic v15.4h, #0xf, lsl #8 -# CHECK: orr v16.8h, #0x1f +# CHECK: bic v15.4h, #15, lsl #8 +# CHECK: orr v16.8h, #31 0xff 0x67 0x07 0x4f 0x00 0x04 0x00 0x2f 0xef 0xb5 0x00 0x2f @@ -100,8 +100,8 @@ # Vector Move Immediate Masked # Vector Move Inverted Immediate Masked #------------------------------------------------------------------------------ -# CHECK: movi v8.2s, #0x8, msl #8 -# CHECK: mvni v16.4s, #0x10, msl #16 +# CHECK: movi v8.2s, #8, msl #8 +# CHECK: mvni v16.4s, #16, msl #16 0x08 0xc5 0x00 0x0f 0x10 0xd6 0x00 0x6f @@ -110,8 +110,8 @@ # Vector Move Immediate - bytemask, per doubleword # Vector Move Immediate - bytemask, one doubleword #------------------------------------------------------------------------------ -# CHECK: movi v16.8b, #0xff -# CHECK: movi v31.16b, #0x1f +# CHECK: movi v16.8b, #255 +# CHECK: movi v31.16b, #31 # CHECK: movi d15, #0xff00ff00ff00ff # CHECK: movi v31.2d, #0xff0000ff0000ffff 0xf0 0xe7 0x07 0x0f diff --git a/test/MC/Disassembler/AArch64/ras-extension.txt b/test/MC/Disassembler/AArch64/ras-extension.txt new file mode 100644 index 000000000000..241dc558d084 --- /dev/null +++ b/test/MC/Disassembler/AArch64/ras-extension.txt @@ -0,0 +1,47 @@ +# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+ras --disassemble < %s | FileCheck %s + +[0x1f,0x22,0x03,0xd5] +# CHECK: esb + +# CHECK: msr ERRSELR_EL1, x0 +# CHECK: msr ERXCTLR_EL1, x0 +# CHECK: msr ERXSTATUS_EL1, x0 +# CHECK: msr ERXADDR_EL1, x0 +# CHECK: msr ERXMISC0_EL1, x0 +# CHECK: msr ERXMISC1_EL1, x0 +# CHECK: msr DISR_EL1, x0 +# CHECK: msr VDISR_EL2, x0 +# CHECK: msr VSESR_EL2, x0 +[0x20,0x53,0x18,0xd5] +[0x20,0x54,0x18,0xd5] +[0x40,0x54,0x18,0xd5] +[0x60,0x54,0x18,0xd5] +[0x00,0x55,0x18,0xd5] +[0x20,0x55,0x18,0xd5] +[0x20,0xc1,0x18,0xd5] +[0x20,0xc1,0x1c,0xd5] +[0x60,0x52,0x1c,0xd5] + +# CHECK: mrs x0, ERRSELR_EL1 +# CHECK: mrs x0, ERXCTLR_EL1 +# CHECK: mrs x0, ERXSTATUS_EL1 +# CHECK: mrs x0, ERXADDR_EL1 +# CHECK: mrs x0, ERXMISC0_EL1 +# CHECK: mrs x0, ERXMISC1_EL1 +# CHECK: mrs x0, DISR_EL1 +# CHECK: mrs x0, VDISR_EL2 +# CHECK: mrs x0, VSESR_EL2 +[0x20,0x53,0x38,0xd5] +[0x20,0x54,0x38,0xd5] +[0x40,0x54,0x38,0xd5] +[0x60,0x54,0x38,0xd5] +[0x00,0x55,0x38,0xd5] +[0x20,0x55,0x38,0xd5] +[0x20,0xc1,0x38,0xd5] +[0x20,0xc1,0x3c,0xd5] +[0x60,0x52,0x3c,0xd5] + +# CHECK: mrs x0, ERRIDR_EL1 +# CHECK: mrs x0, ERXFR_EL1 +[0x00,0x53,0x38,0xd5] +[0x00,0x54,0x38,0xd5] diff --git a/test/MC/Disassembler/AMDGPU/dpp_vi.txt b/test/MC/Disassembler/AMDGPU/dpp_vi.txt new file mode 100644 index 000000000000..117110290edb --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/dpp_vi.txt @@ -0,0 +1,89 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: v_mov_b32_dpp v0, v0 quad_perm:[0,2,1,1] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x58,0x00,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x58 0x00 0xff + +# VI: v_mov_b32_dpp v0, v0 row_shl:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x01,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x01 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 row_shr:15 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x1f,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x1f 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 row_ror:12 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x2c,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x2c 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 wave_shl:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x30,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x30 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 wave_rol:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x34,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x34 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 wave_shr:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x38,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x38 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 wave_ror:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x3c,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x3c 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 row_mirror row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x40,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x40 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 row_half_mirror row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x41,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x41 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 row_bcast:15 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x42,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x42 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 row_bcast:31 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x43,0x01,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x43 0x01 0xff + +# VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xa1] +0xfa 0x02 0x00 0x7e 0x00 0x4d 0x08 0xa1 + +# VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0xf ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xaf] +0xfa 0x02 0x00 0x7e 0x00 0x4d 0x00 0xaf + +# VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xf bank_mask:0x1 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xf1] +0xfa 0x02 0x00 0x7e 0x00 0x4d 0x00 0xf1 + +# VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xf bank_mask:0xf bound_ctrl:0 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xff] +0xfa 0x02 0x00 0x7e 0x00 0x4d 0x08 0xff + +# VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0x1 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x00,0xa1] +0xfa 0x02 0x00 0x7e 0x00 0x4d 0x00 0xa1 + +# VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xa bank_mask:0xf bound_ctrl:0 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xaf] +0xfa 0x02 0x00 0x7e 0x00 0x4d 0x08 0xaf + +# VI: v_mov_b32_dpp v0, v0 quad_perm:[1,3,0,1] row_mask:0xf bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x02,0x00,0x7e,0x00,0x4d,0x08,0xf1] +0xfa 0x02 0x00 0x7e 0x00 0x4d 0x08 0xf1 + +# VI: v_cvt_u32_f32_dpp v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x0e,0x00,0x7e,0x00,0x01,0x09,0xa1] +0xfa 0x0e 0x00 0x7e 0x00 0x01 0x09 0xa1 + +# VI: v_fract_f32_dpp v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x36,0x00,0x7e,0x00,0x01,0x09,0xa1] +0xfa 0x36 0x00 0x7e 0x00 0x01 0x09 0xa1 + +# VI: v_sin_f32_dpp v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x52,0x00,0x7e,0x00,0x01,0x09,0xa1] +0xfa 0x52 0x00 0x7e 0x00 0x01 0x09 0xa1 + +# VI: v_add_f32_dpp v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x09,0xa1] +0xfa 0x00 0x00 0x02 0x00 0x01 0x09 0xa1 + +# VI: v_min_f32_dpp v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x14,0x00,0x01,0x09,0xa1] +0xfa 0x00 0x00 0x14 0x00 0x01 0x09 0xa1 + +# VI: v_and_b32_dpp v0, v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x26,0x00,0x01,0x09,0xa1] +0xfa 0x00 0x00 0x26 0x00 0x01 0x09 0xa1 + +# VI: v_add_f32_dpp v0, -v0, v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x19,0xa1] +0xfa 0x00 0x00 0x02 0x00 0x01 0x19 0xa1 + +# VI: v_add_f32_dpp v0, v0, |v0| row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x89,0xa1] +0xfa 0x00 0x00 0x02 0x00 0x01 0x89 0xa1 + +# VI: v_add_f32_dpp v0, -v0, |v0| row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x99,0xa1] +0xfa 0x00 0x00 0x02 0x00 0x01 0x99 0xa1 + +# VI: v_add_f32_dpp v0, |v0|, -v0 row_shl:1 row_mask:0xa bank_mask:0x1 bound_ctrl:0 ; encoding: [0xfa,0x00,0x00,0x02,0x00,0x01,0x69,0xa1] + +0xfa 0x00 0x00 0x02 0x00 0x01 0x69 0xa1
\ No newline at end of file diff --git a/test/MC/Disassembler/AMDGPU/ds_vi.txt b/test/MC/Disassembler/AMDGPU/ds_vi.txt new file mode 100644 index 000000000000..222b00c6389b --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/ds_vi.txt @@ -0,0 +1,325 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: ds_add_u32 v2, v4 offset:16 ; encoding: [0x10,0x00,0x00,0xd8,0x02,0x04,0x00,0x00] +0x10 0x00 0x00 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_write2_b32 v2, v4, v6 offset0:4 ; encoding: [0x04,0x00,0x1c,0xd8,0x02,0x04,0x06,0x00] +0x04 0x00 0x1c 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_write2_b32 v2, v4, v6 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x1c,0xd8,0x02,0x04,0x06,0x00] +0x04 0x08 0x1c 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_write2_b32 v2, v4, v6 offset1:8 ; encoding: [0x00,0x08,0x1c,0xd8,0x02,0x04,0x06,0x00] +0x00 0x08 0x1c 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_read2_b32 v[8:9], v2 offset0:4 ; encoding: [0x04,0x00,0x6e,0xd8,0x02,0x00,0x00,0x08] +0x04 0x00 0x6e 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read2_b32 v[8:9], v2 offset0:4 offset1:8 ; encoding: [0x04,0x08,0x6e,0xd8,0x02,0x00,0x00,0x08] +0x04 0x08 0x6e 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read2_b32 v[8:9], v2 offset1:8 ; encoding: [0x00,0x08,0x6e,0xd8,0x02,0x00,0x00,0x08] +0x00 0x08 0x6e 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_add_u32 v2, v4 ; encoding: [0x00,0x00,0x00,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x00 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_sub_u32 v2, v4 ; encoding: [0x00,0x00,0x02,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x02 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_rsub_u32 v2, v4 ; encoding: [0x00,0x00,0x04,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x04 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_inc_u32 v2, v4 ; encoding: [0x00,0x00,0x06,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x06 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_dec_u32 v2, v4 ; encoding: [0x00,0x00,0x08,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x08 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_min_i32 v2, v4 ; encoding: [0x00,0x00,0x0a,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x0a 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_max_i32 v2, v4 ; encoding: [0x00,0x00,0x0c,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x0c 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_min_u32 v2, v4 ; encoding: [0x00,0x00,0x0e,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x0e 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_max_u32 v2, v4 ; encoding: [0x00,0x00,0x10,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x10 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_and_b32 v2, v4 ; encoding: [0x00,0x00,0x12,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x12 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_or_b32 v2, v4 ; encoding: [0x00,0x00,0x14,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x14 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_xor_b32 v2, v4 ; encoding: [0x00,0x00,0x16,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x16 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_mskor_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x18,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x18 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_write_b32 v2, v4 ; encoding: [0x00,0x00,0x1a,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x1a 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_write2_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x1c,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x1c 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_write2st64_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x1e,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x1e 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_cmpst_b32 v2, v4, v6 ; encoding: [0x00,0x00,0x20,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x20 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_cmpst_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x22,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x22 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_min_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x24,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x24 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_max_f32 v2, v4, v6 ; encoding: [0x00,0x00,0x26,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x26 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_gws_init v2 gds ; encoding: [0x00,0x00,0x33,0xd8,0x02,0x00,0x00,0x00] +0x00 0x00 0x33 0xd8 0x02 0x00 0x00 0x00 + +# VI: ds_gws_sema_v v2 gds ; encoding: [0x00,0x00,0x35,0xd8,0x02,0x00,0x00,0x00] +0x00 0x00 0x35 0xd8 0x02 0x00 0x00 0x00 + +# VI: ds_gws_sema_br v2 gds ; encoding: [0x00,0x00,0x37,0xd8,0x02,0x00,0x00,0x00] +0x00 0x00 0x37 0xd8 0x02 0x00 0x00 0x00 + +# VI: ds_gws_sema_p v2 gds ; encoding: [0x00,0x00,0x39,0xd8,0x02,0x00,0x00,0x00] +0x00 0x00 0x39 0xd8 0x02 0x00 0x00 0x00 + +# VI: ds_gws_barrier v2 gds ; encoding: [0x00,0x00,0x3b,0xd8,0x02,0x00,0x00,0x00] +0x00 0x00 0x3b 0xd8 0x02 0x00 0x00 0x00 + +# VI: ds_write_b8 v2, v4 ; encoding: [0x00,0x00,0x3c,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x3c 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_write_b16 v2, v4 ; encoding: [0x00,0x00,0x3e,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x3e 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_add_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x40,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x40 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_sub_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x42,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x42 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_rsub_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x44,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x44 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_inc_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x46,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x46 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_dec_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x48,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x48 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_min_rtn_i32 v8, v2, v4 ; encoding: [0x00,0x00,0x4a,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x4a 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_max_rtn_i32 v8, v2, v4 ; encoding: [0x00,0x00,0x4c,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x4c 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_min_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x4e,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x4e 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_max_rtn_u32 v8, v2, v4 ; encoding: [0x00,0x00,0x50,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x50 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_and_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0x52,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x52 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_or_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0x54,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x54 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_xor_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0x56,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x56 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_mskor_rtn_b32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x58,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0x58 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_wrxchg_rtn_b32 v8, v2, v4 ; encoding: [0x00,0x00,0x5a,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0x5a 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_wrxchg2_rtn_b32 v[8:9], v2, v4, v6 ; encoding: [0x00,0x00,0x5c,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0x5c 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_wrxchg2st64_rtn_b32 v[8:9], v2, v4, v6 ; encoding: [0x00,0x00,0x5e,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0x5e 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_cmpst_rtn_b32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x60,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0x60 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_cmpst_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x62,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0x62 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_min_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x64,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0x64 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_max_rtn_f32 v8, v2, v4, v6 ; encoding: [0x00,0x00,0x66,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0x66 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_swizzle_b32 v8, v2 ; encoding: [0x00,0x00,0x7a,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x7a 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read_b32 v8, v2 ; encoding: [0x00,0x00,0x6c,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x6c 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read2_b32 v[8:9], v2 ; encoding: [0x00,0x00,0x6e,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x6e 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read2st64_b32 v[8:9], v2 ; encoding: [0x00,0x00,0x70,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x70 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read_i8 v8, v2 ; encoding: [0x00,0x00,0x72,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x72 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read_u8 v8, v2 ; encoding: [0x00,0x00,0x74,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x74 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read_i16 v8, v2 ; encoding: [0x00,0x00,0x76,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x76 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read_u16 v8, v2 ; encoding: [0x00,0x00,0x78,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x78 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_consume v8 ; encoding: [0x00,0x00,0x7a,0xd8,0x00,0x00,0x00,0x08] +0x00 0x00 0x7a 0xd8 0x00 0x00 0x00 0x08 + +# FIXME: ds_append v8 ; encoding: [0x00,0x00,0x7c,0xd8,0x00,0x00,0x00,0x08] +0x00 0x00 0x7c 0xd8 0x00 0x00 0x00 0x08 + +# VI: ds_ordered_count v8, v2 gds ; encoding: [0x00,0x00,0x7f,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0x7f 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_add_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x80,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x80 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_sub_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x82,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x82 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_rsub_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x84,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x84 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_inc_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x86,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x86 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_dec_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x88,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x88 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_min_i64 v2, v[4:5] ; encoding: [0x00,0x00,0x8a,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x8a 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_max_i64 v2, v[4:5] ; encoding: [0x00,0x00,0x8c,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x8c 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_min_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x8e,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x8e 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_max_u64 v2, v[4:5] ; encoding: [0x00,0x00,0x90,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x90 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_and_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x92,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x92 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_or_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x94,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x94 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_xor_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x96,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x96 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_mskor_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x98,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x98 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_write_b64 v2, v[4:5] ; encoding: [0x00,0x00,0x9a,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0x9a 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_write2_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x9c,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x9c 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_write2st64_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0x9e,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0x9e 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_cmpst_b64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xa0,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0xa0 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_cmpst_f64 v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xa2,0xd8,0x02,0x04,0x06,0x00] +0x00 0x00 0xa2 0xd8 0x02 0x04 0x06 0x00 + +# VI: ds_min_f64 v2, v[4:5] ; encoding: [0x00,0x00,0xa4,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0xa4 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_max_f64 v2, v[4:5] ; encoding: [0x00,0x00,0xa6,0xd8,0x02,0x04,0x00,0x00] +0x00 0x00 0xa6 0xd8 0x02 0x04 0x00 0x00 + +# VI: ds_add_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc0,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xc0 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_sub_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc2,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xc2 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_rsub_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc4,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xc4 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_inc_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc6,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xc6 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_dec_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xc8,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xc8 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_min_rtn_i64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xca,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xca 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_max_rtn_i64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xcc,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xcc 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_min_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xce,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xce 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_max_rtn_u64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xd0,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xd0 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_and_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xd2,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xd2 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_or_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xd4,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xd4 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_xor_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xd6,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xd6 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_mskor_rtn_b64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xd8,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0xd8 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_wrxchg_rtn_b64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xda,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xda 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_wrxchg2_rtn_b64 v[8:11], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xdc,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0xdc 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_wrxchg2st64_rtn_b64 v[8:11], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xde,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0xde 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_cmpst_rtn_b64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xe0,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0xe0 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_cmpst_rtn_f64 v[8:9], v2, v[4:5], v[6:7] ; encoding: [0x00,0x00,0xe2,0xd8,0x02,0x04,0x06,0x08] +0x00 0x00 0xe2 0xd8 0x02 0x04 0x06 0x08 + +# VI: ds_min_rtn_f64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xe4,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xe4 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_max_rtn_f64 v[8:9], v2, v[4:5] ; encoding: [0x00,0x00,0xe6,0xd8,0x02,0x04,0x00,0x08] +0x00 0x00 0xe6 0xd8 0x02 0x04 0x00 0x08 + +# VI: ds_read_b64 v[8:9], v2 ; encoding: [0x00,0x00,0xec,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0xec 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read2_b64 v[8:11], v2 ; encoding: [0x00,0x00,0xee,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0xee 0xd8 0x02 0x00 0x00 0x08 + +# VI: ds_read2st64_b64 v[8:11], v2 ; encoding: [0x00,0x00,0xf0,0xd8,0x02,0x00,0x00,0x08] +0x00 0x00 0xf0 0xd8 0x02 0x00 0x00 0x08 diff --git a/test/MC/Disassembler/AMDGPU/flat_vi.txt b/test/MC/Disassembler/AMDGPU/flat_vi.txt new file mode 100644 index 000000000000..a7013092b493 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/flat_vi.txt @@ -0,0 +1,229 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: flat_load_dword v1, v[3:4] ; encoding: [0x00,0x00,0x50,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x50 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_dword v1, v[3:4] glc ; encoding: [0x00,0x00,0x51,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x51 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_dword v1, v[3:4] glc slc ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x53 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_dword v1, v[3:4] glc tfe ; encoding: [0x00,0x00,0x51,0xdc,0x03,0x00,0x80,0x01] +0x00 0x00 0x51 0xdc 0x03 0x00 0x80 0x01 + +# VI: flat_load_dword v1, v[3:4] glc slc tfe ; encoding: [0x00,0x00,0x53,0xdc,0x03,0x00,0x80,0x01] +0x00 0x00 0x53 0xdc 0x03 0x00 0x80 0x01 + +# VI: flat_load_dword v1, v[3:4] slc ; encoding: [0x00,0x00,0x52,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x52 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_dword v1, v[3:4] slc tfe ; encoding: [0x00,0x00,0x52,0xdc,0x03,0x00,0x80,0x01] +0x00 0x00 0x52 0xdc 0x03 0x00 0x80 0x01 + +# VI: flat_load_dword v1, v[3:4] tfe ; encoding: [0x00,0x00,0x50,0xdc,0x03,0x00,0x80,0x01] +0x00 0x00 0x50 0xdc 0x03 0x00 0x80 0x01 + +# VI: flat_atomic_add v1, v[3:4], v5 glc slc ; encoding: [0x00,0x00,0x0b,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x0b 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_add v1, v[3:4], v5 glc tfe ; encoding: [0x00,0x00,0x09,0xdd,0x03,0x05,0x80,0x01] +0x00 0x00 0x09 0xdd 0x03 0x05 0x80 0x01 + +# VI: flat_atomic_add v1, v[3:4], v5 glc slc tfe ; encoding: [0x00,0x00,0x0b,0xdd,0x03,0x05,0x80,0x01] +0x00 0x00 0x0b 0xdd 0x03 0x05 0x80 0x01 + +# VI: flat_atomic_add v[3:4], v5 slc ; encoding: [0x00,0x00,0x0a,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x0a 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_add v[3:4], v5 slc tfe ; encoding: [0x00,0x00,0x0a,0xdd,0x03,0x05,0x80,0x00] +0x00 0x00 0x0a 0xdd 0x03 0x05 0x80 0x00 + +# VI: flat_atomic_add v[3:4], v5 tfe ; encoding: [0x00,0x00,0x08,0xdd,0x03,0x05,0x80,0x00] +0x00 0x00 0x08 0xdd 0x03 0x05 0x80 0x00 + +# VI: flat_load_ubyte v1, v[3:4] ; encoding: [0x00,0x00,0x40,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x40 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_sbyte v1, v[3:4] ; encoding: [0x00,0x00,0x44,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x44 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_ushort v1, v[3:4] ; encoding: [0x00,0x00,0x48,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x48 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_sshort v1, v[3:4] ; encoding: [0x00,0x00,0x4c,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x4c 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_dword v1, v[3:4] ; encoding: [0x00,0x00,0x50,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x50 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_dwordx2 v[1:2], v[3:4] ; encoding: [0x00,0x00,0x54,0xdc,0x03,0x00,0x00,0x01] +0x00 0x00 0x54 0xdc 0x03 0x00 0x00 0x01 + +# VI: flat_load_dwordx4 v[5:8], v[3:4] ; encoding: [0x00,0x00,0x5c,0xdc,0x03,0x00,0x00,0x05] +0x00 0x00 0x5c 0xdc 0x03 0x00 0x00 0x05 + +# VI: flat_load_dwordx3 v[5:7], v[3:4] ; encoding: [0x00,0x00,0x58,0xdc,0x03,0x00,0x00,0x05] +0x00 0x00 0x58 0xdc 0x03 0x00 0x00 0x05 + +# VI: flat_store_dwordx4 v[3:4], v[5:8] ; encoding: [0x00,0x00,0x7c,0xdc,0x03,0x05,0x00,0x00] +0x00 0x00 0x7c 0xdc 0x03 0x05 0x00 0x00 + +# VI: flat_store_dwordx3 v[3:4], v[5:7] ; encoding: [0x00,0x00,0x78,0xdc,0x03,0x05,0x00,0x00] +0x00 0x00 0x78 0xdc 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_swap v[3:4], v5 ; encoding: [0x00,0x00,0x00,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x00 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_swap v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x01,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x01 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_cmpswap v[3:4], v[5:6] ; encoding: [0x00,0x00,0x04,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x04 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_cmpswap v1, v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x05,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x05 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_add v[3:4], v5 ; encoding: [0x00,0x00,0x08,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x08 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_add v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x09,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x09 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_sub v[3:4], v5 ; encoding: [0x00,0x00,0x0c,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x0c 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_sub v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x0d,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x0d 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_smin v[3:4], v5 ; encoding: [0x00,0x00,0x10,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x10 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_smin v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x11,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x11 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_umin v[3:4], v5 ; encoding: [0x00,0x00,0x14,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x14 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_umin v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x15,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x15 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_smax v[3:4], v5 ; encoding: [0x00,0x00,0x18,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x18 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_smax v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x19,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x19 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_umax v[3:4], v5 ; encoding: [0x00,0x00,0x1c,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x1c 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_umax v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x1d,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x1d 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_and v[3:4], v5 ; encoding: [0x00,0x00,0x20,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x20 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_and v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x21,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x21 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_or v[3:4], v5 ; encoding: [0x00,0x00,0x24,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x24 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_or v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x25,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x25 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_xor v[3:4], v5 ; encoding: [0x00,0x00,0x28,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x28 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_xor v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x29,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x29 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_inc v[3:4], v5 ; encoding: [0x00,0x00,0x2c,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x2c 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_inc v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x2d,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x2d 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_dec v[3:4], v5 ; encoding: [0x00,0x00,0x30,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x30 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_dec v1, v[3:4], v5 glc ; encoding: [0x00,0x00,0x31,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x31 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_swap_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0x80,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x80 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_swap_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x81,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x81 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_cmpswap_x2 v[3:4], v[5:8] ; encoding: [0x00,0x00,0x84,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x84 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_cmpswap_x2 v[1:2], v[3:4], v[5:8] glc ; encoding: [0x00,0x00,0x85,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x85 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_add_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0x88,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x88 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_add_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x89,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x89 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_sub_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0x8c,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x8c 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_sub_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x8d,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x8d 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_smin_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0x90,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x90 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_smin_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x91,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x91 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_umin_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0x94,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x94 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_umin_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x95,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x95 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_smax_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0x98,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x98 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_smax_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x99,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x99 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_umax_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0x9c,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0x9c 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_umax_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0x9d,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0x9d 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_and_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0xa0,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0xa0 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_and_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0xa1,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0xa1 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_or_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0xa4,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0xa4 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_or_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0xa5,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0xa5 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_xor_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0xa8,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0xa8 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_xor_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0xa9,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0xa9 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_inc_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0xac,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0xac 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_inc_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0xad,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0xad 0xdd 0x03 0x05 0x00 0x01 + +# VI: flat_atomic_dec_x2 v[3:4], v[5:6] ; encoding: [0x00,0x00,0xb0,0xdd,0x03,0x05,0x00,0x00] +0x00 0x00 0xb0 0xdd 0x03 0x05 0x00 0x00 + +# VI: flat_atomic_dec_x2 v[1:2], v[3:4], v[5:6] glc ; encoding: [0x00,0x00,0xb1,0xdd,0x03,0x05,0x00,0x01] +0x00 0x00 0xb1 0xdd 0x03 0x05 0x00 0x01 diff --git a/test/MC/Disassembler/AMDGPU/lit.local.cfg b/test/MC/Disassembler/AMDGPU/lit.local.cfg new file mode 100644 index 000000000000..2a665f06be72 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'AMDGPU' in config.root.targets: + config.unsupported = True diff --git a/test/MC/Disassembler/AMDGPU/mov.txt b/test/MC/Disassembler/AMDGPU/mov.txt new file mode 100644 index 000000000000..3b6ba4210b83 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/mov.txt @@ -0,0 +1,31 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s + +# CHECK: v_mov_b32_e32 v2, v1 ; encoding: [0x01,0x03,0x04,0x7e] +0x01 0x03 0x04 0x7e + +# CHECK: v_mov_b32_e32 v1, 0.5 ; encoding: [0xf0,0x02,0x02,0x7e] +0xf0 0x02 0x02 0x7e + +# CHECK: v_mov_b32_e32 v15, s100 ; encoding: [0x64,0x02,0x1e,0x7e] +0x64 0x02 0x1e 0x7e + +# CHECK: v_mov_b32_e32 v90, flat_scratch_lo ; encoding: [0x66,0x02,0xb4,0x7e] +0x66 0x02 0xb4 0x7e + +# CHECK: v_mov_b32_e32 v150, vcc_lo ; encoding: [0x6a,0x02,0x2c,0x7f] +0x6a 0x02 0x2c 0x7f + +# CHECK: v_mov_b32_e32 v199, exec_lo ; encoding: [0x7e,0x02,0x8e,0x7f] +0x7e 0x02 0x8e 0x7f + +# CHECK: v_mov_b32_e32 v222, m0 ; encoding: [0x7c,0x02,0xbc,0x7f] +0x7c 0x02 0xbc 0x7f + +# CHECK: v_mov_b32_e32 v255, -13 ; encoding: [0xcd,0x02,0xfe,0x7f] +0xcd 0x02 0xfe 0x7f + +# CHECK: v_cvt_f32_i32_e32 v153, s98 ; encoding: [0x62,0x0a,0x32,0x7f] +0x62 0x0a 0x32 0x7f + +# CHECK: v_cvt_f32_u32_e32 v33, -4.0 ; encoding: [0xf7,0x0c,0x42,0x7e] +0xf7 0x0c 0x42 0x7e
\ No newline at end of file diff --git a/test/MC/Disassembler/AMDGPU/mubuf_vi.txt b/test/MC/Disassembler/AMDGPU/mubuf_vi.txt new file mode 100644 index 000000000000..e88e7c549f56 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/mubuf_vi.txt @@ -0,0 +1,355 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x50 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x50,0xe0,0x00,0x01,0x01,0x01] +0x04 0x00 0x50 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x50,0xe0,0x00,0x01,0x01,0x01] +0x04 0x40 0x50 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x52,0xe0,0x00,0x01,0x01,0x01] +0x04 0x00 0x52 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x50,0xe0,0x00,0x01,0x81,0x01] +0x04 0x00 0x50 0xe0 0x00 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x50,0xe0,0x00,0x01,0x81,0x01] +0x00 0x40 0x50 0xe0 0x00 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x52,0xe0,0x00,0x01,0x81,0x01] +0x04 0x40 0x52 0xe0 0x00 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x50,0xe0,0x02,0x01,0x01,0x01] +0x00 0x10 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x50,0xe0,0x02,0x01,0x01,0x01] +0x04 0x10 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x50,0xe0,0x02,0x01,0x01,0x01] +0x04 0x50 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x52,0xe0,0x02,0x01,0x01,0x01] +0x04 0x10 0x52 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x50,0xe0,0x02,0x01,0x81,0x01] +0x04 0x10 0x50 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x50,0xe0,0x02,0x01,0x81,0x01] +0x00 0x50 0x50 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x52,0xe0,0x02,0x01,0x81,0x01] +0x04 0x50 0x52 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x50,0xe0,0x02,0x01,0x01,0x01] +0x00 0x20 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x50,0xe0,0x02,0x01,0x01,0x01] +0x04 0x20 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x50,0xe0,0x02,0x01,0x01,0x01] +0x04 0x60 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x52,0xe0,0x02,0x01,0x01,0x01] +0x04 0x20 0x52 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x50,0xe0,0x02,0x01,0x81,0x01] +0x04 0x20 0x50 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x50,0xe0,0x02,0x01,0x81,0x01] +0x00 0x60 0x50 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x52,0xe0,0x02,0x01,0x81,0x01] +0x04 0x60 0x52 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x50,0xe0,0x02,0x01,0x01,0x01] +0x00 0x30 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x50,0xe0,0x02,0x01,0x01,0x01] +0x04 0x30 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x50,0xe0,0x02,0x01,0x01,0x01] +0x04 0x70 0x50 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x52,0xe0,0x02,0x01,0x01,0x01] +0x04 0x30 0x52 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x50,0xe0,0x02,0x01,0x81,0x01] +0x04 0x30 0x50 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x50,0xe0,0x02,0x01,0x81,0x01] +0x00 0x70 0x50 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x52,0xe0,0x02,0x01,0x81,0x01] +0x04 0x70 0x52 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x70 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +0x04 0x00 0x70 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0x01,0x01] +0x04 0x40 0x70 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x72,0xe0,0x00,0x01,0x01,0x01] +0x04 0x00 0x72 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x81,0x01] +0x04 0x00 0x70 0xe0 0x00 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x70,0xe0,0x00,0x01,0x81,0x01] +0x00 0x40 0x70 0xe0 0x00 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x72,0xe0,0x00,0x01,0x81,0x01] +0x04 0x40 0x72 0xe0 0x00 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x70,0xe0,0x02,0x01,0x01,0x01] +0x00 0x10 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x01,0x01] +0x04 0x10 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0x01,0x01] +0x04 0x50 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x72,0xe0,0x02,0x01,0x01,0x01] +0x04 0x10 0x72 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x81,0x01] +0x04 0x10 0x70 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x70,0xe0,0x02,0x01,0x81,0x01] +0x00 0x50 0x70 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x72,0xe0,0x02,0x01,0x81,0x01] +0x04 0x50 0x72 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x70,0xe0,0x02,0x01,0x01,0x01] +0x00 0x20 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x01,0x01] +0x04 0x20 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0x01,0x01] +0x04 0x60 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x72,0xe0,0x02,0x01,0x01,0x01] +0x04 0x20 0x72 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x81,0x01] +0x04 0x20 0x70 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x70,0xe0,0x02,0x01,0x81,0x01] +0x00 0x60 0x70 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x72,0xe0,0x02,0x01,0x81,0x01] +0x04 0x60 0x72 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x70,0xe0,0x02,0x01,0x01,0x01] +0x00 0x30 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x01,0x01] +0x04 0x30 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0x01,0x01] +0x04 0x70 0x70 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x72,0xe0,0x02,0x01,0x01,0x01] +0x04 0x30 0x72 0xe0 0x02 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x81,0x01] +0x04 0x30 0x70 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x70,0xe0,0x02,0x01,0x81,0x01] +0x00 0x70 0x70 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x72,0xe0,0x02,0x01,0x81,0x01] +0x04 0x70 0x72 0xe0 0x02 0x01 0x81 0x01 + +# VI: buffer_load_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x00,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x00 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x04,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x04 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x08,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x08 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x0c,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x0c 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x10,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x10 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x14,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x14 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x18,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x18 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x1c 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_ubyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x40,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x40 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_sbyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x44,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x44 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_ushort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x48 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_sshort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x4c,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x4c 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x50 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x54,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x54 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_load_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x5c,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x5c 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_byte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x60 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_short v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x68 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x70 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x74,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x74 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_store_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x7c,0xe0,0x00,0x01,0x01,0x01] +0x00 0x00 0x7c 0xe0 0x00 0x01 0x01 0x01 + +# VI: buffer_wbinvl1 ; encoding: [0x00,0x00,0xf8,0xe0,0x00,0x00,0x00,0x00] +0x00 0x00 0xf8 0xe0 0x00 0x00 0x00 0x00 + +# VI: buffer_wbinvl1_vol ; encoding: [0x00,0x00,0xfc,0xe0,0x00,0x00,0x00,0x00] +0x00 0x00 0xfc 0xe0 0x00 0x00 0x00 0x00 + +# VI: buffer_atomic_inc v1, off, s[8:11], 56 ; encoding: [0x00,0x00,0x2c,0xe1,0x00,0x01,0x02,0xb8] +0x00 0x00 0x2c 0xe1 0x00 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, off, s[8:11], 56 slc ; encoding: [0x00,0x00,0x2e,0xe1,0x00,0x01,0x02,0xb8] +0x00 0x00 0x2e 0xe1 0x00 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, off, s[8:11], s4 slc ; encoding: [0x00,0x00,0x2e,0xe1,0x00,0x01,0x02,0x04] +0x00 0x00 0x2e 0xe1 0x00 0x01 0x02 0x04 + +# VI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 ; encoding: [0x04,0x00,0x2c,0xe1,0x00,0x01,0x02,0xb8] +0x04 0x00 0x2c 0xe1 0x00 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 slc ; encoding: [0x04,0x00,0x2e,0xe1,0x00,0x01,0x02,0xb8] +0x04 0x00 0x2e 0xe1 0x00 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen ; encoding: [0x00,0x10,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x10 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen slc ; encoding: [0x00,0x10,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x10 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 ; encoding: [0x04,0x10,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x10 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], s4 offen offset:4 ; encoding: [0x04,0x10,0x2c,0xe1,0x02,0x01,0x02,0x04] +0x04 0x10 0x2c 0xe1 0x02 0x01 0x02 0x04 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 slc ; encoding: [0x04,0x10,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x10 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen ; encoding: [0x00,0x20,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x20 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen slc ; encoding: [0x00,0x20,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x20 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 ; encoding: [0x04,0x20,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x20 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 slc ; encoding: [0x04,0x20,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x20 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], s4 idxen offset:4 slc ; encoding: [0x04,0x20,0x2e,0xe1,0x02,0x01,0x02,0x04] +0x04 0x20 0x2e 0xe1 0x02 0x01 0x02 0x04 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen ; encoding: [0x00,0x30,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x30 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], s4 idxen offen ; encoding: [0x00,0x30,0x2c,0xe1,0x02,0x01,0x02,0x04] +0x00 0x30 0x2c 0xe1 0x02 0x01 0x02 0x04 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen slc ; encoding: [0x00,0x30,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x30 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 ; encoding: [0x04,0x30,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x30 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x30 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, off, s[8:11], 56 glc ; encoding: [0x00,0x40,0x2c,0xe1,0x00,0x01,0x02,0xb8] +0x00 0x40 0x2c 0xe1 0x00 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, off, s[8:11], 56 glc slc ; encoding: [0x00,0x40,0x2e,0xe1,0x00,0x01,0x02,0xb8] +0x00 0x40 0x2e 0xe1 0x00 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, off, s[8:11], s4 glc slc ; encoding: [0x00,0x40,0x2e,0xe1,0x00,0x01,0x02,0x04] +0x00 0x40 0x2e 0xe1 0x00 0x01 0x02 0x04 + +# VI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 glc ; encoding: [0x04,0x40,0x2c,0xe1,0x00,0x01,0x02,0xb8] +0x04 0x40 0x2c 0xe1 0x00 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, off, s[8:11], 56 offset:4 glc slc ; encoding: [0x04,0x40,0x2e,0xe1,0x00,0x01,0x02,0xb8] +0x04 0x40 0x2e 0xe1 0x00 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen glc ; encoding: [0x00,0x50,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x50 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen glc slc ; encoding: [0x00,0x50,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x50 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 glc ; encoding: [0x04,0x50,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x50 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], s4 offen offset:4 glc ; encoding: [0x04,0x50,0x2c,0xe1,0x02,0x01,0x02,0x04] +0x04 0x50 0x2c 0xe1 0x02 0x01 0x02 0x04 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 offen offset:4 glc slc ; encoding: [0x04,0x50,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x50 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen glc ; encoding: [0x00,0x60,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x60 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen glc slc ; encoding: [0x00,0x60,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x60 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 glc ; encoding: [0x04,0x60,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x60 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], 56 idxen offset:4 glc slc ; encoding: [0x04,0x60,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x60 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v2, s[8:11], s4 idxen offset:4 glc slc ; encoding: [0x04,0x60,0x2e,0xe1,0x02,0x01,0x02,0x04] +0x04 0x60 0x2e 0xe1 0x02 0x01 0x02 0x04 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen glc ; encoding: [0x00,0x70,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x70 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], s4 idxen offen glc ; encoding: [0x00,0x70,0x2c,0xe1,0x02,0x01,0x02,0x04] +0x00 0x70 0x2c 0xe1 0x02 0x01 0x02 0x04 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen glc slc ; encoding: [0x00,0x70,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x00 0x70 0x2e 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x2c,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x70 0x2c 0xe1 0x02 0x01 0x02 0xb8 + +# VI: buffer_atomic_inc v1, v[2:3], s[8:11], 56 idxen offen offset:4 glc slc ; encoding: [0x04,0x70,0x2e,0xe1,0x02,0x01,0x02,0xb8] +0x04 0x70 0x2e 0xe1 0x02 0x01 0x02 0xb8 diff --git a/test/MC/Disassembler/AMDGPU/nop.txt b/test/MC/Disassembler/AMDGPU/nop.txt new file mode 100644 index 000000000000..0305765e6f57 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/nop.txt @@ -0,0 +1,4 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s + +# CHECK: v_nop ; encoding: [0x00,0x00,0x00,0x7e] +0x00 0x00 0x00 0x7e diff --git a/test/MC/Disassembler/AMDGPU/sdwa_vi.txt b/test/MC/Disassembler/AMDGPU/sdwa_vi.txt new file mode 100644 index 000000000000..2daf89a6121a --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/sdwa_vi.txt @@ -0,0 +1,347 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: v_mov_b32_sdwa v1, v2 dst_sel:BYTE_0 dst_unused:UNUSED_PRESERVE src0_sel:DWORD ; encoding: [0xf9,0x02,0x02,0x7e,0x02,0x10,0x06,0x06] +0xf9 0x02 0x02 0x7e 0x02 0x10 0x06 0x06 + +# VI: v_mov_b32_sdwa v3, v4 dst_sel:BYTE_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 ; encoding: [0xf9,0x02,0x06,0x7e,0x04,0x11,0x05,0x06] +0xf9 0x02 0x06 0x7e 0x04 0x11 0x05 0x06 + +# VI: v_mov_b32_sdwa v15, v99 dst_sel:BYTE_2 dst_unused:UNUSED_SEXT src0_sel:WORD_0 ; encoding: [0xf9,0x02,0x1e,0x7e,0x63,0x0a,0x04,0x06] +0xf9 0x02 0x1e 0x7e 0x63 0x0a 0x04 0x06 + +# VI: v_min_u32_sdwa v194, v13, v1 dst_sel:BYTE_3 dst_unused:UNUSED_SEXT src0_sel:BYTE_3 src1_sel:BYTE_2 ; encoding: [0xf9,0x02,0x84,0x1d,0x0d,0x0b,0x03,0x02] +0xf9 0x02 0x84 0x1d 0x0d 0x0b 0x03 0x02 + +# VI: v_min_u32_sdwa v255, v4, v1 dst_sel:WORD_0 dst_unused:UNUSED_PAD src0_sel:BYTE_2 src1_sel:WORD_1 ; encoding: [0xf9,0x02,0xfe,0x1d,0x04,0x04,0x02,0x05] +0xf9 0x02 0xfe 0x1d 0x04 0x04 0x02 0x05 + +# VI: v_min_u32_sdwa v200, v200, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:BYTE_1 src1_sel:DWORD ; encoding: [0xf9,0x02,0x90,0x1d,0xc8,0x05,0x01,0x06] +0xf9 0x02 0x90 0x1d 0xc8 0x05 0x01 0x06 + +# VI: v_min_u32_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD ; encoding: [0xf9,0x02,0x02,0x1c,0x01,0x06,0x00,0x06] +0xf9 0x02 0x02 0x1c 0x01 0x06 0x00 0x06 + +# VI: v_cvt_u32_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD ; encoding: [0xf9,0x0e,0x00,0x7e,0x00,0x16,0x06,0x06] +0xf9 0x0e 0x00 0x7e 0x00 0x16 0x06 0x06 + +# VI: v_fract_f32_sdwa v0, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD ; encoding: [0xf9,0x36,0x00,0x7e,0x00,0x26,0x06,0x06] +0xf9 0x36 0x00 0x7e 0x00 0x26 0x06 0x06 + +# VI: v_sin_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x52 0x00 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_mov_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 ; encoding: [0xf9,0x02,0x02,0x7e,0x00,0x16,0x05,0x06] +0xf9 0x02 0x02 0x7e 0x00 0x16 0x05 0x06 + +# VI: v_trunc_f32_sdwa v1, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:WORD_1 ; encoding: [0xf9,0x38,0x02,0x7e,0x00,0x36,0x05,0x06] +0xf9 0x38 0x02 0x7e 0x00 0x36 0x05 0x06 + +# VI: v_mov_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD ; encoding: [0xf9,0x02,0x02,0x7e,0x00,0x16,0x06,0x06] +0xf9 0x02 0x02 0x7e 0x00 0x16 0x06 0x06 + +# VI: v_add_f32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD ; encoding: [0xf9,0x00,0x00,0x02,0x00,0x06,0x05,0x06] +0xf9 0x00 0x00 0x02 0x00 0x06 0x05 0x06 + +# VI: v_min_f32_sdwa v0, v0, v0 clamp dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x14,0x00,0x36,0x06,0x02] +0xf9 0x00 0x00 0x14 0x00 0x36 0x06 0x02 + +# VI: v_and_b32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x26,0x00,0x06,0x06,0x02] +0xf9 0x00 0x00 0x26 0x00 0x06 0x06 0x02 + +# VI: v_mul_i32_i24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PRESERVE src0_sel:DWORD src1_sel:DWORD ; encoding: [0xf9,0x06,0x02,0x0c,0x02,0x16,0x06,0x06] +0xf9 0x06 0x02 0x0c 0x02 0x16 0x06 0x06 + +# VI: v_fract_f32_sdwa v0, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x36,0x00,0x7e,0x00,0x06,0x25,0x06] +0xf9 0x36 0x00 0x7e 0x00 0x06 0x25 0x06 + +# VI: v_sin_f32_sdwa v0, -|v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x35,0x06] +0xf9 0x52 0x00 0x7e 0x00 0x06 0x35 0x06 + +# VI: v_add_f32_sdwa v0, -|v0|, -v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x02,0x00,0x06,0x35,0x12] +0xf9 0x00 0x00 0x02 0x00 0x06 0x35 0x12 + +# VI: v_min_f32_sdwa v0, |v0|, -v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x14,0x00,0x06,0x25,0x12] +0xf9 0x00 0x00 0x14 0x00 0x06 0x25 0x12 + +# VI: v_nop ; encoding: [0xf9,0x00,0x00,0x7e,0x00,0x16,0x06,0x06] +0xf9 0x00 0x00 0x7e 0x00 0x16 0x06 0x06 + +# VI: v_cvt_u32_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x0e,0x00,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x0e 0x00 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_fract_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x36,0x00,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x36 0x00 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_sin_f32_sdwa v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x52,0x00,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x52 0x00 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_mov_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x02,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x02 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f32_i32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x0a,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x0a 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f32_u32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x0c,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x0c 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_i32_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x10,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x10 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f16_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x14,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x14 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f32_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x16,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x16 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_rpi_i32_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x18,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x18 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_flr_i32_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x1a,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x1a 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_off_f32_i4_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x1c,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x1c 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f32_ubyte0_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x22,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x22 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f32_ubyte1_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x24,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x24 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f32_ubyte2_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x26,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x26 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f32_ubyte3_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x28,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x28 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_trunc_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x38,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x38 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_ceil_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x3a,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x3a 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_rndne_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x3c,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x3c 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_floor_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x3e,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x3e 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_exp_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x40,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x40 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_log_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x42,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x42 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_rcp_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x44,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x44 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_rcp_iflag_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x46,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x46 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_rsq_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x48,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x48 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_sqrt_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x4e,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x4e 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cos_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x54,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x54 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_not_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x56,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x56 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_bfrev_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x58,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x58 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_ffbh_u32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x5a,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x5a 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_ffbl_b32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x5c,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x5c 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_ffbh_i32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x5e,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x5e 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_frexp_exp_i32_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x66,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x66 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_frexp_mant_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x68,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x68 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_log_legacy_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x98,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x98 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_exp_legacy_f32_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x96,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x96 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f16_u16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x72,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x72 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_f16_i16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x74,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x74 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_u16_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x76,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x76 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cvt_i16_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x78,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x78 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_rcp_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x7a,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x7a 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_sqrt_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x7c,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x7c 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_rsq_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x7e,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x7e 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_log_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x80,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x80 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_exp_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x82,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x82 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_frexp_mant_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x84,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x84 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_frexp_exp_i16_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x86,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x86 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_floor_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x88,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x88 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_ceil_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x8a,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x8a 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_trunc_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x8c,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x8c 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_rndne_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x8e,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x8e 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_fract_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x90,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x90 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_sin_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x92,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x92 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_cos_f16_sdwa v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 ; encoding: [0xf9,0x94,0x02,0x7e,0x00,0x06,0x05,0x06] +0xf9 0x94 0x02 0x7e 0x00 0x06 0x05 0x06 + +# VI: v_add_f32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x02,0x00,0x06,0x05,0x02] +0xf9 0x00 0x00 0x02 0x00 0x06 0x05 0x02 + +# VI: v_min_f32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x14,0x00,0x06,0x05,0x02] +0xf9 0x00 0x00 0x14 0x00 0x06 0x05 0x02 + +# VI: v_and_b32_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x00,0x00,0x26,0x00,0x06,0x05,0x02] +0xf9 0x00 0x00 0x26 0x00 0x06 0x05 0x02 + +# VI: v_mul_i32_i24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x0c,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x0c 0x02 0x06 0x05 0x02 + +# VI: v_sub_f32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x04,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x04 0x02 0x06 0x05 0x02 + +# VI: v_subrev_f32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x06,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x06 0x02 0x06 0x05 0x02 + +# VI: v_mul_f32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x0a,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x0a 0x02 0x06 0x05 0x02 + +# VI: v_mul_hi_i32_i24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x0e,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x0e 0x02 0x06 0x05 0x02 + +# VI: v_mul_u32_u24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x10,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x10 0x02 0x06 0x05 0x02 + +# VI: v_mul_hi_u32_u24_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x12,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x12 0x02 0x06 0x05 0x02 + +# VI: v_max_f32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x16,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x16 0x02 0x06 0x05 0x02 + +# VI: v_min_i32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x18,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x18 0x02 0x06 0x05 0x02 + +# VI: v_max_i32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x1a,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x1a 0x02 0x06 0x05 0x02 + +# VI: v_min_u32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x1c,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x1c 0x02 0x06 0x05 0x02 + +# VI: v_max_u32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x1e,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x1e 0x02 0x06 0x05 0x02 + +# VI: v_lshrrev_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x20,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x20 0x02 0x06 0x05 0x02 + +# VI: v_ashrrev_i32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x22,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x22 0x02 0x06 0x05 0x02 + +# VI: v_lshlrev_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x24,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x24 0x02 0x06 0x05 0x02 + +# VI: v_or_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x28,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x28 0x02 0x06 0x05 0x02 + +# VI: v_xor_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x2a,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x2a 0x02 0x06 0x05 0x02 + +# VI: v_add_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x3e,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x3e 0x02 0x06 0x05 0x02 + +# VI: v_sub_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x40,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x40 0x02 0x06 0x05 0x02 + +# VI: v_subrev_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x42,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x42 0x02 0x06 0x05 0x02 + +# VI: v_mul_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x44,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x44 0x02 0x06 0x05 0x02 + +# VI: v_mac_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x46,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x46 0x02 0x06 0x05 0x02 + +# VI: v_add_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x4c,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x4c 0x02 0x06 0x05 0x02 + +# VI: v_sub_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x4e,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x4e 0x02 0x06 0x05 0x02 + +# VI: v_subrev_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x50,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x50 0x02 0x06 0x05 0x02 + +# VI: v_mul_lo_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x52,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x52 0x02 0x06 0x05 0x02 + +# VI: v_lshlrev_b16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x54,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x54 0x02 0x06 0x05 0x02 + +# VI: v_lshrrev_b16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x56,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x56 0x02 0x06 0x05 0x02 + +# VI: v_ashrrev_b16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x58,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x58 0x02 0x06 0x05 0x02 + +# VI: v_max_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x5a,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x5a 0x02 0x06 0x05 0x02 + +# VI: v_min_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x5c,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x5c 0x02 0x06 0x05 0x02 + +# VI: v_max_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x5e,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x5e 0x02 0x06 0x05 0x02 + +# VI: v_max_i16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x60,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x60 0x02 0x06 0x05 0x02 + +# VI: v_min_u16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x62,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x62 0x02 0x06 0x05 0x02 + +# VI: v_min_i16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x64,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x64 0x02 0x06 0x05 0x02 + +# VI: v_ldexp_f16_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:BYTE_2 ; encoding: [0xf9,0x06,0x02,0x66,0x02,0x06,0x05,0x02] +0xf9 0x06 0x02 0x66 0x02 0x06 0x05 0x02 + diff --git a/test/MC/Disassembler/AMDGPU/smem_vi.txt b/test/MC/Disassembler/AMDGPU/smem_vi.txt new file mode 100644 index 000000000000..d98597b7fcb7 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/smem_vi.txt @@ -0,0 +1,10 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: s_dcache_wb ; encoding: [0x00,0x00,0x84,0xc0,0x00,0x00,0x00,0x00] +0x00 0x00 0x84 0xc0 0x00 0x00 0x00 0x00 + +# VI: s_dcache_wb_vol ; encoding: [0x00,0x00,0x8c,0xc0,0x00,0x00,0x00,0x00] +0x00 0x00 0x8c 0xc0 0x00 0x00 0x00 0x00 + +# VI: s_memrealtime s[4:5] ; encoding: [0x00,0x01,0x94,0xc0,0x00,0x00,0x00,0x00] +0x00 0x01 0x94 0xc0 0x00 0x00 0x00 0x00 diff --git a/test/MC/Disassembler/AMDGPU/smrd_vi.txt b/test/MC/Disassembler/AMDGPU/smrd_vi.txt new file mode 100644 index 000000000000..8191bd1845ec --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/smrd_vi.txt @@ -0,0 +1,76 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: s_load_dword s1, s[2:3], 0xfc ; encoding: [0x41,0x00,0x02,0xc0,0xfc,0x00,0x00,0x00] +0x41 0x00 0x02 0xc0 0xfc 0x00 0x00 0x00 + +# VI: s_load_dword s1, s[2:3], 0xff ; encoding: [0x41,0x00,0x02,0xc0,0xff,0x00,0x00,0x00] +0x41 0x00 0x02 0xc0 0xff 0x00 0x00 0x00 + +# VI: s_load_dword s1, s[2:3], 0x1 ; encoding: [0x41,0x00,0x02,0xc0,0x01,0x00,0x00,0x00] +0x41 0x00 0x02 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_load_dword s1, s[2:3], s4 ; encoding: [0x41,0x00,0x00,0xc0,0x04,0x00,0x00,0x00] +0x41 0x00 0x00 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_load_dwordx2 s[2:3], s[2:3], 0x1 ; encoding: [0x81,0x00,0x06,0xc0,0x01,0x00,0x00,0x00] +0x81 0x00 0x06 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_load_dwordx2 s[2:3], s[2:3], s4 ; encoding: [0x81,0x00,0x04,0xc0,0x04,0x00,0x00,0x00] +0x81 0x00 0x04 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_load_dwordx4 s[4:7], s[2:3], 0x1 ; encoding: [0x01,0x01,0x0a,0xc0,0x01,0x00,0x00,0x00] +0x01 0x01 0x0a 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_load_dwordx4 s[4:7], s[2:3], s4 ; encoding: [0x01,0x01,0x08,0xc0,0x04,0x00,0x00,0x00] +0x01 0x01 0x08 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_load_dwordx8 s[8:15], s[2:3], 0x1 ; encoding: [0x01,0x02,0x0e,0xc0,0x01,0x00,0x00,0x00] +0x01 0x02 0x0e 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_load_dwordx8 s[8:15], s[2:3], s4 ; encoding: [0x01,0x02,0x0c,0xc0,0x04,0x00,0x00,0x00] +0x01 0x02 0x0c 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_load_dwordx16 s[16:31], s[2:3], 0x1 ; encoding: [0x01,0x04,0x12,0xc0,0x01,0x00,0x00,0x00] +0x01 0x04 0x12 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_load_dwordx16 s[16:31], s[2:3], s4 ; encoding: [0x01,0x04,0x10,0xc0,0x04,0x00,0x00,0x00] +0x01 0x04 0x10 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_buffer_load_dword s1, s[4:7], 0x1 ; encoding: [0x42,0x00,0x22,0xc0,0x01,0x00,0x00,0x00] +0x42 0x00 0x22 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_buffer_load_dword s1, s[4:7], s4 ; encoding: [0x42,0x00,0x20,0xc0,0x04,0x00,0x00,0x00] +0x42 0x00 0x20 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_buffer_load_dwordx2 s[8:9], s[4:7], 0x1 ; encoding: [0x02,0x02,0x26,0xc0,0x01,0x00,0x00,0x00] +0x02 0x02 0x26 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_buffer_load_dwordx2 s[8:9], s[4:7], s4 ; encoding: [0x02,0x02,0x24,0xc0,0x04,0x00,0x00,0x00] +0x02 0x02 0x24 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_buffer_load_dwordx4 s[8:11], s[4:7], 0x1 ; encoding: [0x02,0x02,0x2a,0xc0,0x01,0x00,0x00,0x00] +0x02 0x02 0x2a 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_buffer_load_dwordx4 s[8:11], s[4:7], s4 ; encoding: [0x02,0x02,0x28,0xc0,0x04,0x00,0x00,0x00] +0x02 0x02 0x28 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_buffer_load_dwordx8 s[8:15], s[4:7], 0x1 ; encoding: [0x02,0x02,0x2e,0xc0,0x01,0x00,0x00,0x00] +0x02 0x02 0x2e 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_buffer_load_dwordx8 s[8:15], s[4:7], s4 ; encoding: [0x02,0x02,0x2c,0xc0,0x04,0x00,0x00,0x00] +0x02 0x02 0x2c 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_buffer_load_dwordx16 s[16:31], s[4:7], 0x1 ; encoding: [0x02,0x04,0x32,0xc0,0x01,0x00,0x00,0x00] +0x02 0x04 0x32 0xc0 0x01 0x00 0x00 0x00 + +# VI: s_buffer_load_dwordx16 s[16:31], s[4:7], s4 ; encoding: [0x02,0x04,0x30,0xc0,0x04,0x00,0x00,0x00] +0x02 0x04 0x30 0xc0 0x04 0x00 0x00 0x00 + +# VI: s_dcache_inv ; encoding: [0x00,0x00,0x80,0xc0,0x00,0x00,0x00,0x00] +0x00 0x00 0x80 0xc0 0x00 0x00 0x00 0x00 + +# VI: s_dcache_inv_vol ; encoding: [0x00,0x00,0x88,0xc0,0x00,0x00,0x00,0x00] +0x00 0x00 0x88 0xc0 0x00 0x00 0x00 0x00 + +# VI: s_memtime s[4:5] ; encoding: [0x00,0x01,0x90,0xc0,0x00,0x00,0x00,0x00] +0x00 0x01 0x90 0xc0 0x00 0x00 0x00 0x00 diff --git a/test/MC/Disassembler/AMDGPU/sop1_vi.txt b/test/MC/Disassembler/AMDGPU/sop1_vi.txt new file mode 100644 index 000000000000..49c030594e57 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/sop1_vi.txt @@ -0,0 +1,172 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: s_mov_b32 s1, s2 ; encoding: [0x02,0x00,0x81,0xbe] +0x02 0x00 0x81 0xbe + +# VI: s_mov_b32 s1, 1 ; encoding: [0x81,0x00,0x81,0xbe] +0x81 0x00 0x81 0xbe + +# VI: s_mov_b32 s1, 0x64 ; encoding: [0xff,0x00,0x81,0xbe,0x64,0x00,0x00,0x00] +0xff 0x00 0x81 0xbe 0x64 0x00 0x00 0x00 + +# VI: s_mov_b32 s1, 0x80000000 ; encoding: [0xff,0x00,0x81,0xbe,0x00,0x00,0x00,0x80] +0xff 0x00 0x81 0xbe 0x00 0x00 0x00 0x80 + +# VI: s_mov_b32 s0, 0xfe5163ab ; encoding: [0xff,0x00,0x80,0xbe,0xab,0x63,0x51,0xfe] +0xff 0x00 0x80 0xbe 0xab 0x63 0x51 0xfe + +# VI: s_mov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x01,0x82,0xbe] +0x04 0x01 0x82 0xbe + +# FIXME: s_mov_b64 s[2:3], -1 ; encoding: [0xc1,0x01,0x82,0xbe] +0xc1 0x01 0x82 0xbe + +# VI: s_mov_b64 s[2:3], 0xffffffff ; encoding: [0xff,0x01,0x82,0xbe,0xff,0xff,0xff,0xff] +0xff 0x01 0x82 0xbe 0xff 0xff 0xff 0xff + +# VI: s_mov_b64 s[0:1], 0x80000000 ; encoding: [0xff,0x01,0x80,0xbe,0x00,0x00,0x00,0x80] +0xff 0x01 0x80 0xbe 0x00 0x00 0x00 0x80 + +# VI: s_cmov_b32 s1, 0xc8 ; encoding: [0xff,0x02,0x81,0xbe,0xc8,0x00,0x00,0x00] +0xff 0x02 0x81 0xbe 0xc8 0x00 0x00 0x00 + +# VI: s_cmov_b32 s1, 1.0 ; encoding: [0xf2,0x02,0x81,0xbe] +0xf2 0x02 0x81 0xbe + +# VI: s_cmov_b32 s1, s2 ; encoding: [0x02,0x02,0x81,0xbe] +0x02 0x02 0x81 0xbe + +# VI: s_cmov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x03,0x82,0xbe] +0x04 0x03 0x82 0xbe + +# VI: s_not_b32 s1, s2 ; encoding: [0x02,0x04,0x81,0xbe] +0x02 0x04 0x81 0xbe + +# VI: s_not_b64 s[2:3], s[4:5] ; encoding: [0x04,0x05,0x82,0xbe] +0x04 0x05 0x82 0xbe + +# VI: s_wqm_b32 s1, s2 ; encoding: [0x02,0x06,0x81,0xbe] +0x02 0x06 0x81 0xbe + +# VI: s_wqm_b64 s[2:3], s[4:5] ; encoding: [0x04,0x07,0x82,0xbe] +0x04 0x07 0x82 0xbe + +# VI: s_brev_b32 s1, s2 ; encoding: [0x02,0x08,0x81,0xbe] +0x02 0x08 0x81 0xbe + +# VI: s_brev_b64 s[2:3], s[4:5] ; encoding: [0x04,0x09,0x82,0xbe] +0x04 0x09 0x82 0xbe + +# VI: s_bcnt0_i32_b32 s1, s2 ; encoding: [0x02,0x0a,0x81,0xbe] +0x02 0x0a 0x81 0xbe + +# VI: s_bcnt0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0b,0x81,0xbe] +0x02 0x0b 0x81 0xbe + +# VI: s_bcnt1_i32_b32 s1, s2 ; encoding: [0x02,0x0c,0x81,0xbe] +0x02 0x0c 0x81 0xbe + +# VI: s_bcnt1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0d,0x81,0xbe] +0x02 0x0d 0x81 0xbe + +# VI: s_ff0_i32_b32 s1, s2 ; encoding: [0x02,0x0e,0x81,0xbe] +0x02 0x0e 0x81 0xbe + +# VI: s_ff0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0f,0x81,0xbe] +0x02 0x0f 0x81 0xbe + +# VI: s_ff1_i32_b32 s1, s2 ; encoding: [0x02,0x10,0x81,0xbe] +0x02 0x10 0x81 0xbe + +# VI: s_ff1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x11,0x81,0xbe] +0x02 0x11 0x81 0xbe + +# VI: s_flbit_i32_b32 s1, s2 ; encoding: [0x02,0x12,0x81,0xbe] +0x02 0x12 0x81 0xbe + +# VI: s_flbit_i32_b64 s1, s[2:3] ; encoding: [0x02,0x13,0x81,0xbe] +0x02 0x13 0x81 0xbe + +# VI: s_flbit_i32 s1, s2 ; encoding: [0x02,0x14,0x81,0xbe] +0x02 0x14 0x81 0xbe + +# VI: s_flbit_i32_i64 s1, s[2:3] ; encoding: [0x02,0x15,0x81,0xbe] +0x02 0x15 0x81 0xbe + +# VI: s_sext_i32_i8 s1, s2 ; encoding: [0x02,0x16,0x81,0xbe] +0x02 0x16 0x81 0xbe + +# VI: s_sext_i32_i16 s1, s2 ; encoding: [0x02,0x17,0x81,0xbe] +0x02 0x17 0x81 0xbe + +# VI: s_bitset0_b32 s1, s2 ; encoding: [0x02,0x18,0x81,0xbe] +0x02 0x18 0x81 0xbe + +# VI: s_bitset0_b64 s[2:3], s4 ; encoding: [0x04,0x19,0x82,0xbe] +0x04 0x19 0x82 0xbe + +# VI: s_bitset1_b32 s1, s2 ; encoding: [0x02,0x1a,0x81,0xbe] +0x02 0x1a 0x81 0xbe + +# VI: s_bitset1_b64 s[2:3], s4 ; encoding: [0x04,0x1b,0x82,0xbe] +0x04 0x1b 0x82 0xbe + +# VI: s_getpc_b64 s[2:3] ; encoding: [0x00,0x1c,0x82,0xbe] +0x00 0x1c 0x82 0xbe + +# VI: s_setpc_b64 s[4:5] ; encoding: [0x04,0x1d,0x80,0xbe] +0x04 0x1d 0x80 0xbe + +# VI: s_swappc_b64 s[2:3], s[4:5] ; encoding: [0x04,0x1e,0x82,0xbe] +0x04 0x1e 0x82 0xbe + +# VI: s_rfe_b64 s[4:5] ; encoding: [0x04,0x1f,0x80,0xbe] +0x04 0x1f 0x80 0xbe + +# VI: s_and_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x20,0x82,0xbe] +0x04 0x20 0x82 0xbe + +# VI: s_or_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x21,0x82,0xbe] +0x04 0x21 0x82 0xbe + +# VI: s_xor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x22,0x82,0xbe] +0x04 0x22 0x82 0xbe + +# VI: s_andn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x23,0x82,0xbe] +0x04 0x23 0x82 0xbe + +# VI: s_orn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x24,0x82,0xbe] +0x04 0x24 0x82 0xbe + +# VI: s_nand_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x25,0x82,0xbe] +0x04 0x25 0x82 0xbe + +# VI: s_nor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x26,0x82,0xbe] +0x04 0x26 0x82 0xbe + +# VI: s_xnor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x27,0x82,0xbe] +0x04 0x27 0x82 0xbe + +# VI: s_quadmask_b32 s1, s2 ; encoding: [0x02,0x28,0x81,0xbe] +0x02 0x28 0x81 0xbe + +# VI: s_quadmask_b64 s[2:3], s[4:5] ; encoding: [0x04,0x29,0x82,0xbe] +0x04 0x29 0x82 0xbe + +# VI: s_movrels_b32 s1, s2 ; encoding: [0x02,0x2a,0x81,0xbe] +0x02 0x2a 0x81 0xbe + +# VI: s_movrels_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2b,0x82,0xbe] +0x04 0x2b 0x82 0xbe + +# VI: s_movreld_b32 s1, s2 ; encoding: [0x02,0x2c,0x81,0xbe] +0x02 0x2c 0x81 0xbe + +# VI: s_movreld_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2d,0x82,0xbe] +0x04 0x2d 0x82 0xbe + +# VI: s_cbranch_join s[4:5] ; encoding: [0x04,0x2e,0x80,0xbe] +0x04 0x2e 0x80 0xbe + +# VI: s_abs_i32 s1, s2 ; encoding: [0x02,0x30,0x81,0xbe] +0x02 0x30 0x81 0xbe diff --git a/test/MC/Disassembler/AMDGPU/sop2_vi.txt b/test/MC/Disassembler/AMDGPU/sop2_vi.txt new file mode 100644 index 000000000000..853685c62f96 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/sop2_vi.txt @@ -0,0 +1,94 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: s_and_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x86] +0x04 0x06 0x02 0x86 + +# VI: s_and_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x86] +0x04 0x06 0x82 0x86 + +# VI: s_or_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x87] +0x04 0x06 0x02 0x87 + +# VI: s_or_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x87] +0x04 0x06 0x82 0x87 + +# VI: s_xor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x88] +0x04 0x06 0x02 0x88 + +# VI: s_xor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x88] +0x04 0x06 0x82 0x88 + +# VI: s_andn2_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x89] +0x04 0x06 0x02 0x89 + +# VI: s_andn2_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x89] +0x04 0x06 0x82 0x89 + +# VI: s_orn2_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8a] +0x04 0x06 0x02 0x8a + +# VI: s_orn2_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8a] +0x04 0x06 0x82 0x8a + +# VI: s_nand_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8b] +0x04 0x06 0x02 0x8b + +# VI: s_nand_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8b] +0x04 0x06 0x82 0x8b + +# VI: s_nor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8c] +0x04 0x06 0x02 0x8c + +# VI: s_nor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8c] +0x04 0x06 0x82 0x8c + +# VI: s_xnor_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8d] +0x04 0x06 0x02 0x8d + +# VI: s_xnor_b64 s[2:3], s[4:5], s[6:7] ; encoding: [0x04,0x06,0x82,0x8d] +0x04 0x06 0x82 0x8d + +# VI: s_lshl_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8e] +0x04 0x06 0x02 0x8e + +# VI: s_lshl_b64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x8e] +0x04 0x06 0x82 0x8e + +# VI: s_lshr_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x8f] +0x04 0x06 0x02 0x8f + +# VI: s_lshr_b64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x8f] +0x04 0x06 0x82 0x8f + +# VI: s_ashr_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x90] +0x04 0x06 0x02 0x90 + +# VI: s_ashr_i64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x90] +0x04 0x06 0x82 0x90 + +# VI: s_bfm_b32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x91] +0x04 0x06 0x02 0x91 + +# VI: s_bfm_b64 s[2:3], s4, s6 ; encoding: [0x04,0x06,0x82,0x91] +0x04 0x06 0x82 0x91 + +# VI: s_mul_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x92] +0x04 0x06 0x02 0x92 + +# VI: s_bfe_u32 s2, s4, s6 ; encoding: [0x04,0x06,0x82,0x92] +0x04 0x06 0x82 0x92 + +# VI: s_bfe_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x93] +0x04 0x06 0x02 0x93 + +# VI: s_bfe_u64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x82,0x93] +0x04 0x06 0x82 0x93 + +# VI: s_bfe_i64 s[2:3], s[4:5], s6 ; encoding: [0x04,0x06,0x02,0x94] +0x04 0x06 0x02 0x94 + +# VI: s_cbranch_g_fork s[4:5], s[6:7] ; encoding: [0x04,0x06,0x80,0x94] +0x04 0x06 0x80 0x94 + +# VI: s_absdiff_i32 s2, s4, s6 ; encoding: [0x04,0x06,0x02,0x95] +0x04 0x06 0x02 0x95 diff --git a/test/MC/Disassembler/AMDGPU/sopc_vi.txt b/test/MC/Disassembler/AMDGPU/sopc_vi.txt new file mode 100644 index 000000000000..026dcbafed42 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/sopc_vi.txt @@ -0,0 +1,52 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=GCN + +# GCN: s_cmp_eq_i32 s1, s2 ; encoding: [0x01,0x02,0x00,0xbf] +0x01 0x02 0x00 0xbf + +# GCN: s_cmp_lg_i32 s1, s2 ; encoding: [0x01,0x02,0x01,0xbf] +0x01 0x02 0x01 0xbf + +# GCN: s_cmp_gt_i32 s1, s2 ; encoding: [0x01,0x02,0x02,0xbf] +0x01 0x02 0x02 0xbf + +# GCN: s_cmp_ge_i32 s1, s2 ; encoding: [0x01,0x02,0x03,0xbf] +0x01 0x02 0x03 0xbf + +# GCN: s_cmp_lt_i32 s1, s2 ; encoding: [0x01,0x02,0x04,0xbf] +0x01 0x02 0x04 0xbf + +# GCN: s_cmp_le_i32 s1, s2 ; encoding: [0x01,0x02,0x05,0xbf] +0x01 0x02 0x05 0xbf + +# GCN: s_cmp_eq_u32 s1, s2 ; encoding: [0x01,0x02,0x06,0xbf] +0x01 0x02 0x06 0xbf + +# GCN: s_cmp_lg_u32 s1, s2 ; encoding: [0x01,0x02,0x07,0xbf] +0x01 0x02 0x07 0xbf + +# GCN: s_cmp_gt_u32 s1, s2 ; encoding: [0x01,0x02,0x08,0xbf] +0x01 0x02 0x08 0xbf + +# GCN: s_cmp_ge_u32 s1, s2 ; encoding: [0x01,0x02,0x09,0xbf] +0x01 0x02 0x09 0xbf + +# GCN: s_cmp_lt_u32 s1, s2 ; encoding: [0x01,0x02,0x0a,0xbf] +0x01 0x02 0x0a 0xbf + +# GCN: s_cmp_le_u32 s1, s2 ; encoding: [0x01,0x02,0x0b,0xbf] +0x01 0x02 0x0b 0xbf + +# GCN: s_bitcmp0_b32 s1, s2 ; encoding: [0x01,0x02,0x0c,0xbf] +0x01 0x02 0x0c 0xbf + +# GCN: s_bitcmp1_b32 s1, s2 ; encoding: [0x01,0x02,0x0d,0xbf] +0x01 0x02 0x0d 0xbf + +# GCN: s_bitcmp0_b64 s[2:3], s4 ; encoding: [0x02,0x04,0x0e,0xbf] +0x02 0x04 0x0e 0xbf + +# GCN: s_bitcmp1_b64 s[2:3], s4 ; encoding: [0x02,0x04,0x0f,0xbf] +0x02 0x04 0x0f 0xbf + +# GCN: s_setvskip s3, s5 ; encoding: [0x03,0x05,0x10,0xbf] +0x03 0x05 0x10 0xbf diff --git a/test/MC/Disassembler/AMDGPU/sopk_vi.txt b/test/MC/Disassembler/AMDGPU/sopk_vi.txt new file mode 100644 index 000000000000..499b862884d1 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/sopk_vi.txt @@ -0,0 +1,64 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: s_cmovk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb0] +0x06 0x00 0x82 0xb0 + +# VI: s_cmpk_eq_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb1] +0x06 0x00 0x02 0xb1 + +# VI: s_cmpk_lg_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb1] +0x06 0x00 0x82 0xb1 + +# VI: s_cmpk_gt_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb2] +0x06 0x00 0x02 0xb2 + +# VI: s_cmpk_ge_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb2] +0x06 0x00 0x82 0xb2 + +# VI: s_cmpk_lt_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb3] +0x06 0x00 0x02 0xb3 + +# VI: s_cmpk_le_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb3] +0x06 0x00 0x82 0xb3 + +# VI: s_cmpk_eq_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb4] +0x06 0x00 0x02 0xb4 + +# VI: s_cmpk_lg_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb4] +0x06 0x00 0x82 0xb4 + +# VI: s_cmpk_gt_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb5] +0x06 0x00 0x02 0xb5 + +# VI: s_cmpk_ge_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb5] +0x06 0x00 0x82 0xb5 + +# VI: s_cmpk_lt_u32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb6] +0x06 0x00 0x02 0xb6 + +# VI: s_cmpk_le_u32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb6] +0x06 0x00 0x82 0xb6 + +# VI: s_addk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x02,0xb7] +0x06 0x00 0x02 0xb7 + +# VI: s_mulk_i32 s2, 0x6 ; encoding: [0x06,0x00,0x82,0xb7] +0x06 0x00 0x82 0xb7 + +# VI: s_cbranch_i_fork s[2:3], 0x6 ; encoding: [0x06,0x00,0x02,0xb8] +0x06 0x00 0x02 0xb8 + +# VI: s_getreg_b32 s2, hwreg(HW_REG_LDS_ALLOC) ; encoding: [0x06,0xf8,0x82,0xb8] +0x06 0xf8 0x82 0xb8 + +# VI: s_getreg_b32 s2, hwreg(51) ; encoding: [0x33,0xf8,0x82,0xb8] +0x33,0xf8,0x82,0xb8 + +# VI: s_getreg_b32 s2, hwreg(51, 1, 31) ; encoding: [0x73,0xf0,0x82,0xb8] +0x73,0xf0,0x82,0xb8 + +# VI: s_setreg_b32 hwreg(HW_REG_LDS_ALLOC, 0, 1), s2 ; encoding: [0x06,0x00,0x02,0xb9] +0x06 0x00 0x02 0xb9 + +# VI: s_setreg_imm32_b32 hwreg(HW_REG_GPR_ALLOC, 1, 31), 0xff ; encoding: [0x45,0xf0,0x00,0xba,0xff,0x00,0x00,0x00] +0x45 0xf0 0x00 0xba 0xff 0x00 0x00 0x00 diff --git a/test/MC/Disassembler/AMDGPU/sopp_vi.txt b/test/MC/Disassembler/AMDGPU/sopp_vi.txt new file mode 100644 index 000000000000..fb8b0e47c6b2 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/sopp_vi.txt @@ -0,0 +1,127 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=GCN + +# GCN: s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf] +0x00 0x00 0x80 0xbf + +# GCN: s_nop 0xffff ; encoding: [0xff,0xff,0x80,0xbf] +0xff 0xff 0x80 0xbf + +# GCN: s_nop 1 ; encoding: [0x01,0x00,0x80,0xbf] +0x01 0x00 0x80 0xbf + +# GCN: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] +0x00 0x00 0x81 0xbf + +# GCN: s_branch 2 ; encoding: [0x02,0x00,0x82,0xbf] +0x02 0x00 0x82 0xbf + +# GCN: s_cbranch_scc0 3 ; encoding: [0x03,0x00,0x84,0xbf] +0x03 0x00 0x84 0xbf + +# GCN: s_cbranch_scc1 4 ; encoding: [0x04,0x00,0x85,0xbf] +0x04 0x00 0x85 0xbf + +# GCN: s_cbranch_vccz 5 ; encoding: [0x05,0x00,0x86,0xbf] +0x05 0x00 0x86 0xbf + +# GCN: s_cbranch_vccnz 6 ; encoding: [0x06,0x00,0x87,0xbf] +0x06 0x00 0x87 0xbf + +# GCN: s_cbranch_execz 7 ; encoding: [0x07,0x00,0x88,0xbf] +0x07 0x00 0x88 0xbf + +# GCN: s_cbranch_execnz 8 ; encoding: [0x08,0x00,0x89,0xbf] +0x08 0x00 0x89 0xbf + +# GCN: s_barrier ; encoding: [0x00,0x00,0x8a,0xbf] +0x00 0x00 0x8a 0xbf + +# GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] +0x00 0x00 0x8c 0xbf + +# GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] +0x00 0x00 0x8c 0xbf + +# GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] +0x00 0x00 0x8c 0xbf + +# GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] +0x00 0x00 0x8c 0xbf + +# GCN: s_waitcnt vmcnt(1) ; encoding: [0x71,0x0f,0x8c,0xbf] +0x71 0x0f 0x8c 0xbf + +# GCN: s_waitcnt vmcnt(9) ; encoding: [0x79,0x0f,0x8c,0xbf] +0x79 0x0f 0x8c 0xbf + +# GCN: s_waitcnt expcnt(2) ; encoding: [0x2f,0x0f,0x8c,0xbf] +0x2f 0x0f 0x8c 0xbf + +# GCN: s_waitcnt lgkmcnt(3) ; encoding: [0x7f,0x03,0x8c,0xbf] +0x7f 0x03 0x8c 0xbf + +# GCN: s_waitcnt lgkmcnt(9) ; encoding: [0x7f,0x09,0x8c,0xbf] +0x7f 0x09 0x8c 0xbf + +# GCN: s_waitcnt vmcnt(0) expcnt(0) ; encoding: [0x00,0x0f,0x8c,0xbf] +0x00 0x0f 0x8c 0xbf + +# GCN: s_sethalt 9 ; encoding: [0x09,0x00,0x8d,0xbf] +0x09 0x00 0x8d 0xbf + +# GCN: s_sleep 10 ; encoding: [0x0a,0x00,0x8e,0xbf] +0x0a 0x00 0x8e 0xbf + +# GCN: s_setprio 1 ; encoding: [0x01,0x00,0x8f,0xbf] +0x01 0x00 0x8f 0xbf + +# GCN: s_sendmsg 2 ; encoding: [0x02,0x00,0x90,0xbf] +0x02 0x00 0x90 0xbf + +# GCN: s_sendmsg sendmsg(MSG_INTERRUPT) ; encoding: [0x01,0x00,0x90,0xbf] +0x01 0x00 0x90 0xbf + +# GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) ; encoding: [0x12,0x00,0x90,0xbf] +0x12 0x00 0x90 0xbf + +# GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x90,0xbf] +0x22 0x01 0x90 0xbf + +# GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) ; encoding: [0x32,0x02,0x90,0xbf] +0x32 0x02 0x90 0xbf + +# GCN: s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x90,0xbf] +0x03 0x00 0x90 0xbf + +# GCN: s_sendmsg 11 ; encoding: [0x0b,0x00,0x90,0xbf] +0x0b 0x00 0x90 0xbf + +# GCN: s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) ; encoding: [0x1f,0x00,0x90,0xbf] +0x1f 0x00 0x90 0xbf + +# GCN: s_sendmsg 111 ; encoding: [0x6f,0x00,0x90,0xbf] +0x6f 0x00 0x90 0xbf + +# GCN: s_sendmsghalt sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x91,0xbf] +0x03 0x00 0x91 0xbf + +# GCN: s_sendmsghalt sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x91,0xbf] +0x22 0x01 0x91 0xbf + +# GCN: s_sendmsghalt 111 ; encoding: [0x6f,0x00,0x91,0xbf] +0x6f 0x00 0x91 0xbf + +# GCN: s_trap 4 ; encoding: [0x04,0x00,0x92,0xbf] +0x04 0x00 0x92 0xbf + +# GCN: s_icache_inv ; encoding: [0x00,0x00,0x93,0xbf] +0x00 0x00 0x93 0xbf + +# GCN: s_incperflevel 5 ; encoding: [0x05,0x00,0x94,0xbf] +0x05 0x00 0x94 0xbf + +# GCN: s_decperflevel 6 ; encoding: [0x06,0x00,0x95,0xbf] +0x06 0x00 0x95 0xbf + +# GCN: s_ttracedata ; encoding: [0x00,0x00,0x96,0xbf] +0x00 0x00 0x96 0xbf diff --git a/test/MC/Disassembler/AMDGPU/trap_vi.txt b/test/MC/Disassembler/AMDGPU/trap_vi.txt new file mode 100644 index 000000000000..8b131512050c --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/trap_vi.txt @@ -0,0 +1,109 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +#===----------------------------------------------------------------------===# +# Trap Handler related - 32 bit registers +#===----------------------------------------------------------------------===# + +# VI: s_add_u32 ttmp0, ttmp0, 4 ; encoding: [0x70,0x84,0x70,0x80] +0x70,0x84,0x70,0x80 + +# VI: s_add_u32 ttmp4, 8, ttmp4 ; encoding: [0x88,0x74,0x74,0x80] +0x88,0x74,0x74,0x80 + +# VI: s_add_u32 ttmp4, ttmp4, 0x100 ; encoding: [0x74,0xff,0x74,0x80,0x00,0x01,0x00,0x00] +0x74,0xff,0x74,0x80,0x00,0x01,0x00,0x00 + +# VI: s_add_u32 ttmp4, ttmp4, 4 ; encoding: [0x74,0x84,0x74,0x80] +0x74,0x84,0x74,0x80 + +# VI: s_add_u32 ttmp4, ttmp8, ttmp4 ; encoding: [0x78,0x74,0x74,0x80] +0x78,0x74,0x74,0x80 + +# VI: s_and_b32 ttmp10, ttmp8, 0x80 ; encoding: [0x78,0xff,0x7a,0x86,0x80,0x00,0x00,0x00] +0x78,0xff,0x7a,0x86,0x80,0x00,0x00,0x00 + +# VI: s_and_b32 ttmp9, tma_hi, 0xffff ; encoding: [0x6f,0xff,0x79,0x86,0xff,0xff,0x00,0x00] +0x6f,0xff,0x79,0x86,0xff,0xff,0x00,0x00 + +# VI: s_and_b32 ttmp9, ttmp9, 0x1ff ; encoding: [0x79,0xff,0x79,0x86,0xff,0x01,0x00,0x00] +0x79,0xff,0x79,0x86,0xff,0x01,0x00,0x00 + +# VI: s_and_b32 ttmp9, tma_lo, 0xffff0000 ; encoding: [0x6e,0xff,0x79,0x86,0x00,0x00,0xff,0xff] +0x6e,0xff,0x79,0x86,0x00,0x00,0xff,0xff + +# VI: s_and_b32 ttmp9, ttmp9, ttmp8 ; encoding: [0x79,0x78,0x79,0x86] +0x79,0x78,0x79,0x86 + +# VI: s_and_b32 ttmp8, ttmp1, 0x1000000 ; encoding: [0x71,0xff,0x78,0x86,0x00,0x00,0x00,0x01] +0x71,0xff,0x78,0x86,0x00,0x00,0x00,0x01 + +# VI: s_cmp_eq_i32 ttmp8, 0 ; encoding: [0x78,0x80,0x00,0xbf] +0x78,0x80,0x00,0xbf + +# VI: s_cmp_eq_i32 ttmp8, 0xfe ; encoding: [0x78,0xff,0x00,0xbf,0xfe,0x00,0x00,0x00] +0x78,0xff,0x00,0xbf,0xfe,0x00,0x00,0x00 + +# VI: s_lshr_b32 ttmp8, ttmp8, 12 ; encoding: [0x78,0x8c,0x78,0x8f] +0x78,0x8c,0x78,0x8f + +# VI: v_mov_b32_e32 v1, ttmp8 ; encoding: [0x78,0x02,0x02,0x7e] +0x78,0x02,0x02,0x7e + +# VI: s_mov_b32 m0, ttmp8 ; encoding: [0x78,0x00,0xfc,0xbe] +0x78,0x00,0xfc,0xbe + +# VI: s_mov_b32 ttmp10, 0 ; encoding: [0x80,0x00,0xfa,0xbe] +0x80,0x00,0xfa,0xbe + +# VI: s_mov_b32 ttmp11, 0x1024fac ; encoding: [0xff,0x00,0xfb,0xbe,0xac,0x4f,0x02,0x01] +0xff,0x00,0xfb,0xbe,0xac,0x4f,0x02,0x01 + +# VI: s_mov_b32 ttmp8, m0 ; encoding: [0x7c,0x00,0xf8,0xbe] +0x7c,0x00,0xf8,0xbe + +# VI: s_mov_b32 ttmp8, tma_lo ; encoding: [0x6e,0x00,0xf8,0xbe] +0x6e,0x00,0xf8,0xbe + +# VI: s_mul_i32 ttmp8, 0x324, ttmp8 ; encoding: [0xff,0x78,0x78,0x92,0x24,0x03,0x00,0x00] +0xff,0x78,0x78,0x92,0x24,0x03,0x00,0x00 + +# VI: s_or_b32 ttmp9, ttmp9, 0x280000 ; encoding: [0x79,0xff,0x79,0x87,0x00,0x00,0x28,0x00] +0x79,0xff,0x79,0x87,0x00,0x00,0x28,0x00 + +#===----------------------------------------------------------------------===# +# Trap Handler related - Pairs and quadruples of registers +#===----------------------------------------------------------------------===# + +# VI: s_mov_b64 ttmp[4:5], exec ; encoding: [0x7e,0x01,0xf4,0xbe] +0x7e,0x01,0xf4,0xbe + +# VI: s_mov_b64 ttmp[4:5], exec ; encoding: [0x7e,0x01,0xf4,0xbe] +0x7e,0x01,0xf4,0xbe + +# VI: s_mov_b64 exec, ttmp[4:5] ; encoding: [0x74,0x01,0xfe,0xbe] +0x74,0x01,0xfe,0xbe + +# VI: s_mov_b64 tba, ttmp[4:5] ; encoding: [0x74,0x01,0xec,0xbe] +0x74,0x01,0xec,0xbe + +# VI: s_mov_b64 ttmp[4:5], tba ; encoding: [0x6c,0x01,0xf4,0xbe] +0x6c,0x01,0xf4,0xbe + +# VI: s_mov_b64 tma, ttmp[4:5] ; encoding: [0x74,0x01,0xee,0xbe] +0x74,0x01,0xee,0xbe + +# VI: s_mov_b64 ttmp[4:5], tma ; encoding: [0x6e,0x01,0xf4,0xbe] +0x6e,0x01,0xf4,0xbe + +#===----------------------------------------------------------------------===# +# Trap Handler related - Some specific instructions +#===----------------------------------------------------------------------===# + +# VI: s_setpc_b64 ttmp[2:3] ; encoding: [0x72,0x1d,0x80,0xbe] +0x72,0x1d,0x80,0xbe + +# VI: v_readfirstlane_b32 ttmp8, v1 ; encoding: [0x01,0x05,0xf0,0x7e] +0x01,0x05,0xf0,0x7e + +# VI: buffer_atomic_inc v1, off, ttmp[8:11], 56 glc ; encoding: [0x00,0x40,0x2c,0xe1,0x00,0x01,0x1e,0xb8] +0x00,0x40,0x2c,0xe1,0x00,0x01,0x1e,0xb8 diff --git a/test/MC/Disassembler/AMDGPU/vop1.txt b/test/MC/Disassembler/AMDGPU/vop1.txt new file mode 100644 index 000000000000..d3af4a57a086 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/vop1.txt @@ -0,0 +1,250 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s + +# CHECK: v_nop ; encoding: [0x00,0x00,0x00,0x7e] +0x00 0x00 0x00 0x7e + +# CHECK: v_clrexcp ; encoding: [0x00,0x6a,0x00,0x7e] +0x00 0x6a 0x00 0x7e + +# CHECK: v_mov_b32_e32 v2, v1 ; encoding: [0x01,0x03,0x04,0x7e] +0x01 0x03 0x04 0x7e + +# CHECK: v_mov_b32_e32 v1, 0.5 ; encoding: [0xf0,0x02,0x02,0x7e] +0xf0 0x02 0x02 0x7e + +# CHECK: v_mov_b32_e32 v15, s100 ; encoding: [0x64,0x02,0x1e,0x7e] +0x64 0x02 0x1e 0x7e + +# CHECK: v_mov_b32_e32 v90, flat_scratch_lo ; encoding: [0x66,0x02,0xb4,0x7e] +0x66 0x02 0xb4 0x7e + +# CHECK: v_mov_b32_e32 v150, vcc_lo ; encoding: [0x6a,0x02,0x2c,0x7f] +0x6a 0x02 0x2c 0x7f + +# CHECK: v_mov_b32_e32 v199, exec_lo ; encoding: [0x7e,0x02,0x8e,0x7f] +0x7e 0x02 0x8e 0x7f + +# CHECK: v_mov_b32_e32 v222, m0 ; encoding: [0x7c,0x02,0xbc,0x7f] +0x7c 0x02 0xbc 0x7f + +# CHECK: v_mov_b32_e32 v255, -13 ; encoding: [0xcd,0x02,0xfe,0x7f] +0xcd 0x02 0xfe 0x7f + +# CHECK: v_cvt_f32_i32_e32 v153, s98 ; encoding: [0x62,0x0a,0x32,0x7f] +0x62 0x0a 0x32 0x7f + +# CHECK: v_cvt_f32_u32_e32 v33, -4.0 ; encoding: [0xf7,0x0c,0x42,0x7e] +0xf7 0x0c 0x42 0x7e + +# CHECK: v_cvt_i32_f64_e32 v2, s[0:1] ; encoding: [0x00,0x06,0x04,0x7e] +0x00 0x06 0x04 0x7e + +# CHECK: v_cvt_u32_f32_e32 v123, vcc_hi ; encoding: [0x6b,0x0e,0xf6,0x7e] +0x6b 0x0e 0xf6 0x7e + +# CHECK: v_cvt_i32_f32_e32 v123, flat_scratch_lo ; encoding: [0x66,0x10,0xf6,0x7e] +0x66 0x10 0xf6 0x7e + +# CHECK: v_cvt_rpi_i32_f32_e32 v123, s101 ; encoding: [0x65,0x18,0xf6,0x7e] +0x65 0x18 0xf6 0x7e + +# CHECK: v_cvt_flr_i32_f32_e32 v123, -4.0 ; encoding: [0xf7,0x1a,0xf6,0x7e] +0xf7 0x1a 0xf6 0x7e + +# CHECK: v_cvt_f32_f64_e32 v123, vcc ; encoding: [0x6a,0x1e,0xf6,0x7e] +0x6a 0x1e 0xf6 0x7e + +# CHECK: v_cvt_u32_f64_e32 v123, exec ; encoding: [0x7e,0x2a,0xf6,0x7e] +0x7e 0x2a 0xf6 0x7e + +# CHECK: v_fract_f32_e32 v123, m0 ; encoding: [0x7c,0x36,0xf6,0x7e] +0x7c 0x36 0xf6 0x7e + +# CHECK: v_trunc_f32_e32 v123, exec_lo ; encoding: [0x7e,0x38,0xf6,0x7e] +0x7e 0x38 0xf6 0x7e + +# CHECK: v_ceil_f32_e32 v123, exec_hi ; encoding: [0x7f,0x3a,0xf6,0x7e] +0x7f 0x3a 0xf6 0x7e + +# CHECK: v_rndne_f32_e32 v123, 0 ; encoding: [0x80,0x3c,0xf6,0x7e] +0x80 0x3c 0xf6 0x7e + +# CHECK: v_floor_f32_e32 v123, -0.5 ; encoding: [0xf1,0x3e,0xf6,0x7e] +0xf1 0x3e 0xf6 0x7e + +# CHECK: v_exp_f32_e32 v123, 1.0 ; encoding: [0xf2,0x40,0xf6,0x7e] +0xf2 0x40 0xf6 0x7e + +# CHECK: v_log_f32_e32 v123, -1.0 ; encoding: [0xf3,0x42,0xf6,0x7e] +0xf3 0x42 0xf6 0x7e + +# CHECK: v_rcp_f32_e32 v123, 2.0 ; encoding: [0xf4,0x44,0xf6,0x7e] +0xf4 0x44 0xf6 0x7e + +# CHECK: v_rcp_iflag_f32_e32 v123, -2.0 ; encoding: [0xf5,0x46,0xf6,0x7e] +0xf5 0x46 0xf6 0x7e + +# CHECK: v_rsq_f32_e32 v123, 4.0 ; encoding: [0xf6,0x48,0xf6,0x7e] +0xf6 0x48 0xf6 0x7e + +# CHECK: v_sqrt_f32_e32 v123, v12 ; encoding: [0x0c,0x4f,0xf6,0x7e] +0x0c 0x4f 0xf6 0x7e + +# CHECK: v_sin_f32_e32 v123, v12 ; encoding: [0x0c,0x53,0xf6,0x7e] +0x0c 0x53 0xf6 0x7e + +# CHECK: v_cos_f32_e32 v123, v12 ; encoding: [0x0c,0x55,0xf6,0x7e] +0x0c 0x55 0xf6 0x7e + +# CHECK: v_not_b32_e32 v123, v12 ; encoding: [0x0c,0x57,0xf6,0x7e] +0x0c 0x57 0xf6 0x7e + +# CHECK: v_bfrev_b32_e32 v123, v12 ; encoding: [0x0c,0x59,0xf6,0x7e] +0x0c 0x59 0xf6 0x7e + +# CHECK: v_ffbh_u32_e32 v123, v12 ; encoding: [0x0c,0x5b,0xf6,0x7e] +0x0c 0x5b 0xf6 0x7e + +# CHECK: v_ffbl_b32_e32 v123, v12 ; encoding: [0x0c,0x5d,0xf6,0x7e] +0x0c 0x5d 0xf6 0x7e + +# CHECK: v_ffbh_i32_e32 v123, v12 ; encoding: [0x0c,0x5f,0xf6,0x7e] +0x0c 0x5f 0xf6 0x7e + +# CHECK: v_frexp_exp_i32_f64_e32 v123, 2.0 ; encoding: [0xf4,0x60,0xf6,0x7e] +0xf4 0x60 0xf6 0x7e + +# CHECK: v_frexp_exp_i32_f32_e32 v123, s33 ; encoding: [0x21,0x66,0xf6,0x7e] +0x21 0x66 0xf6 0x7e + +# CHECK: v_frexp_mant_f32_e32 v123, s33 ; encoding: [0x21,0x68,0xf6,0x7e] +0x21 0x68 0xf6 0x7e + +# CHECK: v_movreld_b32_e32 v123, s33 ; encoding: [0x21,0x6c,0xf6,0x7e] +0x21 0x6c 0xf6 0x7e + +# CHECK: v_movrels_b32_e32 v123, s33 ; encoding: [0x21,0x6e,0xf6,0x7e] +0x21 0x6e 0xf6 0x7e + +# CHECK: v_movrelsd_b32_e32 v123, s33 ; encoding: [0x21,0x70,0xf6,0x7e] +0x21 0x70 0xf6 0x7e + +# CHECK: v_cvt_f16_f32_e32 v123, flat_scratch_hi ; encoding: [0x67,0x14,0xf6,0x7e] +0x67 0x14 0xf6 0x7e + +# CHECK: v_cvt_f32_f16_e32 v123, s55 ; encoding: [0x37,0x16,0xf6,0x7e] +0x37 0x16 0xf6 0x7e + +# CHECK: v_cvt_off_f32_i4_e32 v123, v12 ; encoding: [0x0c,0x1d,0xf6,0x7e] +0x0c 0x1d 0xf6 0x7e + +# CHECK: v_cvt_f32_ubyte0_e32 v123, v12 ; encoding: [0x0c,0x23,0xf6,0x7e] +0x0c 0x23 0xf6 0x7e + +# CHECK: v_cvt_f32_ubyte1_e32 v123, v12 ; encoding: [0x0c,0x25,0xf6,0x7e] +0x0c 0x25 0xf6 0x7e + +# CHECK: v_cvt_f32_ubyte2_e32 v123, v12 ; encoding: [0x0c,0x27,0xf6,0x7e] +0x0c 0x27 0xf6 0x7e + +# CHECK: v_cvt_f32_ubyte3_e32 v123, v12 ; encoding: [0x0c,0x29,0xf6,0x7e] +0x0c 0x29 0xf6 0x7e + +# CHECK: v_cvt_f64_i32_e32 v[222:223], 1.0 ; encoding: [0xf2,0x08,0xbc,0x7f] +0xf2 0x08 0xbc 0x7f + +# CHECK: v_cvt_f64_i32_e32 v[222:223], exec_hi ; encoding: [0x7f,0x08,0xbc,0x7f] +0x7f 0x08 0xbc 0x7f + +# CHECK: v_cvt_f64_f32_e32 v[222:223], s33 ; encoding: [0x21,0x20,0xbc,0x7f] +0x21 0x20 0xbc 0x7f + +# CHECK: v_cvt_f64_u32_e32 v[222:223], s33 ; encoding: [0x21,0x2c,0xbc,0x7f] +0x21 0x2c 0xbc 0x7f + +# CHECK: v_rcp_f64_e32 v[222:223], s[22:23] ; encoding: [0x16,0x4a,0xbc,0x7f] +0x16 0x4a 0xbc 0x7f + +# CHECK: v_rsq_f64_e32 v[222:223], s[22:23] ; encoding: [0x16,0x4c,0xbc,0x7f] +0x16 0x4c 0xbc 0x7f + +# CHECK: v_sqrt_f64_e32 v[222:223], s[22:23] ; encoding: [0x16,0x50,0xbc,0x7f] +0x16 0x50 0xbc 0x7f + +# CHECK: v_frexp_mant_f64_e32 v[222:223], s[22:23] ; encoding: [0x16,0x62,0xbc,0x7f] +0x16 0x62 0xbc 0x7f + +# CHECK: v_fract_f64_e32 v[222:223], s[22:23] ; encoding: [0x16,0x64,0xbc,0x7f] +0x16 0x64 0xbc 0x7f + +# CHECK: v_cvt_f16_u16_e32 v123, 23 ; encoding: [0x97,0x72,0xf6,0x7e] +0x97 0x72 0xf6 0x7e + +# CHECK: v_cvt_f16_i16_e32 v123, vcc_hi ; encoding: [0x6b,0x74,0xf6,0x7e] +0x6b 0x74 0xf6 0x7e + +# CHECK: v_cvt_u16_f16_e32 v123, m0 ; encoding: [0x7c,0x76,0xf6,0x7e] +0x7c 0x76 0xf6 0x7e + +# CHECK: v_cvt_i16_f16_e32 v123, exec_lo ; encoding: [0x7e,0x78,0xf6,0x7e] +0x7e 0x78 0xf6 0x7e + +# CHECK: v_rcp_f16_e32 v123, 1.0 ; encoding: [0xf2,0x7a,0xf6,0x7e] +0xf2 0x7a 0xf6 0x7e + +# CHECK: v_sqrt_f16_e32 v123, 4.0 ; encoding: [0xf6,0x7c,0xf6,0x7e] +0xf6 0x7c 0xf6 0x7e + +# CHECK: v_rsq_f16_e32 v123, -1.0 ; encoding: [0xf3,0x7e,0xf6,0x7e] +0xf3 0x7e 0xf6 0x7e + +# CHECK: v_log_f16_e32 v123, s33 ; encoding: [0x21,0x80,0xf6,0x7e] +0x21 0x80 0xf6 0x7e + +# CHECK: v_exp_f16_e32 v123, v12 ; encoding: [0x0c,0x83,0xf6,0x7e] +0x0c 0x83 0xf6 0x7e + +# CHECK: v_frexp_mant_f16_e32 v123, v12 ; encoding: [0x0c,0x85,0xf6,0x7e] +0x0c 0x85 0xf6 0x7e + +# CHECK: v_frexp_exp_i16_f16_e32 v123, v12 ; encoding: [0x0c,0x87,0xf6,0x7e] +0x0c 0x87 0xf6 0x7e + +# CHECK: v_floor_f16_e32 v123, v12 ; encoding: [0x0c,0x89,0xf6,0x7e] +0x0c 0x89 0xf6 0x7e + +# CHECK: v_ceil_f16_e32 v123, v12 ; encoding: [0x0c,0x8b,0xf6,0x7e] +0x0c 0x8b 0xf6 0x7e + +# CHECK: v_trunc_f16_e32 v123, s33 ; encoding: [0x21,0x8c,0xf6,0x7e] +0x21 0x8c 0xf6 0x7e + +# CHECK: v_rndne_f16_e32 v123, s33 ; encoding: [0x21,0x8e,0xf6,0x7e] +0x21 0x8e 0xf6 0x7e + +# CHECK: v_fract_f16_e32 v123, s33 ; encoding: [0x21,0x90,0xf6,0x7e] +0x21 0x90 0xf6 0x7e + +# CHECK: v_sin_f16_e32 v123, s33 ; encoding: [0x21,0x92,0xf6,0x7e] +0x21 0x92 0xf6 0x7e + +# CHECK: v_cos_f16_e32 v123, s33 ; encoding: [0x21,0x94,0xf6,0x7e] +0x21 0x94 0xf6 0x7e + +# CHECK: v_mov_b32_e32 v2, 0x75bcd15 ; encoding: [0xff,0x02,0x04,0x7e,0x15,0xcd,0x5b,0x07] +0xff 0x02 0x04 0x7e 0x15 0xcd 0x5b 0x07 + +# CHECK: v_cvt_f32_u32_e32 v33, 0x4236b732 ; encoding: [0xff,0x0c,0x42,0x7e,0x32,0xb7,0x36,0x42] +0xff 0x0c 0x42 0x7e 0x32 0xb7 0x36 0x42 + +# CHECK: v_cvt_i32_f64_e32 v2, 0x4236b732 ; encoding: [0xff,0x06,0x04,0x7e,0x32,0xb7,0x36,0x42] +0xff 0x06 0x04 0x7e 0x32 0xb7 0x36 0x42 + +# CHECK: v_cvt_f16_u16_e32 v123, 0x3ade68b1 ; encoding: [0xff,0x72,0xf6,0x7e,0xb1,0x68,0xde,0x3a] +0xff 0x72 0xf6 0x7e 0xb1 0x68 0xde 0x3a + +# CHECK: v_cvt_f16_i16_e32 v123, 0x21c2 ; encoding: [0xff,0x74,0xf6,0x7e,0xc2,0x21,0x00,0x00] +0xff 0x74 0xf6 0x7e 0xc2 0x21 0x00 0x00 + +# CHECK: v_cvt_u16_f16_e32 v123, 0x3f200000 ; encoding: [0xff,0x76,0xf6,0x7e,0x00,0x00,0x20,0x3f] +0xff 0x76 0xf6 0x7e 0x00 0x00 0x20 0x3f
\ No newline at end of file diff --git a/test/MC/Disassembler/AMDGPU/vop1_vi.txt b/test/MC/Disassembler/AMDGPU/vop1_vi.txt new file mode 100644 index 000000000000..c42c0a628106 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/vop1_vi.txt @@ -0,0 +1,220 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: v_mov_b32_e32 v1, v2 ; encoding: [0x02,0x03,0x02,0x7e] +0x02 0x03 0x02 0x7e + +# VI: v_nop ; encoding: [0x00,0x00,0x00,0x7e] +0x00 0x00 0x00 0x7e + +# VI: v_clrexcp ; encoding: [0x00,0x6a,0x00,0x7e] +0x00 0x6a 0x00 0x7e + +# VI: v_nop ; encoding: [0x00,0x00,0x00,0x7e] +0x00 0x00 0x00 0x7e + +# VI: v_mov_b32_e32 v1, v2 ; encoding: [0x02,0x03,0x02,0x7e] +0x02 0x03 0x02 0x7e + +# VI: v_readfirstlane_b32 s1, v2 ; encoding: [0x02,0x05,0x02,0x7e] +0x02 0x05 0x02 0x7e + +# VI: v_cvt_i32_f64_e32 v1, v[2:3] ; encoding: [0x02,0x07,0x02,0x7e] +0x02 0x07 0x02 0x7e + +# VI: v_cvt_f64_i32_e32 v[1:2], v2 ; encoding: [0x02,0x09,0x02,0x7e] +0x02 0x09 0x02 0x7e + +# VI: v_cvt_f32_i32_e32 v1, v2 ; encoding: [0x02,0x0b,0x02,0x7e] +0x02 0x0b 0x02 0x7e + +# VI: v_cvt_f32_u32_e32 v1, v2 ; encoding: [0x02,0x0d,0x02,0x7e] +0x02 0x0d 0x02 0x7e + +# VI: v_cvt_i32_f32_e32 v1, v2 ; encoding: [0x02,0x11,0x02,0x7e] +0x02 0x11 0x02 0x7e + +# VI: v_cvt_f16_f32_e32 v1, v2 ; encoding: [0x02,0x15,0x02,0x7e] +0x02 0x15 0x02 0x7e + +# VI: v_cvt_f32_f16_e32 v1, v2 ; encoding: [0x02,0x17,0x02,0x7e] +0x02 0x17 0x02 0x7e + +# VI: v_cvt_rpi_i32_f32_e32 v1, v2 ; encoding: [0x02,0x19,0x02,0x7e] +0x02 0x19 0x02 0x7e + +# VI: v_cvt_flr_i32_f32_e32 v1, v2 ; encoding: [0x02,0x1b,0x02,0x7e] +0x02 0x1b 0x02 0x7e + +# VI: v_cvt_off_f32_i4_e32 v1, v2 ; encoding: [0x02,0x1d,0x02,0x7e] +0x02 0x1d 0x02 0x7e + +# VI: v_cvt_f32_f64_e32 v1, v[2:3] ; encoding: [0x02,0x1f,0x02,0x7e] +0x02 0x1f 0x02 0x7e + +# VI: v_cvt_f64_f32_e32 v[1:2], v2 ; encoding: [0x02,0x21,0x02,0x7e] +0x02 0x21 0x02 0x7e + +# VI: v_cvt_f32_ubyte0_e32 v1, v2 ; encoding: [0x02,0x23,0x02,0x7e] +0x02 0x23 0x02 0x7e + +# VI: v_cvt_f32_ubyte1_e32 v1, v2 ; encoding: [0x02,0x25,0x02,0x7e] +0x02 0x25 0x02 0x7e + +# VI: v_cvt_f32_ubyte2_e32 v1, v2 ; encoding: [0x02,0x27,0x02,0x7e] +0x02 0x27 0x02 0x7e + +# VI: v_cvt_f32_ubyte3_e32 v1, v2 ; encoding: [0x02,0x29,0x02,0x7e] +0x02 0x29 0x02 0x7e + +# VI: v_cvt_u32_f64_e32 v1, v[2:3] ; encoding: [0x02,0x2b,0x02,0x7e] +0x02 0x2b 0x02 0x7e + +# VI: v_cvt_f64_u32_e32 v[1:2], v2 ; encoding: [0x02,0x2d,0x02,0x7e] +0x02 0x2d 0x02 0x7e + +# VI: v_fract_f32_e32 v1, v2 ; encoding: [0x02,0x37,0x02,0x7e] +0x02 0x37 0x02 0x7e + +# VI: v_trunc_f32_e32 v1, v2 ; encoding: [0x02,0x39,0x02,0x7e] +0x02 0x39 0x02 0x7e + +# VI: v_ceil_f32_e32 v1, v2 ; encoding: [0x02,0x3b,0x02,0x7e] +0x02 0x3b 0x02 0x7e + +# VI: v_rndne_f32_e32 v1, v2 ; encoding: [0x02,0x3d,0x02,0x7e] +0x02 0x3d 0x02 0x7e + +# VI: v_floor_f32_e32 v1, v2 ; encoding: [0x02,0x3f,0x02,0x7e] +0x02 0x3f 0x02 0x7e + +# VI: v_exp_f32_e32 v1, v2 ; encoding: [0x02,0x41,0x02,0x7e] +0x02 0x41 0x02 0x7e + +# VI: v_log_f32_e32 v1, v2 ; encoding: [0x02,0x43,0x02,0x7e] +0x02 0x43 0x02 0x7e + +# VI: v_rcp_f32_e32 v1, v2 ; encoding: [0x02,0x45,0x02,0x7e] +0x02 0x45 0x02 0x7e + +# VI: v_rcp_iflag_f32_e32 v1, v2 ; encoding: [0x02,0x47,0x02,0x7e] +0x02 0x47 0x02 0x7e + +# VI: v_rsq_f32_e32 v1, v2 ; encoding: [0x02,0x49,0x02,0x7e] +0x02 0x49 0x02 0x7e + +# VI: v_rcp_f64_e32 v[1:2], v[2:3] ; encoding: [0x02,0x4b,0x02,0x7e] +0x02 0x4b 0x02 0x7e + +# VI: v_rsq_f64_e32 v[1:2], v[2:3] ; encoding: [0x02,0x4d,0x02,0x7e] +0x02 0x4d 0x02 0x7e + +# VI: v_sqrt_f32_e32 v1, v2 ; encoding: [0x02,0x4f,0x02,0x7e] +0x02 0x4f 0x02 0x7e + +# VI: v_sqrt_f64_e32 v[1:2], v[2:3] ; encoding: [0x02,0x51,0x02,0x7e] +0x02 0x51 0x02 0x7e + +# VI: v_sin_f32_e32 v1, v2 ; encoding: [0x02,0x53,0x02,0x7e] +0x02 0x53 0x02 0x7e + +# VI: v_cos_f32_e32 v1, v2 ; encoding: [0x02,0x55,0x02,0x7e] +0x02 0x55 0x02 0x7e + +# VI: v_not_b32_e32 v1, v2 ; encoding: [0x02,0x57,0x02,0x7e] +0x02 0x57 0x02 0x7e + +# VI: v_bfrev_b32_e32 v1, v2 ; encoding: [0x02,0x59,0x02,0x7e] +0x02 0x59 0x02 0x7e + +# VI: v_ffbh_u32_e32 v1, v2 ; encoding: [0x02,0x5b,0x02,0x7e] +0x02 0x5b 0x02 0x7e + +# VI: v_ffbl_b32_e32 v1, v2 ; encoding: [0x02,0x5d,0x02,0x7e] +0x02 0x5d 0x02 0x7e + +# VI: v_ffbh_i32_e32 v1, v2 ; encoding: [0x02,0x5f,0x02,0x7e] +0x02 0x5f 0x02 0x7e + +# VI: v_frexp_exp_i32_f64_e32 v1, v[2:3] ; encoding: [0x02,0x61,0x02,0x7e] +0x02 0x61 0x02 0x7e + +# VI: v_fract_f64_e32 v[1:2], v[2:3] ; encoding: [0x02,0x65,0x02,0x7e] +0x02 0x65 0x02 0x7e + +# VI: v_frexp_exp_i32_f32_e32 v1, v2 ; encoding: [0x02,0x67,0x02,0x7e] +0x02 0x67 0x02 0x7e + +# VI: v_frexp_mant_f32_e32 v1, v2 ; encoding: [0x02,0x69,0x02,0x7e] +0x02 0x69 0x02 0x7e + +# VI: v_clrexcp ; encoding: [0x00,0x6a,0x00,0x7e] +0x00 0x6a 0x00 0x7e + +# VI: v_movreld_b32_e32 v1, v2 ; encoding: [0x02,0x6d,0x02,0x7e] +0x02 0x6d 0x02 0x7e + +# VI: v_movrels_b32_e32 v1, v2 ; encoding: [0x02,0x6f,0x02,0x7e] +0x02 0x6f 0x02 0x7e + +# VI: v_movrelsd_b32_e32 v1, v2 ; encoding: [0x02,0x71,0x02,0x7e] +0x02 0x71 0x02 0x7e + +# VI: v_log_legacy_f32_e32 v1, v2 ; encoding: [0x02,0x99,0x02,0x7e] +0x02 0x99 0x02 0x7e + +# VI: v_exp_legacy_f32_e32 v1, v2 ; encoding: [0x02,0x97,0x02,0x7e] +0x02 0x97 0x02 0x7e + +# VI: v_cvt_f16_u16_e32 v1, v2 ; encoding: [0x02,0x73,0x02,0x7e] +0x02 0x73 0x02 0x7e + +# VI: v_cvt_f16_i16_e32 v1, v2 ; encoding: [0x02,0x75,0x02,0x7e] +0x02 0x75 0x02 0x7e + +# VI: v_cvt_u16_f16_e32 v1, v2 ; encoding: [0x02,0x77,0x02,0x7e] +0x02 0x77 0x02 0x7e + +# VI: v_cvt_i16_f16_e32 v1, v2 ; encoding: [0x02,0x79,0x02,0x7e] +0x02 0x79 0x02 0x7e + +# VI: v_rcp_f16_e32 v1, v2 ; encoding: [0x02,0x7b,0x02,0x7e] +0x02 0x7b 0x02 0x7e + +# VI: v_sqrt_f16_e32 v1, v2 ; encoding: [0x02,0x7d,0x02,0x7e] +0x02 0x7d 0x02 0x7e + +# VI: v_rsq_f16_e32 v1, v2 ; encoding: [0x02,0x7f,0x02,0x7e] +0x02 0x7f 0x02 0x7e + +# VI: v_log_f16_e32 v1, v2 ; encoding: [0x02,0x81,0x02,0x7e] +0x02 0x81 0x02 0x7e + +# VI: v_exp_f16_e32 v1, v2 ; encoding: [0x02,0x83,0x02,0x7e] +0x02 0x83 0x02 0x7e + +# VI: v_frexp_mant_f16_e32 v1, v2 ; encoding: [0x02,0x85,0x02,0x7e] +0x02 0x85 0x02 0x7e + +# VI: v_frexp_exp_i16_f16_e32 v1, v2 ; encoding: [0x02,0x87,0x02,0x7e] +0x02 0x87 0x02 0x7e + +# VI: v_floor_f16_e32 v1, v2 ; encoding: [0x02,0x89,0x02,0x7e] +0x02 0x89 0x02 0x7e + +# VI: v_ceil_f16_e32 v1, v2 ; encoding: [0x02,0x8b,0x02,0x7e] +0x02 0x8b 0x02 0x7e + +# VI: v_trunc_f16_e32 v1, v2 ; encoding: [0x02,0x8d,0x02,0x7e] +0x02 0x8d 0x02 0x7e + +# VI: v_rndne_f16_e32 v1, v2 ; encoding: [0x02,0x8f,0x02,0x7e] +0x02 0x8f 0x02 0x7e + +# VI: v_fract_f16_e32 v1, v2 ; encoding: [0x02,0x91,0x02,0x7e] +0x02 0x91 0x02 0x7e + +# VI: v_sin_f16_e32 v1, v2 ; encoding: [0x02,0x93,0x02,0x7e] +0x02 0x93 0x02 0x7e + +# VI: v_cos_f16_e32 v1, v2 ; encoding: [0x02,0x95,0x02,0x7e] +0x02 0x95 0x02 0x7e diff --git a/test/MC/Disassembler/AMDGPU/vop2_vi.txt b/test/MC/Disassembler/AMDGPU/vop2_vi.txt new file mode 100644 index 000000000000..b1c6c8005726 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/vop2_vi.txt @@ -0,0 +1,256 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: v_cndmask_b32_e32 v1, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x00] +0x02 0x07 0x02 0x00 + +# VI: v_readlane_b32 s1, v2, s3 ; encoding: [0x01,0x00,0x89,0xd2,0x02,0x07,0x00,0x00] +0x01 0x00 0x89 0xd2 0x02 0x07 0x00 0x00 + +# VI: v_writelane_b32 v1, s2, s3 ; encoding: [0x01,0x00,0x8a,0xd2,0x02,0x06,0x00,0x00] +0x01 0x00 0x8a 0xd2 0x02 0x06 0x00 0x00 + +# VI: v_add_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x02] +0x02 0x07 0x02 0x02 + +# VI: v_sub_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x04] +0x02 0x07 0x02 0x04 + +# VI: v_subrev_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x06] +0x02 0x07 0x02 0x06 + +# VI: v_mul_legacy_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x08] +0x02 0x07 0x02 0x08 + +# VI: v_mul_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0a] +0x02 0x07 0x02 0x0a + +# VI: v_mul_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0c] +0x02 0x07 0x02 0x0c + +# VI: v_mul_hi_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0e] +0x02 0x07 0x02 0x0e + +# VI: v_mul_u32_u24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x10] +0x02 0x07 0x02 0x10 + +# VI: v_mul_hi_u32_u24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x12] +0x02 0x07 0x02 0x12 + +# VI: v_min_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x14] +0x02 0x07 0x02 0x14 + +# VI: v_max_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x16] +0x02 0x07 0x02 0x16 + +# VI: v_min_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x18] +0x02 0x07 0x02 0x18 + +# VI: v_max_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1a] +0x02 0x07 0x02 0x1a + +# VI: v_min_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1c] +0x02 0x07 0x02 0x1c + +# VI: v_max_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1e] +0x02 0x07 0x02 0x1e + +# VI: v_lshrrev_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x20] +0x02 0x07 0x02 0x20 + +# VI: v_ashrrev_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x22] +0x02 0x07 0x02 0x22 + +# VI: v_lshlrev_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x24] +0x02 0x07 0x02 0x24 + +# VI: v_and_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x26] +0x02 0x07 0x02 0x26 + +# VI: v_or_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x28] +0x02 0x07 0x02 0x28 + +# VI: v_xor_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2a] +0x02 0x07 0x02 0x2a + +# VI: v_bfm_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x93,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x93 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_mac_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2c] +0x02 0x07 0x02 0x2c + +# VI: v_madmk_f32_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42] +0x02 0x07 0x02 0x2e 0x00 0x00 0x80 0x42 + +# VI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42] +0x02 0x07 0x02 0x30 0x00 0x00 0x80 0x42 + +# VI: v_bcnt_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8b,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x8b 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_mbcnt_lo_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8c,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x8c 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_mbcnt_hi_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8d,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x8d 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_add_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x32] +0x02 0x07 0x02 0x32 + +# VI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00] +0x01 0x00 0x19 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00] +0x01 0x00 0x19 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_add_i32_e64 v1, vcc, v2, v3 ; encoding: [0x01,0x6a,0x19,0xd1,0x02,0x07,0x02,0x00] +0x01 0x6a 0x19 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_add_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x32] +0x02 0x07 0x02 0x32 + +# VI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00] +0x01 0x00 0x19 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_sub_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x34] +0x02 0x07 0x02 0x34 + +# VI: v_sub_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1a,0xd1,0x02,0x07,0x02,0x00] +0x01 0x00 0x1a 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_sub_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x34] +0x02 0x07 0x02 0x34 + +# VI: v_sub_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1a,0xd1,0x02,0x07,0x02,0x00] +0x01 0x00 0x1a 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_subrev_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x36] +0x02 0x07 0x02 0x36 + +# VI: v_subrev_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1b,0xd1,0x02,0x07,0x02,0x00] +0x01 0x00 0x1b 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_subrev_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x36] +0x02 0x07 0x02 0x36 + +# VI: v_subrev_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1b,0xd1,0x02,0x07,0x02,0x00] +0x01 0x00 0x1b 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_addc_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x38] +0x02 0x07 0x02 0x38 + +# VI: v_addc_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x38] +0x02 0x07 0x02 0x38 + +# VI: v_addc_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0xaa,0x01] +0x01 0x00 0x1c 0xd1 0x02 0x07 0xaa 0x01 + +# VI: v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3] ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x0a,0x00] +0x01 0x00 0x1c 0xd1 0x02 0x07 0x0a 0x00 + +# VI: v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3] ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x0a,0x00] +0x01 0x00 0x1c 0xd1 0x02 0x07 0x0a 0x00 + +# FIXME: v_addc_u32_e64 v1, s[0:1], v2, v3, -1 ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x06,0x03] +#0x01 0x00 0x1c 0xd1 0x02 0x07 0x06 0x03 + +# FIXME: v_addc_u32_e64 v1, vcc, v2, v3, -1 ; encoding: [0x01,0x6a,0x1c,0xd1,0x02,0x07,0x06,0x03] +#0x01 0x6a 0x1c 0xd1 0x02 0x07 0x06 0x03 + +# VI: v_addc_u32_e64 v1, vcc, v2, v3, vcc ; encoding: [0x01,0x6a,0x1c,0xd1,0x02,0x07,0xaa,0x01] +0x01 0x6a 0x1c 0xd1 0x02 0x07 0xaa 0x01 + +# VI: v_subb_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x3a] +0x02 0x07 0x02 0x3a + +# VI: v_subb_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1d,0xd1,0x02,0x07,0xaa,0x01] +0x01 0x00 0x1d 0xd1 0x02 0x07 0xaa 0x01 + +# VI: v_subbrev_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x3c] +0x02 0x07 0x02 0x3c + +# VI: v_subbrev_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1e,0xd1,0x02,0x07,0xaa,0x01] +0x01 0x00 0x1e 0xd1 0x02 0x07 0xaa 0x01 + +# VI: v_ldexp_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x88,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x88 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_cvt_pkaccum_u8_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0xf0,0xd1,0x02,0x07,0x02,0x00] +0x01 0x00 0xf0 0xd1 0x02 0x07 0x02 0x00 + +# VI: v_cvt_pknorm_i16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x94,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x94 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_cvt_pknorm_u16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x95,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x95 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x96,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x96 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_cvt_pk_u16_u32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x97,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x97 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_cvt_pk_i16_i32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x98,0xd2,0x02,0x07,0x02,0x00] +0x01 0x00 0x98 0xd2 0x02 0x07 0x02 0x00 + +# VI: v_add_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x3e] +0x02 0x07 0x02 0x3e + +# VI: v_sub_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x40] +0x02 0x07 0x02 0x40 + +# VI: v_subrev_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x42] +0x02 0x07 0x02 0x42 + +# VI: v_mul_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x44] +0x02 0x07 0x02 0x44 + +# VI: v_mac_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x46] +0x02 0x07 0x02 0x46 + +# VI: v_madmk_f16_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x00,0x80,0x42] +0x02 0x07 0x02 0x48 0x00 0x00 0x80 0x42 + +# VI: v_madak_f16_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x4a,0x00,0x00,0x80,0x42] +0x02 0x07 0x02 0x4a 0x00 0x00 0x80 0x42 + +# VI: v_add_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x4c] +0x02 0x07 0x02 0x4c + +# VI: v_sub_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x4e] +0x02 0x07 0x02 0x4e + +# VI: v_subrev_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x50] +0x02 0x07 0x02 0x50 + +# VI: v_mul_lo_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x52] +0x02 0x07 0x02 0x52 + +# VI: v_lshlrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x54] +0x02 0x07 0x02 0x54 + +# VI: v_lshrrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x56] +0x02 0x07 0x02 0x56 + +# VI: v_ashrrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x58] +0x02 0x07 0x02 0x58 + +# VI: v_max_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5a] +0x02 0x07 0x02 0x5a + +# VI: v_min_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5c] +0x02 0x07 0x02 0x5c + +# VI: v_max_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5e] +0x02 0x07 0x02 0x5e + +# VI: v_max_i16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x60] +0x02 0x07 0x02 0x60 + +# VI: v_min_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x62] +0x02 0x07 0x02 0x62 + +# VI: v_min_i16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x64] +0x02 0x07 0x02 0x64 + +# VI: v_ldexp_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x66] +0x02 0x07 0x02 0x66 diff --git a/test/MC/Disassembler/AMDGPU/vop3_vi.txt b/test/MC/Disassembler/AMDGPU/vop3_vi.txt new file mode 100644 index 000000000000..d28a231edf2c --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/vop3_vi.txt @@ -0,0 +1,217 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: v_cmp_lt_f32_e64 s[2:3], v4, -v6 ; encoding: [0x02,0x00,0x41,0xd0,0x04,0x0d,0x02,0x40] +0x02 0x00 0x41 0xd0 0x04 0x0d 0x02 0x40 + +# VI: v_cmp_lt_f32_e64 vcc, v4, v6 ; encoding: [0x6a,0x00,0x41,0xd0,0x04,0x0d,0x02,0x00] +0x6a 0x00 0x41 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_lt_f32_e64 s[2:3], -v4, v6 ; encoding: [0x02,0x00,0x41,0xd0,0x04,0x0d,0x02,0x20] +0x02 0x00 0x41 0xd0 0x04 0x0d 0x02 0x20 + +# VI: v_cmp_lt_f32_e64 s[2:3], v4, -v6 ; encoding: [0x02,0x00,0x41,0xd0,0x04,0x0d,0x02,0x40] +0x02 0x00 0x41 0xd0 0x04 0x0d 0x02 0x40 + +# VI: v_cmp_lt_f32_e64 s[2:3], -v4, -v6 ; encoding: [0x02,0x00,0x41,0xd0,0x04,0x0d,0x02,0x60] +0x02 0x00 0x41 0xd0 0x04 0x0d 0x02 0x60 + +# VI: v_cmp_lt_f32_e64 s[2:3], |v4|, v6 ; encoding: [0x02,0x01,0x41,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x01 0x41 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_lt_f32_e64 s[2:3], v4, |v6| ; encoding: [0x02,0x02,0x41,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x02 0x41 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_lt_f32_e64 s[2:3], |v4|, |v6| ; encoding: [0x02,0x03,0x41,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x03 0x41 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_lt_f32_e64 s[2:3], -|v4|, v6 ; encoding: [0x02,0x01,0x41,0xd0,0x04,0x0d,0x02,0x20] +0x02 0x01 0x41 0xd0 0x04 0x0d 0x02 0x20 + +# VI: v_cmp_lt_f32_e64 s[2:3], -|v4|, v6 ; encoding: [0x02,0x01,0x41,0xd0,0x04,0x0d,0x02,0x20] +0x02 0x01 0x41 0xd0 0x04 0x0d 0x02 0x20 + +# VI: v_cmp_lt_f32_e64 s[2:3], v4, -|v6| ; encoding: [0x02,0x02,0x41,0xd0,0x04,0x0d,0x02,0x40] +0x02 0x02 0x41 0xd0 0x04 0x0d 0x02 0x40 + +# VI: v_cmp_lt_f32_e64 s[2:3], v4, -|v6| ; encoding: [0x02,0x02,0x41,0xd0,0x04,0x0d,0x02,0x40] +0x02 0x02 0x41 0xd0 0x04 0x0d 0x02 0x40 + +# VI: v_cmp_lt_f32_e64 s[2:3], -|v4|, -|v6| ; encoding: [0x02,0x03,0x41,0xd0,0x04,0x0d,0x02,0x60] +0x02 0x03 0x41 0xd0 0x04 0x0d 0x02 0x60 + +# VI: v_cmp_lt_f32_e64 s[2:3], -|v4|, -|v6| ; encoding: [0x02,0x03,0x41,0xd0,0x04,0x0d,0x02,0x60] +0x02 0x03 0x41 0xd0 0x04 0x0d 0x02 0x60 + +# VI: v_cmp_f_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x40,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0x40 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_lt_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x41,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0x41 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_eq_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x42,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0x42 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_le_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x43,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0x43 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_gt_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x44,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0x44 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_lg_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x45,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0x45 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_ge_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x46,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0x46 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_f_f64_e64 s[2:3], v[4:5], v[6:7] ; encoding: [0x02,0x00,0x60,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0x60 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_f_i32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0xc0,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0xc0 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_cmp_f_i64_e64 s[2:3], v[4:5], v[6:7] ; encoding: [0x02,0x00,0xe0,0xd0,0x04,0x0d,0x02,0x00] +0x02 0x00 0xe0 0xd0 0x04 0x0d 0x02 0x00 + +# VI: v_mov_b32_e64 v1, v2 ; encoding: [0x01,0x00,0x41,0xd1,0x02,0x01,0x00,0x00] +0x01 0x00 0x41 0xd1 0x02 0x01 0x00 0x00 + +# VI: v_nop ; encoding: [0x00,0x00,0x40,0xd1,0x00,0x00,0x00,0x00] +0x00 0x00 0x40 0xd1 0x00 0x00 0x00 0x00 + +# VI: v_clrexcp ; encoding: [0x00,0x00,0x75,0xd1,0x00,0x00,0x00,0x00] +0x00 0x00 0x75 0xd1 0x00 0x00 0x00 0x00 + +# VI: v_fract_f32_e64 v1, -v2 ; encoding: [0x01,0x00,0x5b,0xd1,0x02,0x01,0x00,0x20] +0x01 0x00 0x5b 0xd1 0x02 0x01 0x00 0x20 + +# VI: v_fract_f32_e64 v1, |v2| ; encoding: [0x01,0x01,0x5b,0xd1,0x02,0x01,0x00,0x00] +0x01 0x01 0x5b 0xd1 0x02 0x01 0x00 0x00 + +# VI: v_fract_f32_e64 v1, |v2| ; encoding: [0x01,0x01,0x5b,0xd1,0x02,0x01,0x00,0x00] +0x01 0x01 0x5b 0xd1 0x02 0x01 0x00 0x00 + +# VI: v_fract_f32_e64 v1, -|v2| ; encoding: [0x01,0x01,0x5b,0xd1,0x02,0x01,0x00,0x20] +0x01 0x01 0x5b 0xd1 0x02 0x01 0x00 0x20 + +# VI: v_fract_f32_e64 v1, -|v2| ; encoding: [0x01,0x01,0x5b,0xd1,0x02,0x01,0x00,0x20] +0x01 0x01 0x5b 0xd1 0x02 0x01 0x00 0x20 + +# VI: v_fract_f32_e64 v1, v2 clamp ; encoding: [0x01,0x80,0x5b,0xd1,0x02,0x01,0x00,0x00] +0x01 0x80 0x5b 0xd1 0x02 0x01 0x00 0x00 + +# VI: v_fract_f32_e64 v1, v2 mul:2 ; encoding: [0x01,0x00,0x5b,0xd1,0x02,0x01,0x00,0x08] +0x01 0x00 0x5b 0xd1 0x02 0x01 0x00 0x08 + +# VI: v_fract_f32_e64 v1, v2 clamp div:2 ; encoding: [0x01,0x80,0x5b,0xd1,0x02,0x01,0x00,0x18] +0x01 0x80 0x5b 0xd1 0x02 0x01 0x00 0x18 + +# VI: v_add_f32_e64 v1, v3, v5 ; encoding: [0x01,0x00,0x01,0xd1,0x03,0x0b,0x02,0x00] +0x01 0x00 0x01 0xd1 0x03 0x0b 0x02 0x00 + +# VI: v_cndmask_b32_e64 v1, v3, v5, s[4:5] ; encoding: [0x01,0x00,0x00,0xd1,0x03,0x0b,0x12,0x00] +0x01 0x00 0x00 0xd1 0x03 0x0b 0x12 0x00 + +# VI: v_cndmask_b32_e64 v1, v3, v5, vcc ; encoding: [0x01,0x00,0x00,0xd1,0x03,0x0b,0xaa,0x01] +0x01 0x00 0x00 0xd1 0x03 0x0b 0xaa 0x01 + +# VI: v_add_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x01,0xd1,0x03,0x0b,0x00,0x00] +0x01 0x00 0x01 0xd1 0x03 0x0b 0x00 0x00 + +# VI: v_sub_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x02,0xd1,0x03,0x0b,0x00,0x00] +0x01 0x00 0x02 0xd1 0x03 0x0b 0x00 0x00 + +# VI: v_subrev_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x03,0xd1,0x03,0x0b,0x00,0x00] +0x01 0x00 0x03 0xd1 0x03 0x0b 0x00 0x00 + +# VI: v_mul_legacy_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x04,0xd1,0x03,0x0b,0x00,0x00] +0x01 0x00 0x04 0xd1 0x03 0x0b 0x00 0x00 + +# VI: v_mul_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x05,0xd1,0x03,0x0b,0x00,0x00] +0x01 0x00 0x05 0xd1 0x03 0x0b 0x00 0x00 + +# VI: v_mul_i32_i24_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x06,0xd1,0x03,0x0b,0x00,0x00] +0x01 0x00 0x06 0xd1 0x03 0x0b 0x00 0x00 + +# VI: v_mad_legacy_f32 v2, v4, v6, v8 ; encoding: [0x02,0x00,0xc0,0xd1,0x04,0x0d,0x22,0x04] +0x02 0x00 0xc0 0xd1 0x04 0x0d 0x22 0x04 + +# VI: v_add_f64 v[0:1], v[2:3], v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x00 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], v[2:3], v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x00 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], -v[2:3], v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x20] +0x00 0x00 0x80 0xd2 0x02 0x0b 0x02 0x20 + +# VI: v_add_f64 v[0:1], -v[2:3], v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x20] +0x00 0x00 0x80 0xd2 0x02 0x0b 0x02 0x20 + +# VI: v_add_f64 v[0:1], v[2:3], -v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x40] +0x00 0x00 0x80 0xd2 0x02 0x0b 0x02 0x40 + +# VI: v_add_f64 v[0:1], v[2:3], -v[5:6] ; encoding: [0x00,0x00,0x80,0xd2,0x02,0x0b,0x02,0x40] +0x00 0x00 0x80 0xd2 0x02 0x0b 0x02 0x40 + +# VI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x01 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x01 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x01 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], |v[2:3]|, v[5:6] ; encoding: [0x00,0x01,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x01 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x02 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x02 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x02 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], v[2:3], |v[5:6]| ; encoding: [0x00,0x02,0x80,0xd2,0x02,0x0b,0x02,0x00] +0x00 0x02 0x80 0xd2 0x02 0x0b 0x02 0x00 + +# VI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x82,0x80,0xd2,0x02,0x0b,0x02,0x30] +0x00 0x82 0x80 0xd2 0x02 0x0b 0x02 0x30 + +# VI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x82,0x80,0xd2,0x02,0x0b,0x02,0x30] +0x00 0x82 0x80 0xd2 0x02 0x0b 0x02 0x30 + +# VI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x82,0x80,0xd2,0x02,0x0b,0x02,0x30] +0x00 0x82 0x80 0xd2 0x02 0x0b 0x02 0x30 + +# VI: v_add_f64 v[0:1], -v[2:3], |v[5:6]| clamp mul:4 ; encoding: [0x00,0x82,0x80,0xd2,0x02,0x0b,0x02,0x30] +0x00 0x82 0x80 0xd2 0x02 0x0b 0x02 0x30 + +# VI: v_div_scale_f64 v[24:25], vcc, v[22:23], v[22:23], v[20:21] ; encoding: [0x18,0x6a,0xe1,0xd1,0x16,0x2d,0x52,0x04] +0x18 0x6a 0xe1 0xd1 0x16 0x2d 0x52 0x04 + +# VI: v_div_scale_f64 v[24:25], s[10:11], v[22:23], v[20:21], v[20:21] ; encoding: [0x18,0x0a,0xe1,0xd1,0x16,0x29,0x52,0x04] +0x18 0x0a 0xe1 0xd1 0x16 0x29 0x52 0x04 + +# VI: v_div_scale_f32 v24, vcc, v22, v22, v20 ; encoding: [0x18,0x6a,0xe0,0xd1,0x16,0x2d,0x52,0x04] +0x18 0x6a 0xe0 0xd1 0x16 0x2d 0x52 0x04 + +# FIXME: v_div_scale_f32 v24, vcc, s[10:11], v22, v20 ; encoding: [0x18,0x6a,0xe0,0xd1,0x0a,0x2c,0x52,0x04] +0x18 0x6a 0xe0 0xd1 0x0a 0x2c 0x52 0x04 + +# VI: v_div_scale_f32 v24, s[10:11], v22, v22, v20 ; encoding: [0x18,0x0a,0xe0,0xd1,0x16,0x2d,0x52,0x04] +0x18 0x0a 0xe0 0xd1 0x16 0x2d 0x52 0x04 + +# VI: v_div_scale_f32 v24, vcc, v22, 1.0, v22 ; encoding: [0x18,0x6a,0xe0,0xd1,0x16,0xe5,0x59,0x04] +0x18 0x6a 0xe0 0xd1 0x16 0xe5 0x59 0x04 + +# VI: v_div_scale_f32 v24, vcc, v22, v22, -2.0 ; encoding: [0x18,0x6a,0xe0,0xd1,0x16,0x2d,0xd6,0x03] +0x18 0x6a 0xe0 0xd1 0x16 0x2d 0xd6 0x03 + +# VI: v_div_scale_f32 v24, vcc, v22, v22, -2.0 ; encoding: [0x18,0x6a,0xe0,0xd1,0x16,0x2d,0xd6,0x03] +0x18 0x6a 0xe0 0xd1 0x16 0x2d 0xd6 0x03 + +# VI: v_mad_f32 v9, 0.5, v5, -v8 ; encoding: [0x09,0x00,0xc1,0xd1,0xf0,0x0a,0x22,0x84] +0x09 0x00 0xc1 0xd1 0xf0 0x0a 0x22 0x84 diff --git a/test/MC/Disassembler/AMDGPU/vopc_vi.txt b/test/MC/Disassembler/AMDGPU/vopc_vi.txt new file mode 100644 index 000000000000..7840b6247b57 --- /dev/null +++ b/test/MC/Disassembler/AMDGPU/vopc_vi.txt @@ -0,0 +1,31 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI + +# VI: v_cmp_lt_f32_e32 vcc, s2, v4 ; encoding: [0x02,0x08,0x82,0x7c] +0x02 0x08 0x82 0x7c + +# VI: v_cmp_lt_f32_e32 vcc, 0, v4 ; encoding: [0x80,0x08,0x82,0x7c] +0x80 0x08 0x82 0x7c + +# VI: v_cmp_lt_f32_e32 vcc, 0x41200000, v4 ; encoding: [0xff,0x08,0x82,0x7c,0x00,0x00,0x20,0x41] +0xff 0x08 0x82 0x7c 0x00 0x00 0x20 0x41 + +# VI: v_cmp_lt_f32_e32 vcc, v255, v255 ; encoding: [0xff,0xff,0x83,0x7c] +0xff 0xff 0x83 0x7c + +# VI: v_cmp_lt_f32_e32 vcc, v2, v4 ; encoding: [0x02,0x09,0x82,0x7c] +0x02 0x09 0x82 0x7c + +# VI: v_cmp_f_f32_e32 vcc, v2, v4 ; encoding: [0x02,0x09,0x80,0x7c] +0x02 0x09 0x80 0x7c + +# VI: v_cmp_lt_f32_e32 vcc, v2, v4 ; encoding: [0x02,0x09,0x82,0x7c] +0x02 0x09 0x82 0x7c + +# VI: v_cmp_f_f64_e32 vcc, v[2:3], v[4:5] ; encoding: [0x02,0x09,0xc0,0x7c] +0x02 0x09 0xc0 0x7c + +# VI: v_cmp_f_i32_e32 vcc, v2, v4 ; encoding: [0x02,0x09,0x80,0x7d] +0x02 0x09 0x80 0x7d + +# VI: v_cmp_f_i64_e32 vcc, v[2:3], v[4:5] ; encoding: [0x02,0x09,0xc0,0x7d] +0x02 0x09 0xc0 0x7d diff --git a/test/MC/Disassembler/ARM/fullfp16-arm-neg.txt b/test/MC/Disassembler/ARM/fullfp16-arm-neg.txt new file mode 100644 index 000000000000..cd26f09a4e92 --- /dev/null +++ b/test/MC/Disassembler/ARM/fullfp16-arm-neg.txt @@ -0,0 +1,188 @@ +# RUN: not llvm-mc -disassemble -triple armv8a-none-eabi -mattr=-fullfp16 -show-encoding < %s 2>&1 | FileCheck %s + +# CHECK: warning: invalid instruction encoding +[0x80,0x09,0x30,0xee] + +# CHECK: warning: invalid instruction encoding +[0xc0,0x09,0x30,0xee] + +# CHECK: warning: invalid instruction encoding +[0x80,0x09,0x80,0xee] + +# CHECK: warning: invalid instruction encoding +[0x80,0x09,0x20,0xee] + +# CHECK: warning: invalid instruction encoding +[0xc0,0x09,0x20,0xee] + +# CHECK: warning: invalid instruction encoding +[0x00,0x09,0x41,0xee] + +# CHECK: warning: invalid instruction encoding +[0x40,0x09,0x41,0xee] + +# CHECK: warning: invalid instruction encoding +[0x40,0x09,0x51,0xee] + +# CHECK: warning: invalid instruction encoding +[0x00,0x09,0x51,0xee] + +# CHECK: warning: invalid instruction encoding +[0x60,0x09,0xb4,0xee] + +# CHECK: warning: invalid instruction encoding +[0x40,0x19,0xb5,0xee] + +# CHECK: warning: invalid instruction encoding +[0xc0,0x09,0xf4,0xee] + +# CHECK: warning: invalid instruction encoding +[0xc0,0x09,0xb5,0xee] + +# CHECK: warning: invalid instruction encoding +[0xc0,0x09,0xb0,0xee] + +# CHECK: warning: invalid instruction encoding +[0x40,0x09,0xb1,0xee] + +# CHECK: warning: invalid instruction encoding +[0xc0,0x09,0xb1,0xee] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xc0,0x09,0xb8,0xee] +[0x40,0x09,0xb8,0xee] +[0xc0,0x09,0xbd,0xee] +[0xc0,0x09,0xbc,0xee] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x60,0x09,0xbd,0xee] +[0x60,0x09,0xbc,0xee] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xc6,0x09,0xbb,0xee] +[0x67,0x09,0xbb,0xee] +[0xc6,0x09,0xfa,0xee] +[0x67,0x89,0xfa,0xee] +[0xc6,0x69,0xbf,0xee] +[0x67,0xe9,0xbf,0xee] +[0xc6,0x09,0xfe,0xee] +[0x67,0x89,0xfe,0xee] + +# CHECK: warning: invalid instruction encoding +[0xe1,0x19,0xbc,0xfe] + +# CHECK: warning: invalid instruction encoding +[0xeb,0x39,0xbd,0xfe] + +# CHECK: warning: invalid instruction encoding +[0xc2,0x09,0xbe,0xfe] + +# CHECK: warning: invalid instruction encoding +[0xc4,0x89,0xff,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x61,0x19,0xbc,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x6b,0x39,0xbd,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x42,0x09,0xbe,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x44,0x89,0xff,0xfe] + +# CHECK: warning: invalid instruction encoding +[0xab,0x29,0x20,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x80,0x09,0x30,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x2b,0xf9,0x0e,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x07,0xa9,0x58,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x00,0x29,0xc6,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x46,0x09,0x80,0xfe] + +# CHECK: warning: invalid instruction encoding +[0xcc,0x19,0xf6,0xee] + +# CHECK: warning: invalid instruction encoding +[0x64,0x09,0xb6,0xee] + +# CHECK: warning: invalid instruction encoding +[0x47,0x59,0xb7,0xee] + +# CHECK: warning: invalid instruction encoding +[0x60,0x69,0xb8,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x60,0x69,0xb9,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x60,0x69,0xba,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x60,0x69,0xbb,0xfe] + +# CHECK: warning: invalid instruction encoding +[0x82,0x19,0xa3,0xee] + +# CHECK: warning: invalid instruction encoding +[0xc2,0x19,0xa3,0xee] + +# CHECK: warning: invalid instruction encoding +[0xc2,0x19,0x93,0xee] + +# CHECK: warning: invalid instruction encoding +[0x82,0x19,0x93,0xee] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x62,0x1a,0xb0,0xfe] +[0xe2,0x1a,0xb0,0xfe] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x03,0x09,0xdf,0xed] +[0xff,0x19,0x9f,0xed] +[0xff,0x19,0x5f,0xed] +[0x09,0x29,0x14,0xed] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x03,0x09,0xcf,0xed] +[0xff,0x19,0x8f,0xed] +[0xff,0x19,0x4f,0xed] +[0x09,0x29,0x04,0xed] + +# CHECK: warning: invalid instruction encoding +[0x00,0x09,0xb7,0xee] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x90,0x29,0x00,0xee] +[0x10,0x39,0x12,0xee] + +# CHECK-NOT: warning: invalid instruction encoding diff --git a/test/MC/Disassembler/ARM/fullfp16-arm.txt b/test/MC/Disassembler/ARM/fullfp16-arm.txt new file mode 100644 index 000000000000..8a7ce68933eb --- /dev/null +++ b/test/MC/Disassembler/ARM/fullfp16-arm.txt @@ -0,0 +1,186 @@ +# RUN: llvm-mc -disassemble -triple armv8a-none-eabi -mattr=+fullfp16 -show-encoding < %s | FileCheck %s + +# CHECK: vadd.f16 s0, s1, s0 +[0x80,0x09,0x30,0xee] + +# CHECK: vsub.f16 s0, s1, s0 +[0xc0,0x09,0x30,0xee] + +# CHECK: vdiv.f16 s0, s1, s0 +[0x80,0x09,0x80,0xee] + +# CHECK: vmul.f16 s0, s1, s0 +[0x80,0x09,0x20,0xee] + +# CHECK: vnmul.f16 s0, s1, s0 +[0xc0,0x09,0x20,0xee] + +# CHECK: vmla.f16 s1, s2, s0 +[0x00,0x09,0x41,0xee] + +# CHECK: vmls.f16 s1, s2, s0 +[0x40,0x09,0x41,0xee] + +# CHECK: vnmla.f16 s1, s2, s0 +[0x40,0x09,0x51,0xee] + +# CHECK: vnmls.f16 s1, s2, s0 +[0x00,0x09,0x51,0xee] + +# CHECK: vcmp.f16 s0, s1 +[0x60,0x09,0xb4,0xee] + +# CHECK: vcmp.f16 s2, #0 +[0x40,0x19,0xb5,0xee] + +# CHECK: vcmpe.f16 s1, s0 +[0xc0,0x09,0xf4,0xee] + +# CHECK: vcmpe.f16 s0, #0 +[0xc0,0x09,0xb5,0xee] + +# CHECK: vabs.f16 s0, s0 +[0xc0,0x09,0xb0,0xee] + +# CHECK: vneg.f16 s0, s0 +[0x40,0x09,0xb1,0xee] + +# CHECK: vsqrt.f16 s0, s0 +[0xc0,0x09,0xb1,0xee] + +# CHECK: vcvt.f16.s32 s0, s0 +# CHECK: vcvt.f16.u32 s0, s0 +# CHECK: vcvt.s32.f16 s0, s0 +# CHECK: vcvt.u32.f16 s0, s0 +[0xc0,0x09,0xb8,0xee] +[0x40,0x09,0xb8,0xee] +[0xc0,0x09,0xbd,0xee] +[0xc0,0x09,0xbc,0xee] + +# CHECK: vcvtr.s32.f16 s0, s1 +# CHECK: vcvtr.u32.f16 s0, s1 +[0x60,0x09,0xbd,0xee] +[0x60,0x09,0xbc,0xee] + +# CHECK: vcvt.f16.u32 s0, s0, #20 +# CHECK: vcvt.f16.u16 s0, s0, #1 +# CHECK: vcvt.f16.s32 s1, s1, #20 +# CHECK: vcvt.f16.s16 s17, s17, #1 +# CHECK: vcvt.u32.f16 s12, s12, #20 +# CHECK: vcvt.u16.f16 s28, s28, #1 +# CHECK: vcvt.s32.f16 s1, s1, #20 +# CHECK: vcvt.s16.f16 s17, s17, #1 +[0xc6,0x09,0xbb,0xee] +[0x67,0x09,0xbb,0xee] +[0xc6,0x09,0xfa,0xee] +[0x67,0x89,0xfa,0xee] +[0xc6,0x69,0xbf,0xee] +[0x67,0xe9,0xbf,0xee] +[0xc6,0x09,0xfe,0xee] +[0x67,0x89,0xfe,0xee] + +# CHECK: vcvta.s32.f16 s2, s3 +[0xe1,0x19,0xbc,0xfe] + +# CHECK: vcvtn.s32.f16 s6, s23 +[0xeb,0x39,0xbd,0xfe] + +# CHECK: vcvtp.s32.f16 s0, s4 +[0xc2,0x09,0xbe,0xfe] + +# CHECK: vcvtm.s32.f16 s17, s8 +[0xc4,0x89,0xff,0xfe] + +# CHECK: vcvta.u32.f16 s2, s3 +[0x61,0x19,0xbc,0xfe] + +# CHECK: vcvtn.u32.f16 s6, s23 +[0x6b,0x39,0xbd,0xfe] + +# CHECK: vcvtp.u32.f16 s0, s4 +[0x42,0x09,0xbe,0xfe] + +# CHECK: vcvtm.u32.f16 s17, s8 +[0x44,0x89,0xff,0xfe] + +# CHECK: vselge.f16 s4, s1, s23 +[0xab,0x29,0x20,0xfe] + +# CHECK: vselgt.f16 s0, s1, s0 +[0x80,0x09,0x30,0xfe] + +# CHECK: vseleq.f16 s30, s28, s23 +[0x2b,0xf9,0x0e,0xfe] + +# CHECK: vselvs.f16 s21, s16, s14 +[0x07,0xa9,0x58,0xfe] + +# CHECK: vmaxnm.f16 s5, s12, s0 +[0x00,0x29,0xc6,0xfe] + +# CHECK: vminnm.f16 s0, s0, s12 +[0x46,0x09,0x80,0xfe] + +# CHECK: vrintz.f16 s3, s24 +[0xcc,0x19,0xf6,0xee] + +# CHECK: vrintr.f16 s0, s9 +[0x64,0x09,0xb6,0xee] + +# CHECK: vrintx.f16 s10, s14 +[0x47,0x59,0xb7,0xee] + +# CHECK: vrinta.f16 s12, s1 +[0x60,0x69,0xb8,0xfe] + +# CHECK: vrintn.f16 s12, s1 +[0x60,0x69,0xb9,0xfe] + +# CHECK: vrintp.f16 s12, s1 +[0x60,0x69,0xba,0xfe] + +# CHECK: vrintm.f16 s12, s1 +[0x60,0x69,0xbb,0xfe] + +# CHECK: vfma.f16 s2, s7, s4 +[0x82,0x19,0xa3,0xee] + +# CHECK: vfms.f16 s2, s7, s4 +[0xc2,0x19,0xa3,0xee] + +# CHECK: vfnma.f16 s2, s7, s4 +[0xc2,0x19,0x93,0xee] + +# CHECK: vfnms.f16 s2, s7, s4 +[0x82,0x19,0x93,0xee] + +# CHECK: vmovx.f16 s2, s5 +# CHECK: vins.f16 s2, s5 +[0x62,0x1a,0xb0,0xfe] +[0xe2,0x1a,0xb0,0xfe] + +# CHECK: vldr.16 s1, [pc, #6] +# CHECK: vldr.16 s2, [pc, #510] +# CHECK: vldr.16 s3, [pc, #-510] +# CHECK: vldr.16 s4, [r4, #-18] +[0x03,0x09,0xdf,0xed] +[0xff,0x19,0x9f,0xed] +[0xff,0x19,0x5f,0xed] +[0x09,0x29,0x14,0xed] + +# CHECK: vstr.16 s1, [pc, #6] +# CHECK: vstr.16 s2, [pc, #510] +# CHECK: vstr.16 s3, [pc, #-510] +# CHECK: vstr.16 s4, [r4, #-18] +[0x03,0x09,0xcf,0xed] +[0xff,0x19,0x8f,0xed] +[0xff,0x19,0x4f,0xed] +[0x09,0x29,0x04,0xed] + +# CHECK: vmov.f16 s0, #1.0 +[0x00,0x09,0xb7,0xee] + +# CHECK: vmov.f16 s1, r2 +# CHECK: vmov.f16 r3, s4 +[0x90,0x29,0x00,0xee] +[0x10,0x39,0x12,0xee] diff --git a/test/MC/Disassembler/ARM/fullfp16-thumb-neg.txt b/test/MC/Disassembler/ARM/fullfp16-thumb-neg.txt new file mode 100644 index 000000000000..ecb8fabd4cae --- /dev/null +++ b/test/MC/Disassembler/ARM/fullfp16-thumb-neg.txt @@ -0,0 +1,186 @@ +# RUN: not llvm-mc -disassemble -triple thumbv8a-none-eabi -mattr=-fullfp16,+thumb-mode -show-encoding < %s 2>&1 | FileCheck %s + +# CHECK: warning: invalid instruction encoding +[0x30,0xee,0x80,0x09] + +# CHECK: warning: invalid instruction encoding +[0x30,0xee,0xc0,0x09] + +# CHECK: warning: invalid instruction encoding +[0x80,0xee,0x80,0x09] + +# CHECK: warning: invalid instruction encoding +[0x20,0xee,0x80,0x09] + +# CHECK: warning: invalid instruction encoding +[0x20,0xee,0xc0,0x09] + +# CHECK: warning: invalid instruction encoding +[0x41,0xee,0x00,0x09] + +# CHECK: warning: invalid instruction encoding +[0x41,0xee,0x40,0x09] + +# CHECK: warning: invalid instruction encoding +[0x51,0xee,0x40,0x09] + +# CHECK: warning: invalid instruction encoding +[0x51,0xee,0x00,0x09] + +# CHECK: warning: invalid instruction encoding +[0xb4,0xee,0x60,0x09] + +# CHECK: warning: invalid instruction encoding +[0xb5,0xee,0x40,0x19] + +# CHECK: warning: invalid instruction encoding +[0xf4,0xee,0xc0,0x09] + +# CHECK: warning: invalid instruction encoding +[0xb5,0xee,0xc0,0x09] + +# CHECK: warning: invalid instruction encoding +[0xb0,0xee,0xc0,0x09] + +# CHECK: warning: invalid instruction encoding +[0xb1,0xee,0x40,0x09] + +# CHECK: warning: invalid instruction encoding +[0xb1,0xee,0xc0,0x09] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb8,0xee,0xc0,0x09] +[0xb8,0xee,0x40,0x09] +[0xbd,0xee,0xc0,0x09] +[0xbc,0xee,0xc0,0x09] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xbd,0xee,0x60,0x09] +[0xbc,0xee,0x60,0x09] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xbb,0xee,0xc6,0x09] +[0xbb,0xee,0x67,0x09] +[0xfa,0xee,0xc6,0x09] +[0xfa,0xee,0x67,0x89] +[0xbf,0xee,0xc6,0x69] +[0xbf,0xee,0x67,0xe9] +[0xfe,0xee,0xc6,0x09] +[0xfe,0xee,0x67,0x89] + +# CHECK: warning: invalid instruction encoding +[0xbc,0xfe,0xe1,0x19] + +# CHECK: warning: invalid instruction encoding +[0xbd,0xfe,0xeb,0x39] + +# CHECK: warning: invalid instruction encoding +[0xbe,0xfe,0xc2,0x09] + +# CHECK: warning: invalid instruction encoding +[0xff,0xfe,0xc4,0x89] + +# CHECK: warning: invalid instruction encoding +[0xbc,0xfe,0x61,0x19] + +# CHECK: warning: invalid instruction encoding +[0xbd,0xfe,0x6b,0x39] + +# CHECK: warning: invalid instruction encoding +[0xbe,0xfe,0x42,0x09] + +# CHECK: warning: invalid instruction encoding +[0xff,0xfe,0x44,0x89] + +# CHECK: warning: invalid instruction encoding +[0x20,0xfe,0xab,0x29] + +# CHECK: warning: invalid instruction encoding +[0x30,0xfe,0x80,0x09] + +# CHECK: warning: invalid instruction encoding +[0x0e,0xfe,0x2b,0xf9] + +# CHECK: warning: invalid instruction encoding +[0x58,0xfe,0x07,0xa9] + +# CHECK: warning: invalid instruction encoding +[0xc6,0xfe,0x00,0x29] + +# CHECK: warning: invalid instruction encoding +[0x80,0xfe,0x46,0x09] + +# CHECK: warning: invalid instruction encoding +[0xf6,0xee,0xcc,0x19] + +# CHECK: warning: invalid instruction encoding +[0xb6,0xee,0x64,0x09] + +# CHECK: warning: invalid instruction encoding +[0xb7,0xee,0x47,0x59] + +# CHECK: warning: invalid instruction encoding +[0xb8,0xfe,0x60,0x69] + +# CHECK: warning: invalid instruction encoding +[0xb9,0xfe,0x60,0x69] + +# CHECK: warning: invalid instruction encoding +[0xba,0xfe,0x60,0x69] + +# CHECK: warning: invalid instruction encoding +[0xbb,0xfe,0x60,0x69] + +# CHECK: warning: invalid instruction encoding +[0xa3,0xee,0x82,0x19] + +# CHECK: warning: invalid instruction encoding +[0xa3,0xee,0xc2,0x19] + +# CHECK: warning: invalid instruction encoding +[0x93,0xee,0xc2,0x19] + +# CHECK: warning: invalid instruction encoding +[0x93,0xee,0x82,0x19] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb0,0xfe,0x62,0x1a] +[0xb0,0xfe,0xe2,0x1a] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xdf,0xed,0x03,0x09] +[0x9f,0xed,0xff,0x19] +[0x5f,0xed,0xff,0x19] +[0x14,0xed,0x09,0x29] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xcf,0xed,0x03,0x09] +[0x8f,0xed,0xff,0x19] +[0x4f,0xed,0xff,0x19] +[0x04,0xed,0x09,0x29] + +# CHECK: warning: invalid instruction encoding +[0xb7,0xee,0x00,0x09] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x00,0xee,0x90,0x29] +[0x12,0xee,0x10,0x39] diff --git a/test/MC/Disassembler/ARM/fullfp16-thumb.txt b/test/MC/Disassembler/ARM/fullfp16-thumb.txt new file mode 100644 index 000000000000..451172051436 --- /dev/null +++ b/test/MC/Disassembler/ARM/fullfp16-thumb.txt @@ -0,0 +1,186 @@ +# RUN: llvm-mc -disassemble -triple thumbv8a-none-eabi -mattr=+fullfp16,+thumb-mode -show-encoding < %s | FileCheck %s + +# CHECK: vadd.f16 s0, s1, s0 +[0x30,0xee,0x80,0x09] + +# CHECK: vsub.f16 s0, s1, s0 +[0x30,0xee,0xc0,0x09] + +# CHECK: vdiv.f16 s0, s1, s0 +[0x80,0xee,0x80,0x09] + +# CHECK: vmul.f16 s0, s1, s0 +[0x20,0xee,0x80,0x09] + +# CHECK: vnmul.f16 s0, s1, s0 +[0x20,0xee,0xc0,0x09] + +# CHECK: vmla.f16 s1, s2, s0 +[0x41,0xee,0x00,0x09] + +# CHECK: vmls.f16 s1, s2, s0 +[0x41,0xee,0x40,0x09] + +# CHECK: vnmla.f16 s1, s2, s0 +[0x51,0xee,0x40,0x09] + +# CHECK: vnmls.f16 s1, s2, s0 +[0x51,0xee,0x00,0x09] + +# CHECK: vcmp.f16 s0, s1 +[0xb4,0xee,0x60,0x09] + +# CHECK: vcmp.f16 s2, #0 +[0xb5,0xee,0x40,0x19] + +# CHECK: vcmpe.f16 s1, s0 +[0xf4,0xee,0xc0,0x09] + +# CHECK: vcmpe.f16 s0, #0 +[0xb5,0xee,0xc0,0x09] + +# CHECK: vabs.f16 s0, s0 +[0xb0,0xee,0xc0,0x09] + +# CHECK: vneg.f16 s0, s0 +[0xb1,0xee,0x40,0x09] + +# CHECK: vsqrt.f16 s0, s0 +[0xb1,0xee,0xc0,0x09] + +# CHECK: vcvt.f16.s32 s0, s0 +# CHECK: vcvt.f16.u32 s0, s0 +# CHECK: vcvt.s32.f16 s0, s0 +# CHECK: vcvt.u32.f16 s0, s0 +[0xb8,0xee,0xc0,0x09] +[0xb8,0xee,0x40,0x09] +[0xbd,0xee,0xc0,0x09] +[0xbc,0xee,0xc0,0x09] + +# CHECK: vcvtr.s32.f16 s0, s1 +# CHECK: vcvtr.u32.f16 s0, s1 +[0xbd,0xee,0x60,0x09] +[0xbc,0xee,0x60,0x09] + +# CHECK: vcvt.f16.u32 s0, s0, #20 +# CHECK: vcvt.f16.u16 s0, s0, #1 +# CHECK: vcvt.f16.s32 s1, s1, #20 +# CHECK: vcvt.f16.s16 s17, s17, #1 +# CHECK: vcvt.u32.f16 s12, s12, #20 +# CHECK: vcvt.u16.f16 s28, s28, #1 +# CHECK: vcvt.s32.f16 s1, s1, #20 +# CHECK: vcvt.s16.f16 s17, s17, #1 +[0xbb,0xee,0xc6,0x09] +[0xbb,0xee,0x67,0x09] +[0xfa,0xee,0xc6,0x09] +[0xfa,0xee,0x67,0x89] +[0xbf,0xee,0xc6,0x69] +[0xbf,0xee,0x67,0xe9] +[0xfe,0xee,0xc6,0x09] +[0xfe,0xee,0x67,0x89] + +# CHECK: vcvta.s32.f16 s2, s3 +[0xbc,0xfe,0xe1,0x19] + +# CHECK: vcvtn.s32.f16 s6, s23 +[0xbd,0xfe,0xeb,0x39] + +# CHECK: vcvtp.s32.f16 s0, s4 +[0xbe,0xfe,0xc2,0x09] + +# CHECK: vcvtm.s32.f16 s17, s8 +[0xff,0xfe,0xc4,0x89] + +# CHECK: vcvta.u32.f16 s2, s3 +[0xbc,0xfe,0x61,0x19] + +# CHECK: vcvtn.u32.f16 s6, s23 +[0xbd,0xfe,0x6b,0x39] + +# CHECK: vcvtp.u32.f16 s0, s4 +[0xbe,0xfe,0x42,0x09] + +# CHECK: vcvtm.u32.f16 s17, s8 +[0xff,0xfe,0x44,0x89] + +# CHECK: vselge.f16 s4, s1, s23 +[0x20,0xfe,0xab,0x29] + +# CHECK: vselgt.f16 s0, s1, s0 +[0x30,0xfe,0x80,0x09] + +# CHECK: vseleq.f16 s30, s28, s23 +[0x0e,0xfe,0x2b,0xf9] + +# CHECK: vselvs.f16 s21, s16, s14 +[0x58,0xfe,0x07,0xa9] + +# CHECK: vmaxnm.f16 s5, s12, s0 +[0xc6,0xfe,0x00,0x29] + +# CHECK: vminnm.f16 s0, s0, s12 +[0x80,0xfe,0x46,0x09] + +# CHECK: vrintz.f16 s3, s24 +[0xf6,0xee,0xcc,0x19] + +# CHECK: vrintr.f16 s0, s9 +[0xb6,0xee,0x64,0x09] + +# CHECK: vrintx.f16 s10, s14 +[0xb7,0xee,0x47,0x59] + +# CHECK: vrinta.f16 s12, s1 +[0xb8,0xfe,0x60,0x69] + +# CHECK: vrintn.f16 s12, s1 +[0xb9,0xfe,0x60,0x69] + +# CHECK: vrintp.f16 s12, s1 +[0xba,0xfe,0x60,0x69] + +# CHECK: vrintm.f16 s12, s1 +[0xbb,0xfe,0x60,0x69] + +# CHECK: vfma.f16 s2, s7, s4 +[0xa3,0xee,0x82,0x19] + +# CHECK: vfms.f16 s2, s7, s4 +[0xa3,0xee,0xc2,0x19] + +# CHECK: vfnma.f16 s2, s7, s4 +[0x93,0xee,0xc2,0x19] + +# CHECK: vfnms.f16 s2, s7, s4 +[0x93,0xee,0x82,0x19] + +# CHECK: vmovx.f16 s2, s5 +# CHECK: vins.f16 s2, s5 +[0xb0,0xfe,0x62,0x1a] +[0xb0,0xfe,0xe2,0x1a] + +# CHECK: vldr.16 s1, [pc, #6] +# CHECK: vldr.16 s2, [pc, #510] +# CHECK: vldr.16 s3, [pc, #-510] +# CHECK: vldr.16 s4, [r4, #-18] +[0xdf,0xed,0x03,0x09] +[0x9f,0xed,0xff,0x19] +[0x5f,0xed,0xff,0x19] +[0x14,0xed,0x09,0x29] + +# CHECK: vstr.16 s1, [pc, #6] +# CHECK: vstr.16 s2, [pc, #510] +# CHECK: vstr.16 s3, [pc, #-510] +# CHECK: vstr.16 s4, [r4, #-18] +[0xcf,0xed,0x03,0x09] +[0x8f,0xed,0xff,0x19] +[0x4f,0xed,0xff,0x19] +[0x04,0xed,0x09,0x29] + +# CHECK: vmov.f16 s0, #1.0 +[0xb7,0xee,0x00,0x09] + +# CHECK: vmov.f16 s1, r2 +# CHECK: vmov.f16 r3, s4 +[0x00,0xee,0x90,0x29] +[0x12,0xee,0x10,0x39] diff --git a/test/MC/Disassembler/ARM/invalid-thumb-MSR-MClass.txt b/test/MC/Disassembler/ARM/invalid-thumb-MSR-MClass.txt index 26fa907084e9..f40c721fc5a0 100644 --- a/test/MC/Disassembler/ARM/invalid-thumb-MSR-MClass.txt +++ b/test/MC/Disassembler/ARM/invalid-thumb-MSR-MClass.txt @@ -1,4 +1,4 @@ -# RUN: not llvm-mc -disassemble %s -triple=thumbv7em 2>&1 | FileCheck --check-prefix=CHECK %s +# RUN: not llvm-mc -disassemble %s -triple=thumbv7em 2>&1 | FileCheck %s # RUN: not llvm-mc -disassemble %s -triple=thumbv7m 2>&1 | FileCheck --check-prefix=CHECK --check-prefix=CHECK-V7M %s #------------------------------------------------------------------------------ diff --git a/test/MC/Disassembler/ARM/ras-extension-arm.txt b/test/MC/Disassembler/ARM/ras-extension-arm.txt new file mode 100644 index 000000000000..075f905f2a82 --- /dev/null +++ b/test/MC/Disassembler/ARM/ras-extension-arm.txt @@ -0,0 +1,6 @@ +# RUN: llvm-mc < %s -triple armv8a-none-eabi -mattr=+ras -disassemble | FileCheck %s --check-prefix=RAS +# RUN: llvm-mc < %s -triple armv8a-none-eabi -mattr=-ras -disassemble | FileCheck %s --check-prefix=NO-RAS + +[0x10,0xf0,0x20,0xe3] +# RAS: esb +# NO-RAS: hint #16 diff --git a/test/MC/Disassembler/ARM/ras-extension-thumb.txt b/test/MC/Disassembler/ARM/ras-extension-thumb.txt new file mode 100644 index 000000000000..4189b525132f --- /dev/null +++ b/test/MC/Disassembler/ARM/ras-extension-thumb.txt @@ -0,0 +1,6 @@ +# RUN: llvm-mc < %s -triple thumbv8a-none-eabi -mattr=+ras -disassemble | FileCheck %s --check-prefix=RAS +# RUN: llvm-mc < %s -triple thumbv8a-none-eabi -mattr=-ras -disassemble | FileCheck %s --check-prefix=NO-RAS + +[0xaf,0xf3,0x10,0x80] +# RAS: esb +# NO-RAS: hint.w #16 diff --git a/test/MC/Disassembler/ARM/thumb2-v8m.txt b/test/MC/Disassembler/ARM/thumb2-v8m.txt new file mode 100644 index 000000000000..007d7dc46ba7 --- /dev/null +++ b/test/MC/Disassembler/ARM/thumb2-v8m.txt @@ -0,0 +1,25 @@ +# RUN: llvm-mc -triple=thumbv8m.base -disassemble < %s 2>%t | FileCheck %s +# RUN: FileCheck < %t %s --check-prefix=CHECK-STDERR +# RUN: llvm-mc -triple=thumbv8m.main -disassemble < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-MAINLINE + +0xef 0xf3 0x0a 0x83 +# CHECK: mrs r3, msplim +0xef 0xf3 0x0b 0x84 +# CHECK: mrs r4, psplim +0x8b 0xf3 0x0a 0x88 +# CHECK: msr msplim, r11 +0x8c 0xf3 0x0b 0x88 +# CHECK: msr psplim, r12 + +0xef 0xf3 0x90 0x86 +# CHECK: mrs r6, primask_ns +0x88 0xf3 0x98 0x88 +# CHECK: msr sp_ns, r8 + +0xef 0xf3 0x8a 0x85 +# CHECK-STDERR: warning: invalid instruction encoding +# CHECK-MAINLINE: mrs r5, msplim_ns +0x87 0xf3 0x93 0x88 +# CHECK-STDERR: warning: invalid instruction encoding +# CHECK-MAINLINE: msr faultmask_ns, r7 + diff --git a/test/MC/Disassembler/Hexagon/jr.txt b/test/MC/Disassembler/Hexagon/jr.txt index c9deb5fdd7e3..a10b186ddb02 100644 --- a/test/MC/Disassembler/Hexagon/jr.txt +++ b/test/MC/Disassembler/Hexagon/jr.txt @@ -17,7 +17,7 @@ 0x00 0xc0 0x95 0x52 # CHECK: jumpr r21 0x00 0xc1 0x55 0x53 -# CHECK: if (p1) jumpr r21 +# CHECK: if (p1) jumpr:nt r21 0x03 0x40 0x45 0x85 0x00 0xcb 0x55 0x53 # CHECK: p3 = r5 # CHECK-NEXT: if (p3.new) jumpr:nt r21 @@ -25,7 +25,7 @@ # CHECK: p3 = r5 # CHECK-NEXT: if (p3.new) jumpr:t r21 0x00 0xc3 0x75 0x53 -# CHECK: if (!p3) jumpr r21 +# CHECK: if (!p3) jumpr:nt r21 0x03 0x40 0x45 0x85 0x00 0xcb 0x75 0x53 # CHECK: p3 = r5 # CHECK-NEXT: if (!p3.new) jumpr:nt r21 diff --git a/test/MC/Disassembler/Lanai/lit.local.cfg b/test/MC/Disassembler/Lanai/lit.local.cfg new file mode 100644 index 000000000000..3f30d055364c --- /dev/null +++ b/test/MC/Disassembler/Lanai/lit.local.cfg @@ -0,0 +1,3 @@ +if not 'Lanai' in config.root.targets: + config.unsupported = True + diff --git a/test/MC/Disassembler/Lanai/v11.txt b/test/MC/Disassembler/Lanai/v11.txt new file mode 100644 index 000000000000..8e956f93e20b --- /dev/null +++ b/test/MC/Disassembler/Lanai/v11.txt @@ -0,0 +1,762 @@ +# RUN: llvm-mc -disassemble -triple lanai %s | FileCheck %s + +0x0a 0xc4 0x00 0x00 +# CHECK: add %r17, 0x0, %r21 +0x0a 0xc4 0x12 0x34 +# CHECK: add %r17, 0x1234, %r21 +0x0a 0xc5 0x12 0x34 +# CHECK: add %r17, 0x12340000, %r21 +0x0a 0xc6 0x00 0x00 +# CHECK: add.f %r17, 0x0, %r21 +0x0a 0xc6 0x12 0x34 +# CHECK: add.f %r17, 0x1234, %r21 +0x0a 0xc7 0x12 0x34 +# CHECK: add.f %r17, 0x12340000, %r21 +0xca 0xc4 0x90 0x00 +# CHECK: add %r17, %r18, %r21 +0xca 0xc6 0x90 0x00 +# CHECK: add.f %r17, %r18, %r21 +0xca 0xc4 0x91 0x00 +# CHECK: addc %r17, %r18, %r21 +0xca 0xc6 0x91 0x00 +# CHECK: addc.f %r17, %r18, %r21 +0x1a 0xc4 0x00 0x00 +# CHECK: addc %r17, 0x0, %r21 +0x1a 0xc4 0x12 0x34 +# CHECK: addc %r17, 0x1234, %r21 +0x1a 0xc5 0x12 0x34 +# CHECK: addc %r17, 0x12340000, %r21 +0x1a 0xc6 0x00 0x00 +# CHECK: addc.f %r17, 0x0, %r21 +0x1a 0xc6 0x12 0x34 +# CHECK: addc.f %r17, 0x1234, %r21 +0x1a 0xc7 0x12 0x34 +# CHECK: addc.f %r17, 0x12340000, %r21 +0x4a 0xc4 0x12 0x34 +# CHECK: and %r17, 0xffff1234, %r21 +0x4a 0xc5 0x12 0x34 +# CHECK: and %r17, 0x1234ffff, %r21 +0x4a 0xc6 0x12 0x34 +# CHECK: and.f %r17, 0xffff1234, %r21 +0x4a 0xc7 0x12 0x34 +# CHECK: and.f %r17, 0x1234ffff, %r21 +0xca 0xc4 0x94 0x00 +# CHECK: and %r17, %r18, %r21 +0xca 0xc6 0x94 0x00 +# CHECK: and.f %r17, %r18, %r21 +0xe0 0x12 0x34 0x54 +# CHECK: bt 0x123454 +0xe0 0x12 0x34 0x55 +# CHECK: bf 0x123454 +0xe2 0x12 0x34 0x54 +# CHECK: bugt 0x123454 +0xe2 0x12 0x34 0x55 +# CHECK: bule 0x123454 +0xe4 0x12 0x34 0x54 +# CHECK: bult 0x123454 +0xe4 0x12 0x34 0x55 +# CHECK: buge 0x123454 +0xe6 0x12 0x34 0x54 +# CHECK: bne 0x123454 +0xe6 0x12 0x34 0x55 +# CHECK: beq 0x123454 +0xe8 0x12 0x34 0x54 +# CHECK: bvc 0x123454 +0xe8 0x12 0x34 0x55 +# CHECK: bvs 0x123454 +0xea 0x12 0x34 0x54 +# CHECK: bpl 0x123454 +0xea 0x12 0x34 0x55 +# CHECK: bmi 0x123454 +0xec 0x12 0x34 0x54 +# CHECK: bge 0x123454 +0xec 0x12 0x34 0x55 +# CHECK: blt 0x123454 +0xee 0x12 0x34 0x54 +# CHECK: bgt 0x123454 +0xc1 0x00 0x9d 0x00 +# CHECK: bt %r19 +0xe1 0x00 0x56 0x7a +# CHECK: bt.r 0x5678 +0xe1 0x00 0x56 0x7b +# CHECK: bf.r 0x5678 +0xe3 0x00 0x56 0x7a +# CHECK: bugt.r 0x5678 +0xe3 0x00 0x56 0x7b +# CHECK: bule.r 0x5678 +0xe5 0x00 0x56 0x7a +# CHECK: bult.r 0x5678 +0xe5 0x00 0x56 0x7b +# CHECK: buge.r 0x5678 +0xe7 0x00 0x56 0x7a +# CHECK: bne.r 0x5678 +0xe7 0x00 0x56 0x7b +# CHECK: beq.r 0x5678 +0xe9 0x00 0x56 0x7a +# CHECK: bvc.r 0x5678 +0xe9 0x00 0x56 0x7b +# CHECK: bvs.r 0x5678 +0xeb 0x00 0x56 0x7a +# CHECK: bpl.r 0x5678 +0xeb 0x00 0x56 0x7b +# CHECK: bmi.r 0x5678 +0xed 0x00 0x56 0x7a +# CHECK: bge.r 0x5678 +0xed 0x00 0x56 0x7b +# CHECK: blt.r 0x5678 +0xef 0x00 0x56 0x7a +# CHECK: bgt.r 0x5678 +0x8a 0xc6 0x80 0x00 +# CHECK: ld -32768[%r17], %r21 +0x8a 0xc6 0xfc 0x00 +# CHECK: ld -1024[%r17], %r21 +0x8a 0xc4 0x00 0x00 +# CHECK: ld 0[%r17], %r21 +0x8a 0xc6 0x04 0x00 +# CHECK: ld 1024[%r17], %r21 +0x8a 0xc6 0x7f 0xff +# CHECK: ld 32767[%r17], %r21 +0xaa 0xc6 0x90 0x02 +# CHECK: ld [%r17 add %r18], %r21 +0xaa 0xc6 0x90 0x03 +# CHECK: uld [%r17 add %r18], %r21 +0xfa 0xc7 0x0a 0x00 +# CHECK: ld.h -512[%r17], %r21 +0xfa 0xc7 0x0b 0xf3 +# CHECK: ld.h -13[%r17], %r21 +0xfa 0xc7 0x08 0x12 +# CHECK: ld.h 18[%r17], %r21 +0xfa 0xc7 0x09 0xff +# CHECK: ld.h 511[%r17], %r21 +0xfa 0xc7 0x4a 0x00 +# CHECK: ld.b -512[%r17], %r21 +0xfa 0xc7 0x4b 0xf3 +# CHECK: ld.b -13[%r17], %r21 +0xfa 0xc7 0x48 0x12 +# CHECK: ld.b 18[%r17], %r21 +0xfa 0xc7 0x49 0xff +# CHECK: ld.b 511[%r17], %r21 +0xfa 0xc7 0x1a 0x00 +# CHECK: uld.h -512[%r17], %r21 +0xfa 0xc7 0x1b 0xf3 +# CHECK: uld.h -13[%r17], %r21 +0xfa 0xc7 0x18 0x12 +# CHECK: uld.h 18[%r17], %r21 +0xfa 0xc7 0x19 0xff +# CHECK: uld.h 511[%r17], %r21 +0xfa 0xc7 0x5a 0x00 +# CHECK: uld.b -512[%r17], %r21 +0xfa 0xc7 0x5b 0xf3 +# CHECK: uld.b -13[%r17], %r21 +0xfa 0xc7 0x58 0x12 +# CHECK: uld.b 18[%r17], %r21 +0xfa 0xc7 0x59 0xff +# CHECK: uld.b 511[%r17], %r21 +0x8a 0xc7 0x80 0x00 +# CHECK: ld -32768[*%r17], %r21 +0x8a 0xc7 0xfc 0x00 +# CHECK: ld -1024[*%r17], %r21 +0x8a 0xc7 0x04 0x00 +# CHECK: ld 1024[*%r17], %r21 +0x8a 0xc7 0x7f 0xff +# CHECK: ld 32767[*%r17], %r21 +0x8a 0xc7 0xff 0xfc +# CHECK: ld [--%r17], %r21 +0x8a 0xc7 0x00 0x04 +# CHECK: ld [++%r17], %r21 +0xfa 0xc7 0x0f 0xfe +# CHECK: ld.h [--%r17], %r21 +0xfa 0xc7 0x0c 0x02 +# CHECK: ld.h [++%r17], %r21 +0xfa 0xc7 0x1f 0xfe +# CHECK: uld.h [--%r17], %r21 +0xfa 0xc7 0x1c 0x02 +# CHECK: uld.h [++%r17], %r21 +0xfa 0xc7 0x4f 0xff +# CHECK: ld.b [--%r17], %r21 +0xfa 0xc7 0x4c 0x01 +# CHECK: ld.b [++%r17], %r21 +0xfa 0xc7 0x5f 0xff +# CHECK: uld.b [--%r17], %r21 +0xfa 0xc7 0x5c 0x01 +# CHECK: uld.b [++%r17], %r21 +0xaa 0xc7 0x90 0x02 +# CHECK: ld [*%r17 add %r18], %r21 +0xfa 0xc7 0x0e 0x00 +# CHECK: ld.h -512[*%r17], %r21 +0xfa 0xc7 0x0f 0xf3 +# CHECK: ld.h -13[*%r17], %r21 +0xfa 0xc7 0x0c 0x12 +# CHECK: ld.h 18[*%r17], %r21 +0xfa 0xc7 0x0d 0xff +# CHECK: ld.h 511[*%r17], %r21 +0xfa 0xc7 0x4e 0x00 +# CHECK: ld.b -512[*%r17], %r21 +0xfa 0xc7 0x4f 0xf3 +# CHECK: ld.b -13[*%r17], %r21 +0xfa 0xc7 0x4c 0x12 +# CHECK: ld.b 18[*%r17], %r21 +0xfa 0xc7 0x4d 0xff +# CHECK: ld.b 511[*%r17], %r21 +0xfa 0xc7 0x1e 0x00 +# CHECK: uld.h -512[*%r17], %r21 +0xfa 0xc7 0x1f 0xf3 +# CHECK: uld.h -13[*%r17], %r21 +0xfa 0xc7 0x1c 0x12 +# CHECK: uld.h 18[*%r17], %r21 +0xfa 0xc7 0x1d 0xff +# CHECK: uld.h 511[*%r17], %r21 +0xfa 0xc7 0x5e 0x00 +# CHECK: uld.b -512[*%r17], %r21 +0xfa 0xc7 0x5f 0xf3 +# CHECK: uld.b -13[*%r17], %r21 +0xfa 0xc7 0x5c 0x12 +# CHECK: uld.b 18[*%r17], %r21 +0xfa 0xc7 0x5d 0xff +# CHECK: uld.b 511[*%r17], %r21 +0x8a 0xc5 0x80 0x00 +# CHECK: ld -32768[%r17*], %r21 +0x8a 0xc5 0xfc 0x00 +# CHECK: ld -1024[%r17*], %r21 +0x8a 0xc5 0x04 0x00 +# CHECK: ld 1024[%r17*], %r21 +0x8a 0xc5 0x7f 0xff +# CHECK: ld 32767[%r17*], %r21 +0x8a 0xc5 0xff 0xfc +# CHECK: ld [%r17--], %r21 +0x8a 0xc5 0x00 0x04 +# CHECK: ld [%r17++], %r21 +0xfa 0xc7 0x07 0xfe +# CHECK: ld.h [%r17--], %r21 +0xfa 0xc7 0x04 0x02 +# CHECK: ld.h [%r17++], %r21 +0xfa 0xc7 0x17 0xfe +# CHECK: uld.h [%r17--], %r21 +0xfa 0xc7 0x14 0x02 +# CHECK: uld.h [%r17++], %r21 +0xfa 0xc7 0x47 0xff +# CHECK: ld.b [%r17--], %r21 +0xfa 0xc7 0x44 0x01 +# CHECK: ld.b [%r17++], %r21 +0xfa 0xc7 0x57 0xff +# CHECK: uld.b [%r17--], %r21 +0xfa 0xc7 0x54 0x01 +# CHECK: uld.b [%r17++], %r21 +0xaa 0xc5 0x90 0x02 +# CHECK: ld [%r17* add %r18], %r21 +0xfa 0xc7 0x06 0x00 +# CHECK: ld.h -512[%r17*], %r21 +0xfa 0xc7 0x07 0xf3 +# CHECK: ld.h -13[%r17*], %r21 +0xfa 0xc7 0x04 0x12 +# CHECK: ld.h 18[%r17*], %r21 +0xfa 0xc7 0x05 0xff +# CHECK: ld.h 511[%r17*], %r21 +0xfa 0xc7 0x46 0x00 +# CHECK: ld.b -512[%r17*], %r21 +0xfa 0xc7 0x47 0xf3 +# CHECK: ld.b -13[%r17*], %r21 +0xfa 0xc7 0x44 0x12 +# CHECK: ld.b 18[%r17*], %r21 +0xfa 0xc7 0x45 0xff +# CHECK: ld.b 511[%r17*], %r21 +0xfa 0xc7 0x16 0x00 +# CHECK: uld.h -512[%r17*], %r21 +0xfa 0xc7 0x17 0xf3 +# CHECK: uld.h -13[%r17*], %r21 +0xfa 0xc7 0x14 0x12 +# CHECK: uld.h 18[%r17*], %r21 +0xfa 0xc7 0x15 0xff +# CHECK: uld.h 511[%r17*], %r21 +0xfa 0xc7 0x56 0x00 +# CHECK: uld.b -512[%r17*], %r21 +0xfa 0xc7 0x57 0xf3 +# CHECK: uld.b -13[%r17*], %r21 +0xfa 0xc7 0x54 0x12 +# CHECK: uld.b 18[%r17*], %r21 +0xfa 0xc7 0x55 0xff +# CHECK: uld.b 511[%r17*], %r21 +0xaa 0xc6 0x90 0x02 +# CHECK: ld [%r17 add %r18], %r21 +0xaa 0xc6 0x91 0x02 +# CHECK: ld [%r17 addc %r18], %r21 +0xaa 0xc6 0x92 0x02 +# CHECK: ld [%r17 sub %r18], %r21 +0xaa 0xc6 0x93 0x02 +# CHECK: ld [%r17 subb %r18], %r21 +0xaa 0xc6 0x94 0x02 +# CHECK: ld [%r17 and %r18], %r21 +0xaa 0xc6 0x95 0x02 +# CHECK: ld [%r17 or %r18], %r21 +0xaa 0xc6 0x96 0x02 +# CHECK: ld [%r17 xor %r18], %r21 +0xaa 0xc6 0x97 0x82 +# CHECK: ld [%r17 sh %r18], %r21 +0xaa 0xc6 0x97 0xc2 +# CHECK: ld [%r17 sha %r18], %r21 +0xaa 0xc7 0x90 0x02 +# CHECK: ld [*%r17 add %r18], %r21 +0xaa 0xc7 0x91 0x02 +# CHECK: ld [*%r17 addc %r18], %r21 +0xaa 0xc7 0x92 0x02 +# CHECK: ld [*%r17 sub %r18], %r21 +0xaa 0xc7 0x93 0x02 +# CHECK: ld [*%r17 subb %r18], %r21 +0xaa 0xc7 0x94 0x02 +# CHECK: ld [*%r17 and %r18], %r21 +0xaa 0xc7 0x95 0x02 +# CHECK: ld [*%r17 or %r18], %r21 +0xaa 0xc7 0x96 0x02 +# CHECK: ld [*%r17 xor %r18], %r21 +0xaa 0xc7 0x97 0x82 +# CHECK: ld [*%r17 sh %r18], %r21 +0xaa 0xc7 0x97 0xc2 +# CHECK: ld [*%r17 sha %r18], %r21 +0xaa 0xc5 0x90 0x02 +# CHECK: ld [%r17* add %r18], %r21 +0xaa 0xc5 0x91 0x02 +# CHECK: ld [%r17* addc %r18], %r21 +0xaa 0xc5 0x92 0x02 +# CHECK: ld [%r17* sub %r18], %r21 +0xaa 0xc5 0x93 0x02 +# CHECK: ld [%r17* subb %r18], %r21 +0xaa 0xc5 0x94 0x02 +# CHECK: ld [%r17* and %r18], %r21 +0xaa 0xc5 0x95 0x02 +# CHECK: ld [%r17* or %r18], %r21 +0xaa 0xc5 0x96 0x02 +# CHECK: ld [%r17* xor %r18], %r21 +0xaa 0xc5 0x97 0x82 +# CHECK: ld [%r17* sh %r18], %r21 +0xaa 0xc5 0x97 0xc2 +# CHECK: ld [%r17* sha %r18], %r21 +0xfa 0x84 0x23 0x44 +# CHECK: ld [0x12344], %r21 +0xda 0xc4 0x00 0x02 +# CHECK: leadz %r17, %r21 +0x08 0x80 0x00 0x00 +# CHECK: mov 0x0, %r17 +0x08 0x80 0x12 0x34 +# CHECK: mov 0x1234, %r17 +0x08 0x81 0x12 0x34 +# CHECK: mov 0x12340000, %r17 +0x08 0x81 0xaa 0xaa +# CHECK: mov 0xaaaa0000, %r17 +0xc8 0xc8 0x00 0x00 +# CHECK: mov %r18, %r17 +0xf8 0x86 0x23 0x44 +# CHECK: mov 0x12344, %r17 +0x48 0x84 0x12 0x34 +# CHECK: mov 0xffff1234, %r17 +0x48 0x85 0x12 0x34 +# CHECK: mov 0x1234ffff, %r17 +0x00 0x00 0x00 0x01 +# CHECK: nop +0x5a 0xc4 0x00 0x00 +# CHECK: or %r17, 0x0, %r21 +0x5a 0xc4 0x12 0x34 +# CHECK: or %r17, 0x1234, %r21 +0x5a 0xc5 0x12 0x34 +# CHECK: or %r17, 0x12340000, %r21 +0x5a 0xc6 0x00 0x00 +# CHECK: or.f %r17, 0x0, %r21 +0x5a 0xc6 0x12 0x34 +# CHECK: or.f %r17, 0x1234, %r21 +0x5a 0xc7 0x12 0x34 +# CHECK: or.f %r17, 0x12340000, %r21 +0xca 0xc4 0x95 0x00 +# CHECK: or %r17, %r18, %r21 +0xca 0xc6 0x95 0x00 +# CHECK: or.f %r17, %r18, %r21 +0xda 0xc4 0x00 0x01 +# CHECK: popc %r17, %r21 +0xe0 0x54 0x00 0x02 +# CHECK: st %r21 +0xe2 0x54 0x00 0x02 +# CHECK: sugt %r21 +0xe2 0x54 0x00 0x03 +# CHECK: sule %r21 +0xe4 0x54 0x00 0x02 +# CHECK: sult %r21 +0xe4 0x54 0x00 0x03 +# CHECK: suge %r21 +0xe6 0x54 0x00 0x02 +# CHECK: sne %r21 +0xe6 0x54 0x00 0x03 +# CHECK: seq %r21 +0xe8 0x54 0x00 0x02 +# CHECK: svc %r21 +0xe8 0x54 0x00 0x03 +# CHECK: svs %r21 +0xea 0x54 0x00 0x02 +# CHECK: spl %r21 +0xea 0x54 0x00 0x03 +# CHECK: smi %r21 +0xec 0x54 0x00 0x02 +# CHECK: sge %r21 +0xec 0x54 0x00 0x03 +# CHECK: slt %r21 +0xee 0x54 0x00 0x02 +# CHECK: sgt %r21 +0x7a 0xc4 0xff 0xe1 +# CHECK: sh %r17, -0x1f, %r21 +0x7a 0xc4 0xff 0xfb +# CHECK: sh %r17, -0x5, %r21 +0x7a 0xc4 0x00 0x02 +# CHECK: sh %r17, 0x2, %r21 +0x7a 0xc4 0x00 0x1f +# CHECK: sh %r17, 0x1f, %r21 +0x7a 0xc6 0xff 0xe1 +# CHECK: sh.f %r17, -0x1f, %r21 +0x7a 0xc6 0xff 0xfb +# CHECK: sh.f %r17, -0x5, %r21 +0x7a 0xc6 0x00 0x02 +# CHECK: sh.f %r17, 0x2, %r21 +0x7a 0xc6 0x00 0x1f +# CHECK: sh.f %r17, 0x1f, %r21 +0xca 0xc4 0x97 0x80 +# CHECK: sh %r17, %r18, %r21 +0xca 0xc6 0x97 0x80 +# CHECK: sh.f %r17, %r18, %r21 +0x7a 0xc5 0xff 0xe1 +# CHECK: sha %r17, -0x1f, %r21 +0x7a 0xc5 0xff 0xfb +# CHECK: sha %r17, -0x5, %r21 +0x7a 0xc5 0x00 0x02 +# CHECK: sha %r17, 0x2, %r21 +0x7a 0xc5 0x00 0x1f +# CHECK: sha %r17, 0x1f, %r21 +0x7a 0xc7 0xff 0xe1 +# CHECK: sha.f %r17, -0x1f, %r21 +0x7a 0xc7 0xff 0xfb +# CHECK: sha.f %r17, -0x5, %r21 +0x7a 0xc7 0x00 0x02 +# CHECK: sha.f %r17, 0x2, %r21 +0x7a 0xc7 0x00 0x1f +# CHECK: sha.f %r17, 0x1f, %r21 +0xca 0xc4 0x97 0xc0 +# CHECK: sha %r17, %r18, %r21 +0xca 0xc6 0x97 0xc0 +# CHECK: sha.f %r17, %r18, %r21 +0x98 0xce 0x80 0x00 +# CHECK: st %r17, -32768[%r19] +0x98 0xce 0xfc 0x00 +# CHECK: st %r17, -1024[%r19] +0x98 0xcc 0x00 0x00 +# CHECK: st %r17, 0[%r19] +0x98 0xce 0x04 0x00 +# CHECK: st %r17, 1024[%r19] +0x98 0xce 0x7f 0xff +# CHECK: st %r17, 32767[%r19] +0xf8 0xcf 0x2a 0x00 +# CHECK: st.h %r17, -512[%r19] +0xf8 0xcf 0x2b 0xf3 +# CHECK: st.h %r17, -13[%r19] +0xf8 0xcf 0x28 0x12 +# CHECK: st.h %r17, 18[%r19] +0xf8 0xcf 0x29 0xff +# CHECK: st.h %r17, 511[%r19] +0xf8 0xcf 0x6a 0x00 +# CHECK: st.b %r17, -512[%r19] +0xf8 0xcf 0x6b 0xf3 +# CHECK: st.b %r17, -13[%r19] +0xf8 0xcf 0x68 0x12 +# CHECK: st.b %r17, 18[%r19] +0xf8 0xcf 0x69 0xff +# CHECK: st.b %r17, 511[%r19] +0xb8 0xce 0x90 0x02 +# CHECK: st %r17, [%r19 add %r18] +0xb8 0xce 0x90 0x00 +# CHECK: st.h %r17, [%r19 add %r18] +0xb8 0xce 0x90 0x04 +# CHECK: st.b %r17, [%r19 add %r18] +0x98 0xcf 0x80 0x00 +# CHECK: st %r17, -32768[*%r19] +0x98 0xcf 0xfc 0x00 +# CHECK: st %r17, -1024[*%r19] +0x98 0xcf 0x04 0x00 +# CHECK: st %r17, 1024[*%r19] +0x98 0xcf 0x7f 0xff +# CHECK: st %r17, 32767[*%r19] +0xf8 0xcf 0x2e 0x00 +# CHECK: st.h %r17, -512[*%r19] +0xf8 0xcf 0x2f 0xf3 +# CHECK: st.h %r17, -13[*%r19] +0xf8 0xcf 0x2c 0x12 +# CHECK: st.h %r17, 18[*%r19] +0xf8 0xcf 0x2d 0xff +# CHECK: st.h %r17, 511[*%r19] +0xf8 0xcf 0x6e 0x00 +# CHECK: st.b %r17, -512[*%r19] +0xf8 0xcf 0x6f 0xf3 +# CHECK: st.b %r17, -13[*%r19] +0xf8 0xcf 0x6c 0x12 +# CHECK: st.b %r17, 18[*%r19] +0xf8 0xcf 0x6d 0xff +# CHECK: st.b %r17, 511[*%r19] +0x98 0xcf 0xff 0xfc +# CHECK: st %r17, [--%r19] +0x98 0xcf 0x00 0x04 +# CHECK: st %r17, [++%r19] +0xf8 0xcf 0x2f 0xfe +# CHECK: st.h %r17, [--%r19] +0xf8 0xcf 0x2c 0x02 +# CHECK: st.h %r17, [++%r19] +0xf8 0xcf 0x6f 0xff +# CHECK: st.b %r17, [--%r19] +0xf8 0xcf 0x6c 0x01 +# CHECK: st.b %r17, [++%r19] +0xb8 0xcf 0x90 0x02 +# CHECK: st %r17, [*%r19 add %r18] +0xb8 0xcf 0x90 0x00 +# CHECK: st.h %r17, [*%r19 add %r18] +0xb8 0xcf 0x90 0x04 +# CHECK: st.b %r17, [*%r19 add %r18] +0x98 0xcd 0x80 0x00 +# CHECK: st %r17, -32768[%r19*] +0x98 0xcd 0xfc 0x00 +# CHECK: st %r17, -1024[%r19*] +0x98 0xcd 0x04 0x00 +# CHECK: st %r17, 1024[%r19*] +0x98 0xcd 0x7f 0xff +# CHECK: st %r17, 32767[%r19*] +0xf8 0xcf 0x26 0x00 +# CHECK: st.h %r17, -512[%r19*] +0xf8 0xcf 0x27 0xf3 +# CHECK: st.h %r17, -13[%r19*] +0xf8 0xcf 0x24 0x12 +# CHECK: st.h %r17, 18[%r19*] +0xf8 0xcf 0x25 0xff +# CHECK: st.h %r17, 511[%r19*] +0xf8 0xcf 0x66 0x00 +# CHECK: st.b %r17, -512[%r19*] +0xf8 0xcf 0x67 0xf3 +# CHECK: st.b %r17, -13[%r19*] +0xf8 0xcf 0x64 0x12 +# CHECK: st.b %r17, 18[%r19*] +0xf8 0xcf 0x65 0xff +# CHECK: st.b %r17, 511[%r19*] +0x98 0xcd 0xff 0xfc +# CHECK: st %r17, [%r19--] +0x98 0xcd 0x00 0x04 +# CHECK: st %r17, [%r19++] +0xf8 0xcf 0x27 0xfe +# CHECK: st.h %r17, [%r19--] +0xf8 0xcf 0x24 0x02 +# CHECK: st.h %r17, [%r19++] +0xf8 0xcf 0x67 0xff +# CHECK: st.b %r17, [%r19--] +0xf8 0xcf 0x64 0x01 +# CHECK: st.b %r17, [%r19++] +0xb8 0xcd 0x90 0x02 +# CHECK: st %r17, [%r19* add %r18] +0xb8 0xcd 0x90 0x00 +# CHECK: st.h %r17, [%r19* add %r18] +0xb8 0xcd 0x90 0x04 +# CHECK: st.b %r17, [%r19* add %r18] +0xba 0xc6 0x90 0x02 +# CHECK: st %r21, [%r17 add %r18] +0xba 0xc6 0x91 0x02 +# CHECK: st %r21, [%r17 addc %r18] +0xba 0xc6 0x92 0x02 +# CHECK: st %r21, [%r17 sub %r18] +0xba 0xc6 0x93 0x02 +# CHECK: st %r21, [%r17 subb %r18] +0xba 0xc6 0x94 0x02 +# CHECK: st %r21, [%r17 and %r18] +0xba 0xc6 0x95 0x02 +# CHECK: st %r21, [%r17 or %r18] +0xba 0xc6 0x96 0x02 +# CHECK: st %r21, [%r17 xor %r18] +0xba 0xc6 0x97 0x82 +# CHECK: st %r21, [%r17 sh %r18] +0xba 0xc6 0x97 0xc2 +# CHECK: st %r21, [%r17 sha %r18] +0xba 0xc6 0x90 0x00 +# CHECK: st.h %r21, [%r17 add %r18] +0xba 0xc6 0x91 0x00 +# CHECK: st.h %r21, [%r17 addc %r18] +0xba 0xc6 0x92 0x00 +# CHECK: st.h %r21, [%r17 sub %r18] +0xba 0xc6 0x93 0x00 +# CHECK: st.h %r21, [%r17 subb %r18] +0xba 0xc6 0x94 0x00 +# CHECK: st.h %r21, [%r17 and %r18] +0xba 0xc6 0x95 0x00 +# CHECK: st.h %r21, [%r17 or %r18] +0xba 0xc6 0x96 0x00 +# CHECK: st.h %r21, [%r17 xor %r18] +0xba 0xc6 0x97 0x80 +# CHECK: st.h %r21, [%r17 sh %r18] +0xba 0xc6 0x97 0xc0 +# CHECK: st.h %r21, [%r17 sha %r18] +0xba 0xc6 0x90 0x04 +# CHECK: st.b %r21, [%r17 add %r18] +0xba 0xc6 0x91 0x04 +# CHECK: st.b %r21, [%r17 addc %r18] +0xba 0xc6 0x92 0x04 +# CHECK: st.b %r21, [%r17 sub %r18] +0xba 0xc6 0x93 0x04 +# CHECK: st.b %r21, [%r17 subb %r18] +0xba 0xc6 0x94 0x04 +# CHECK: st.b %r21, [%r17 and %r18] +0xba 0xc6 0x95 0x04 +# CHECK: st.b %r21, [%r17 or %r18] +0xba 0xc6 0x96 0x04 +# CHECK: st.b %r21, [%r17 xor %r18] +0xba 0xc6 0x97 0x84 +# CHECK: st.b %r21, [%r17 sh %r18] +0xba 0xc6 0x97 0xc4 +# CHECK: st.b %r21, [%r17 sha %r18] +0xba 0xc7 0x90 0x02 +# CHECK: st %r21, [*%r17 add %r18] +0xba 0xc7 0x91 0x02 +# CHECK: st %r21, [*%r17 addc %r18] +0xba 0xc7 0x92 0x02 +# CHECK: st %r21, [*%r17 sub %r18] +0xba 0xc7 0x93 0x02 +# CHECK: st %r21, [*%r17 subb %r18] +0xba 0xc7 0x94 0x02 +# CHECK: st %r21, [*%r17 and %r18] +0xba 0xc7 0x95 0x02 +# CHECK: st %r21, [*%r17 or %r18] +0xba 0xc7 0x96 0x02 +# CHECK: st %r21, [*%r17 xor %r18] +0xba 0xc7 0x97 0xc2 +# CHECK: st %r21, [*%r17 sha %r18] +0xba 0xc7 0x90 0x00 +# CHECK: st.h %r21, [*%r17 add %r18] +0xba 0xc7 0x91 0x00 +# CHECK: st.h %r21, [*%r17 addc %r18] +0xba 0xc7 0x92 0x00 +# CHECK: st.h %r21, [*%r17 sub %r18] +0xba 0xc7 0x93 0x00 +# CHECK: st.h %r21, [*%r17 subb %r18] +0xba 0xc7 0x94 0x00 +# CHECK: st.h %r21, [*%r17 and %r18] +0xba 0xc7 0x95 0x00 +# CHECK: st.h %r21, [*%r17 or %r18] +0xba 0xc7 0x96 0x00 +# CHECK: st.h %r21, [*%r17 xor %r18] +0xba 0xc7 0x97 0xc0 +# CHECK: st.h %r21, [*%r17 sha %r18] +0xba 0xc7 0x90 0x04 +# CHECK: st.b %r21, [*%r17 add %r18] +0xba 0xc7 0x91 0x04 +# CHECK: st.b %r21, [*%r17 addc %r18] +0xba 0xc7 0x92 0x04 +# CHECK: st.b %r21, [*%r17 sub %r18] +0xba 0xc7 0x93 0x04 +# CHECK: st.b %r21, [*%r17 subb %r18] +0xba 0xc7 0x94 0x04 +# CHECK: st.b %r21, [*%r17 and %r18] +0xba 0xc7 0x95 0x04 +# CHECK: st.b %r21, [*%r17 or %r18] +0xba 0xc7 0x96 0x04 +# CHECK: st.b %r21, [*%r17 xor %r18] +0xba 0xc7 0x97 0xc4 +# CHECK: st.b %r21, [*%r17 sha %r18] +0xba 0xc5 0x90 0x02 +# CHECK: st %r21, [%r17* add %r18] +0xba 0xc5 0x91 0x02 +# CHECK: st %r21, [%r17* addc %r18] +0xba 0xc5 0x92 0x02 +# CHECK: st %r21, [%r17* sub %r18] +0xba 0xc5 0x93 0x02 +# CHECK: st %r21, [%r17* subb %r18] +0xba 0xc5 0x94 0x02 +# CHECK: st %r21, [%r17* and %r18] +0xba 0xc5 0x95 0x02 +# CHECK: st %r21, [%r17* or %r18] +0xba 0xc5 0x96 0x02 +# CHECK: st %r21, [%r17* xor %r18] +0xba 0xc5 0x97 0x82 +# CHECK: st %r21, [%r17* sh %r18] +0xba 0xc5 0x97 0xc2 +# CHECK: st %r21, [%r17* sha %r18] +0xba 0xc5 0x90 0x00 +# CHECK: st.h %r21, [%r17* add %r18] +0xba 0xc5 0x91 0x00 +# CHECK: st.h %r21, [%r17* addc %r18] +0xba 0xc5 0x92 0x00 +# CHECK: st.h %r21, [%r17* sub %r18] +0xba 0xc5 0x93 0x00 +# CHECK: st.h %r21, [%r17* subb %r18] +0xba 0xc5 0x94 0x00 +# CHECK: st.h %r21, [%r17* and %r18] +0xba 0xc5 0x95 0x00 +# CHECK: st.h %r21, [%r17* or %r18] +0xba 0xc5 0x96 0x00 +# CHECK: st.h %r21, [%r17* xor %r18] +0xba 0xc5 0x97 0x80 +# CHECK: st.h %r21, [%r17* sh %r18] +0xba 0xc5 0x97 0xc0 +# CHECK: st.h %r21, [%r17* sha %r18] +0xba 0xc5 0x90 0x04 +# CHECK: st.b %r21, [%r17* add %r18] +0xba 0xc5 0x91 0x04 +# CHECK: st.b %r21, [%r17* addc %r18] +0xba 0xc5 0x92 0x04 +# CHECK: st.b %r21, [%r17* sub %r18] +0xba 0xc5 0x93 0x04 +# CHECK: st.b %r21, [%r17* subb %r18] +0xba 0xc5 0x94 0x04 +# CHECK: st.b %r21, [%r17* and %r18] +0xba 0xc5 0x95 0x04 +# CHECK: st.b %r21, [%r17* or %r18] +0xba 0xc5 0x96 0x04 +# CHECK: st.b %r21, [%r17* xor %r18] +0xba 0xc5 0x97 0x84 +# CHECK: st.b %r21, [%r17* sh %r18] +0xba 0xc5 0x97 0xc4 +# CHECK: st.b %r21, [%r17* sha %r18] +0xfa 0x85 0x23 0x44 +# CHECK: st %r21, [0x12344] +0x2a 0xc4 0x00 0x00 +# CHECK: sub %r17, 0x0, %r21 +0x2a 0xc4 0x12 0x34 +# CHECK: sub %r17, 0x1234, %r21 +0x2a 0xc5 0x12 0x34 +# CHECK: sub %r17, 0x12340000, %r21 +0x2a 0xc6 0x00 0x00 +# CHECK: sub.f %r17, 0x0, %r21 +0x2a 0xc6 0x12 0x34 +# CHECK: sub.f %r17, 0x1234, %r21 +0x2a 0xc7 0x12 0x34 +# CHECK: sub.f %r17, 0x12340000, %r21 +0xca 0xc4 0x92 0x00 +# CHECK: sub %r17, %r18, %r21 +0xca 0xc6 0x92 0x00 +# CHECK: sub.f %r17, %r18, %r21 +0x3a 0xc4 0x00 0x00 +# CHECK: subb %r17, 0x0, %r21 +0x3a 0xc4 0x12 0x34 +# CHECK: subb %r17, 0x1234, %r21 +0x3a 0xc5 0x12 0x34 +# CHECK: subb %r17, 0x12340000, %r21 +0x3a 0xc6 0x00 0x00 +# CHECK: subb.f %r17, 0x0, %r21 +0x3a 0xc6 0x12 0x34 +# CHECK: subb.f %r17, 0x1234, %r21 +0x3a 0xc7 0x12 0x34 +# CHECK: subb.f %r17, 0x12340000, %r21 +0xca 0xc4 0x93 0x00 +# CHECK: subb %r17, %r18, %r21 +0xca 0xc6 0x93 0x00 +# CHECK: subb.f %r17, %r18, %r21 +0x6a 0xc4 0x00 0x00 +# CHECK: xor %r17, 0x0, %r21 +0x6a 0xc4 0x12 0x34 +# CHECK: xor %r17, 0x1234, %r21 +0x6a 0xc5 0x12 0x34 +# CHECK: xor %r17, 0x12340000, %r21 +0x6a 0xc6 0x00 0x00 +# CHECK: xor.f %r17, 0x0, %r21 +0x6a 0xc6 0x12 0x34 +# CHECK: xor.f %r17, 0x1234, %r21 +0x6a 0xc7 0x12 0x34 +# CHECK: xor.f %r17, 0x12340000, %r21 +0xca 0xc4 0x96 0x00 +# CHECK: xor %r17, %r18, %r21 +0xca 0xc6 0x96 0x00 +# CHECK: xor.f %r17, %r18, %r21 diff --git a/test/MC/Disassembler/Mips/micromips-dsp/valid-micromips32r3.txt b/test/MC/Disassembler/Mips/micromips-dsp/valid-micromips32r3.txt new file mode 100644 index 000000000000..a4c363105f76 --- /dev/null +++ b/test/MC/Disassembler/Mips/micromips-dsp/valid-micromips32r3.txt @@ -0,0 +1,3 @@ +# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r3 -mattr=micromips -mattr=+dsp | FileCheck %s + +0x43 0x60 0x00 0xab # CHECK: bposge32 342 diff --git a/test/MC/Disassembler/Mips/micromips-dsp/valid.txt b/test/MC/Disassembler/Mips/micromips-dsp/valid.txt index fdd404c43492..f3d6f3dc0367 100644 --- a/test/MC/Disassembler/Mips/micromips-dsp/valid.txt +++ b/test/MC/Disassembler/Mips/micromips-dsp/valid.txt @@ -101,3 +101,15 @@ 0x00 0x01 0x82 0x7c # CHECK: mthlip $1, $ac2 0x00 0xa7 0xd6 0x7c # CHECK: wrdsp $5 0x00 0xa0 0x96 0x7c # CHECK: wrdsp $5, 2 +0x00 0xc5 0x22 0x95 # CHECK: modsub $4, $5, $6 +0x00 0x43 0x3c 0xbc # CHECK: mulsaq_s.w.ph $ac0, $3, $2 +0x00 0x43 0x31 0x3c # CHECK: bitrev $2, $3 +0x00 0x62 0x00 0x05 # CHECK: cmp.eq.ph $2, $3 +0x00 0x62 0x00 0x85 # CHECK: cmp.le.ph $2, $3 +0x00 0x62 0x00 0x45 # CHECK: cmp.lt.ph $2, $3 +0x58 0x62 0x08 0xc5 # CHECK: cmpgu.eq.qb $1, $2, $3 +0x58 0x62 0x09 0x05 # CHECK: cmpgu.lt.qb $1, $2, $3 +0x58 0x62 0x09 0x45 # CHECK: cmpgu.le.qb $1, $2, $3 +0x00 0x41 0x02 0x45 # CHECK: cmpu.eq.qb $1, $2 +0x00 0x41 0x02 0x85 # CHECK: cmpu.lt.qb $1, $2 +0x00 0x41 0x02 0xc5 # CHECK: cmpu.le.qb $1, $2 diff --git a/test/MC/Disassembler/Mips/micromips-dspr2/valid.txt b/test/MC/Disassembler/Mips/micromips-dspr2/valid.txt index 1d9fc9e80d73..2f564fcea582 100644 --- a/test/MC/Disassembler/Mips/micromips-dspr2/valid.txt +++ b/test/MC/Disassembler/Mips/micromips-dspr2/valid.txt @@ -123,3 +123,19 @@ 0x00 0x22 0x1a 0x55 # CHECK: prepend $1, $2, 3 0x00 0xa7 0xd6 0x7c # CHECK: wrdsp $5 0x00 0xa0 0x96 0x7c # CHECK: wrdsp $5, 2 +0x00 0x64 0x2a 0x15 # CHECK: append $3, $4, 5 +0x00 0x43 0x2c 0xbc # CHECK: mulsa.w.ph $ac0, $3, $2 +0x00 0x43 0xc8 0xbc # CHECK: balign $2, $3, 3 +0x00 0x43 0x31 0x3c # CHECK: bitrev $2, $3 +0x00 0x62 0x00 0x05 # CHECK: cmp.eq.ph $2, $3 +0x00 0x62 0x00 0x85 # CHECK: cmp.le.ph $2, $3 +0x00 0x62 0x00 0x45 # CHECK: cmp.lt.ph $2, $3 +0x00 0x62 0x09 0x85 # CHECK: cmpgdu.eq.qb $1, $2, $3 +0x00 0x62 0x09 0xc5 # CHECK: cmpgdu.lt.qb $1, $2, $3 +0x00 0x62 0x0a 0x05 # CHECK: cmpgdu.le.qb $1, $2, $3 +0x58 0x62 0x08 0xc5 # CHECK: cmpgu.eq.qb $1, $2, $3 +0x58 0x62 0x09 0x05 # CHECK: cmpgu.lt.qb $1, $2, $3 +0x58 0x62 0x09 0x45 # CHECK: cmpgu.le.qb $1, $2, $3 +0x00 0x41 0x02 0x45 # CHECK: cmpu.eq.qb $1, $2 +0x00 0x41 0x02 0x85 # CHECK: cmpu.lt.qb $1, $2 +0x00 0x41 0x02 0xc5 # CHECK: cmpu.le.qb $1, $2 diff --git a/test/MC/Disassembler/Mips/micromips-dspr3/valid.txt b/test/MC/Disassembler/Mips/micromips-dspr3/valid.txt new file mode 100644 index 000000000000..43a7cdcf79ae --- /dev/null +++ b/test/MC/Disassembler/Mips/micromips-dspr3/valid.txt @@ -0,0 +1,3 @@ +# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r6 -mattr=micromips -mattr=+dspr3 | FileCheck %s + +0x43 0x20 0x00 0xab # CHECK: bposge32c 342 diff --git a/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt b/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt index d6c7de4e3a53..53007a9bd042 100644 --- a/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt +++ b/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt @@ -68,12 +68,10 @@ 0xa9 0x41 0x67 0x45 # CHECK: lui $9, 17767 0xe6 0x00 0x50 0x4a # CHECK: and $9, $6, $7 0x26 0xd1 0x67 0x45 # CHECK: andi $9, $6, 17767 -0x26 0xd1 0x67 0x45 # CHECK: andi $9, $6, 17767 0xa4 0x00 0x90 0x1a # CHECK: or $3, $4, $5 0x26 0x51 0x67 0x45 # CHECK: ori $9, $6, 17767 0xa3 0x00 0x10 0x1b # CHECK: xor $3, $3, $5 0x26 0x71 0x67 0x45 # CHECK: xori $9, $6, 17767 -0x26 0x71 0x67 0x45 # CHECK: xori $9, $6, 17767 0xe6 0x00 0xd0 0x4a # CHECK: nor $9, $6, $7 0x08 0x00 0xd0 0x3a # CHECK: not $7, $8 0xe6 0x00 0x10 0x4a # CHECK: mul $9, $6, $7 @@ -189,3 +187,11 @@ 0x04 0x63 0x02 0x64 # CHECK: lwle $24, 2($4) 0x44 0x60 0x08 0x6c # CHECK: lle $2, 8($4) 0x44 0x60 0x08 0xac # CHECK: sce $2, 8($4) +0x00 0x00 0x7c 0x8b # CHECK: syscall +0x8c 0x01 0x7c 0x8b # CHECK: syscall 396 +0xea 0xbc 0x2c 0x01 # CHECK: ldc1 $f7, 300($10) +0x0a 0xbd 0x2c 0x01 # CHECK: ldc1 $f8, 300($10) +0x46 0x9c 0x04 0x00 # CHECK: lwc1 $f2, 4($6) +0xea 0xb8 0x40 0x00 # CHECK: sdc1 $f7, 64($10) +0x46 0xb8 0x04 0x00 # CHECK: sdc1 $f2, 4($6) +0x46 0x98 0x04 0x00 # CHECK: swc1 $f2, 4($6) diff --git a/test/MC/Disassembler/Mips/micromips32r3/valid.txt b/test/MC/Disassembler/Mips/micromips32r3/valid.txt index 030afb36723d..1691dbc84553 100644 --- a/test/MC/Disassembler/Mips/micromips32r3/valid.txt +++ b/test/MC/Disassembler/Mips/micromips32r3/valid.txt @@ -68,12 +68,10 @@ 0x41 0xa9 0x45 0x67 # CHECK: lui $9, 17767 0x00 0xe6 0x4a 0x50 # CHECK: and $9, $6, $7 0xd1 0x26 0x45 0x67 # CHECK: andi $9, $6, 17767 -0xd1 0x26 0x45 0x67 # CHECK: andi $9, $6, 17767 0x00 0xa4 0x1a 0x90 # CHECK: or $3, $4, $5 0x51 0x26 0x45 0x67 # CHECK: ori $9, $6, 17767 0x00 0xa3 0x1b 0x10 # CHECK: xor $3, $3, $5 0x71 0x26 0x45 0x67 # CHECK: xori $9, $6, 17767 -0x71 0x26 0x45 0x67 # CHECK: xori $9, $6, 17767 0x00 0xe6 0x4a 0xd0 # CHECK: nor $9, $6, $7 0x00 0x08 0x3a 0xd0 # CHECK: not $7, $8 0x00 0xe6 0x4a 0x10 # CHECK: mul $9, $6, $7 @@ -189,3 +187,11 @@ 0x63 0x04 0x64 0x02 # CHECK: lwle $24, 2($4) 0x60 0x44 0x6c 0x08 # CHECK: lle $2, 8($4) 0x60 0x44 0xac 0x08 # CHECK: sce $2, 8($4) +0x00 0x00 0x8b 0x7c # CHECK: syscall +0x01 0x8c 0x8b 0x7c # CHECK: syscall 396 +0xbc 0xea 0x01 0x2c # CHECK: ldc1 $f7, 300($10) +0xbd 0x0a 0x01 0x2c # CHECK: ldc1 $f8, 300($10) +0x9c 0x46 0x00 0x04 # CHECK: lwc1 $f2, 4($6) +0xb8 0x46 0x00 0x04 # CHECK: sdc1 $f2, 4($6) +0xb8 0xea 0x00 0x40 # CHECK: sdc1 $f7, 64($10) +0x98 0x46 0x00 0x04 # CHECK: swc1 $f2, 4($6) diff --git a/test/MC/Disassembler/Mips/micromips32r6/valid.txt b/test/MC/Disassembler/Mips/micromips32r6/valid.txt index b8e69f833a03..3a93a4cfd345 100644 --- a/test/MC/Disassembler/Mips/micromips32r6/valid.txt +++ b/test/MC/Disassembler/Mips/micromips32r6/valid.txt @@ -21,6 +21,7 @@ 0x29 0x82 # CHECK: lhu16 $3, 4($16) 0x09 0x94 # CHECK: lbu16 $3, 4($17) 0x09 0x9f # CHECK: lbu16 $3, -1($17) +0x84 0x34 # CHECK: movep $5, $6, $2, $3 0x04 0xcc # CHECK: addu16 $6, $17, $4 0x44 0x21 # CHECK: and16 $16, $2 0x2e 0x56 # CHECK: andi16 $4, $5, 8 @@ -38,12 +39,20 @@ 0x00 0xa4 0x1a 0x50 # CHECK: and $3, $4, $5 0xd0 0x64 0x04 0xd2 # CHECK: andi $3, $4, 1234 0x10 0x62 0xff 0xe9 # CHECK: aui $3, $2, -23 +0x74 0x83 0x00 0x08 # CHECK: beqc $3, $4, 16 +0xe4 0x83 0x00 0x08 # CHECK: bgec $3, $4, 16 +0xc0 0x83 0x00 0x08 # CHECK: bgeuc $3, $4, 16 +0xc4 0x83 0x00 0x08 # CHECK: bltc $3, $4, 16 +0xe0 0x83 0x00 0x08 # CHECK: bltuc $3, $4, 16 +0x7c 0x83 0x00 0x08 # CHECK: bnec $3, $4, 16 0x74 0x40 0x02 0x9a # CHECK: beqzalc $2, 1332 0x7c 0x40 0x02 0x9a # CHECK: bnezalc $2, 1332 0xc0 0x42 0x02 0x9a # CHECK: bgezalc $2, 1332 0xe0 0x40 0x02 0x9a # CHECK: bgtzalc $2, 1332 0xe0 0x42 0x02 0x9a # CHECK: bltzalc $2, 1332 0xc0 0x40 0x02 0x9a # CHECK: blezalc $2, 1332 +0x80 0x60 0x00 0x20 # CHECK: beqzc $3, 64 +0xa0 0x60 0x00 0x20 # CHECK: bnezc $3, 64 0xb4 0x37 0x96 0xb8 # CHECK: balc 7286128 0x94 0x37 0x96 0xb8 # CHECK: bc 7286128 0x00 0x44 0x0b 0x3c # CHECK: bitswap $4, $2 @@ -63,6 +72,19 @@ 0x00 0x01 0xf3 0x7c # CHECK: eretnc 0x80 0x05 0x01 0x00 # CHECK: jialc $5, 256 0xa0 0x05 0x01 0x00 # CHECK: jic $5, 256 +0x3c 0x44 0x00 0x08 # CHECK: lh $2, 8($4) +0x60 0x82 0x6a 0x08 # CHECK: lhe $4, 8($2) +0x34 0x82 0x00 0x08 # CHECK: lhu $4, 8($2) +0x60 0x82 0x62 0x08 # CHECK: lhue $4, 8($2) +0x60 0x44 0x30 0x08 # CHECK: ll $2, 8($4) +0x20 0x44 0x50 0x08 # CHECK: lwm32 $16, $17, 8($4) +0x21 0x3b 0x59 0x84 # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, -1660($27) +0x01 0x26 0x38 0xc0 # CHECK: rotr $9, $6, 7 +0x00 0xc7 0x48 0xd0 # CHECK: rotrv $9, $6, $7 +0x60 0x44 0xb0 0x08 # CHECK: sc $2, 8($4) +0x20 0x44 0xd0 0x08 # CHECK: swm32 $16, $17, 8($4) +0x00 0x00 0x8b 0x7c # CHECK: syscall +0x01 0x8c 0x8b 0x7c # CHECK: syscall 396 0x78 0x48 0x00 0x43 # CHECK: lwpc $2, 268 0x00 0x43 0x26 0x0f # CHECK: lsa $2, $3, $4, 4 0x00 0xa4 0x19 0x58 # CHECK: mod $3, $4, $5 @@ -203,10 +225,6 @@ 0x09 0x94 # CHECK: lbu16 $3, 4($17) 0x09 0x9f # CHECK: lbu16 $3, -1($17) 0x04 0xcc # CHECK: addu16 $6, $17, $4 -0x44 0x21 # CHECK: and16 $16, $2 -0x2e 0x56 # CHECK: andi16 $4, $5, 8 -0x46 0x70 # CHECK: not16 $4, $7 -0x45 0xf9 # CHECK: or16 $3, $7 0x25 0xe0 # CHECK: sll16 $3, $6, 8 0x25 0xe1 # CHECK: srl16 $3, $6, 8 0x46 0x1B # CHECK: break16 8 @@ -256,3 +274,64 @@ 0x54 0x82 0x02 0x60 # CHECK: class.d $f2, $f4 0x00 0x00 0x47 0x7c # CHECK: di 0x00 0x0f 0x47 0x7c # CHECK: di $15 +0x00 0x00 0x43 0x7c # CHECK: tlbinv +0x00 0x00 0x53 0x7c # CHECK: tlbinvf +0x00 0xa9 0x02 0xfc # CHECK: mtc0 $5, $9, 0 +0x00 0xa9 0x02 0xfc # CHECK: mtc0 $5, $9 +0x00 0x22 0x3a 0xfc # CHECK: mtc0 $1, $2, 7 +0x54 0x64 0x28 0x3b # CHECK: mtc1 $3, $f4 +0x00 0xa6 0x5d 0x3c # CHECK: mtc2 $5, $6 +0x00 0xe8 0x02 0xf4 # CHECK: mthc0 $7, $8, 0 +0x00 0xe8 0x02 0xf4 # CHECK: mthc0 $7, $8 +0x01 0x2a 0x0a 0xf4 # CHECK: mthc0 $9, $10, 1 +0x55 0x6c 0x38 0x3b # CHECK: mthc1 $11, $f12 +0x01 0xae 0x9d 0x3c # CHECK: mthc2 $13, $14 +0x00 0x67 0x00 0xfc # CHECK: mfc0 $3, $7, 0 +0x00 0x67 0x18 0xfc # CHECK: mfc0 $3, $7, 3 +0x54 0xaa 0x20 0x3b # CHECK: mfc1 $5, $f10 +0x01 0xe5 0x4d 0x3c # CHECK: mfc2 $15, $5 +0x02 0x95 0x00 0xf4 # CHECK: mfhc0 $20, $21, 0 +0x00 0x22 0x08 0xf4 # CHECK: mfhc0 $1, $2, 1 +0x54 0x06 0x30 0x3b # CHECK: mfhc1 $zero, $f6 +0x02 0xf0 0x8d 0x3c # CHECK: mfhc2 $23, $16 +0x00 0x00 0x03 0x7c # CHECK: tlbp +0x00 0x00 0x13 0x7c # CHECK: tlbr +0x00 0x00 0x23 0x7c # CHECK: tlbwi +0x00 0x00 0x33 0x7c # CHECK: tlbwr +0x00 0x00 0x19 0x7c # CHECK: dvp +0x00 0x04 0x19 0x7c # CHECK: dvp $4 +0x00 0x00 0x39 0x7c # CHECK: evp +0x00 0x04 0x39 0x7c # CHECK: evp $4 +0x03 0xe4 0x1f 0x3c # CHECK: jalrc.hb $4 +0x00 0x85 0x1f 0x3c # CHECK: jalrc.hb $4, $5 +0x00 0x65 0x10 0x10 # CHECK: sllv $2, $3, $5 +0x00 0x83 0x38 0x80 # CHECK: sra $4, $3, 7 +0x00 0x65 0x10 0x90 # CHECK: srav $2, $3, $5 +0x00 0x83 0x38 0x40 # CHECK: srl $4, $3, 7 +0x00 0x65 0x10 0x50 # CHECK: srlv $2, $3, $5 +0x22 0x04 0x10 0x08 # CHECK: lwp $16, 8($4) +0x22 0x04 0x90 0x08 # CHECK: swp $16, 8($4) +0x41 0x1f 0x00 0x02 # CHECK: bc1eqzc $f31, 4 +0x41 0x3f 0x00 0x02 # CHECK: bc1nezc $f31, 4 +0x41 0x5f 0x00 0x04 # CHECK: bc2eqzc $31, 8 +0x41 0x7f 0x00 0x04 # CHECK: bc2nezc $31, 8 +0x01 0x26 0x30 0xec # CHECK: ext $9, $6, 3, 7 +0x01 0x26 0x48 0xcc # CHECK: ins $9, $6, 3, 7 +0x00 0x85 0x0f 0x3c # CHECK: jalrc $4, $5 +0x03 0xe5 0x0f 0x3c # CHECK: jalrc $5 +0x74 0x44 0x00 0x0c # CHECK: bovc $2, $4, 24 +0x7c 0x44 0x00 0x0c # CHECK: bnvc $2, $4, 24 +0xd0 0x64 0x00 0x05 # CHECK: andi $3, $4, 5 +0x50 0x64 0x00 0x05 # CHECK: ori $3, $4, 5 +0x70 0x64 0x00 0x05 # CHECK: xori $3, $4, 5 +0x00 0x04 0x1a 0xd0 # CHECK: not $3, $4 +0xbc 0xea 0x01 0x2c # CHECK: ldc1 $f7, 300($10) +0xbd 0x0a 0x01 0x2c # CHECK: ldc1 $f8, 300($10) +0x21 0x6c 0x23 0xff # CHECK: ldc2 $11, 1023($12) +0x9c 0x45 0x00 0x20 # CHECK: lwc1 $f2, 32($5) +0x20 0x24 0x00 0x10 # CHECK: lwc2 $1, 16($4) +0xb8 0xea 0x00 0x40 # CHECK: sdc1 $f7, 64($10) +0xb9 0x0a 0x00 0x40 # CHECK: sdc1 $f8, 64($10) +0x20 0x50 0xa0 0x08 # CHECK: sdc2 $2, 8($16) +0x98 0xcd 0x01 0x71 # CHECK: swc1 $f6, 369($13) +0x20 0xf1 0x83 0x09 # CHECK: swc2 $7, 777($17) diff --git a/test/MC/Disassembler/Mips/micromips64r6/valid.txt b/test/MC/Disassembler/Mips/micromips64r6/valid.txt index 4f2325fe7ce1..26536e6c8a3a 100644 --- a/test/MC/Disassembler/Mips/micromips64r6/valid.txt +++ b/test/MC/Disassembler/Mips/micromips64r6/valid.txt @@ -9,6 +9,8 @@ 0x4c 0x01 # CHECK: addiusp 1024 0x4c 0x03 # CHECK: addiusp 1028 0x4f 0xf9 # CHECK: addiusp -16 +0x44 0x21 # CHECK: and16 $16, $2 +0x2e 0x56 # CHECK: andi16 $4, $5, 8 0xcc 0x42 # CHECK: bc16 132 0x8f 0x0a # CHECK: beqzc16 $6, 20 0xaf 0x0a # CHECK: bnezc16 $6, 20 @@ -21,17 +23,28 @@ 0x45 0x2b # CHECK: jalr $9 0x45 0x23 # CHECK: jrc16 $9 0x44 0xb3 # CHECK: jrcaddiusp 20 +0x84 0x34 # CHECK: movep $5, $6, $2, $3 +0x45 0xf9 # CHECK: or16 $3, $7 +0x60 0x44 0x30 0x08 # CHECK: ll $2, 8($4) +0x20 0x44 0x50 0x08 # CHECK: lwm32 $16, $17, 8($4) +0x21 0x3b 0x59 0x84 # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, -1660($27) +0x01 0x26 0x38 0xc0 # CHECK: rotr $9, $6, 7 +0x00 0xc7 0x48 0xd0 # CHECK: rotrv $9, $6, $7 +0x60 0x44 0xb0 0x08 # CHECK: sc $2, 8($4) +0x20 0x44 0xd0 0x08 # CHECK: swm32 $16, $17, 8($4) +0x00 0x00 0x8b 0x7c # CHECK: syscall +0x01 0x8c 0x8b 0x7c # CHECK: syscall 396 0xf0 0x64 0x00 0x05 # CHECK: daui $3, $4, 5 0x42 0x23 0x00 0x04 # CHECK: dahi $3, 4 0x42 0x03 0x00 0x04 # CHECK: dati $3, 4 0x59 0x26 0x30 0xec # CHECK: dext $9, $6, 3, 7 -0x59 0x26 0x30 0xe4 # CHECK: dextm $9, $6, 3, 7 -0x59 0x26 0x30 0xd4 # CHECK: dextu $9, $6, 3, 7 +0x59 0x26 0x30 0xe4 # CHECK: dextm $9, $6, 3, 39 +0x59 0x26 0x30 0xd4 # CHECK: dextu $9, $6, 35, 7 0x58 0x43 0x25 0x1c # CHECK: dalign $4, $2, $3, 5 -0x58 0x64 0x29 0x18 # CHECK: ddiv $3, $4, $5 -0x58 0x64 0x29 0x58 # CHECK: dmod $3, $4, $5 -0x58 0x64 0x29 0x98 # CHECK: ddivu $3, $4, $5 -0x58 0x64 0x29 0xd8 # CHECK: dmodu $3, $4, $5 +0x58 0xa4 0x19 0x18 # CHECK: ddiv $3, $4, $5 +0x58 0xa4 0x19 0x58 # CHECK: dmod $3, $4, $5 +0x58 0xa4 0x19 0x98 # CHECK: ddivu $3, $4, $5 +0x58 0xa4 0x19 0xd8 # CHECK: dmodu $3, $4, $5 0x54 0xa4 0x18 0x30 # CHECK: add.s $f3, $f4, $f5 0x54 0xc4 0x11 0x30 # CHECK: add.d $f2, $f4, $f6 0x54 0xa4 0x18 0x70 # CHECK: sub.s $f3, $f4, $f5 @@ -131,6 +144,7 @@ 0x60 0x25 0xa6 0x08 # CHECK: cachee 1, 8($5) 0x00 0x64 0xf1 0x7c # CHECK: wrpgpr $3, $4 0x00 0x64 0x7b 0x3c # CHECK: wsbh $3, $4 +0x78 0x58 0x00 0x02 # CHECK: ldpc $2, 16 0x65 0x88 # CHECK: lw $3, 32($gp) 0x48 0x66 # CHECK: lw $3, 24($sp) 0x6a 0x12 # CHECK: lw16 $4, 8($17) @@ -169,3 +183,126 @@ 0x00 0x00 0xe3 0x7c # CHECK: deret 0x00 0x00 0x47 0x7c # CHECK: di 0x00 0x0f 0x47 0x7c # CHECK: di $15 +0x00 0x00 0x43 0x7c # CHECK: tlbinv +0x00 0x00 0x53 0x7c # CHECK: tlbinvf +0x58 0x82 0x20 0x34 # CHECK: dinsu $4, $2, 32, 5 +0x58 0x82 0x38 0xc4 # CHECK: dinsm $4, $2, 3, 5 +0x58 0x82 0x38 0xcc # CHECK: dins $4, $2, 3, 5 +0x00 0xa9 0x02 0xfc # CHECK: mtc0 $5, $9, 0 +0x00 0xa9 0x02 0xfc # CHECK: mtc0 $5, $9 +0x00 0x22 0x3a 0xfc # CHECK: mtc0 $1, $2, 7 +0x54 0x64 0x28 0x3b # CHECK: mtc1 $3, $f4 +0x00 0xa6 0x5d 0x3c # CHECK: mtc2 $5, $6 +0x00 0xe8 0x02 0xf4 # CHECK: mthc0 $7, $8, 0 +0x00 0xe8 0x02 0xf4 # CHECK: mthc0 $7, $8 +0x01 0x2a 0x0a 0xf4 # CHECK: mthc0 $9, $10, 1 +0x55 0x6c 0x38 0x3b # CHECK: mthc1 $11, $f12 +0x01 0xae 0x9d 0x3c # CHECK: mthc2 $13, $14 +0x59 0xf0 0x02 0xfc # CHECK: dmtc0 $15, $16, 0 +0x59 0xf0 0x02 0xfc # CHECK: dmtc0 $15, $16 +0x5a 0x32 0x2a 0xfc # CHECK: dmtc0 $17, $18, 5 +0x56 0x74 0x2c 0x3b # CHECK: dmtc1 $19, $f20 +0x02 0xb6 0x7d 0x3c # CHECK: dmtc2 $21, $22 +0x5a 0x51 0x00 0xfc # CHECK: dmfc0 $18, $17 +0x59 0x21 0x08 0xfc # CHECK: dmfc0 $9, $1, 1 +0x55 0x24 0x24 0x3b # CHECK: dmfc1 $9, $f4 +0x01 0xd2 0x6d 0x3c # CHECK: dmfc2 $14, $18 +0x58 0xe6 0x49 0x10 # CHECK: dadd $9, $6, $7 +0x5b 0xe1 0x99 0x10 # CHECK: dadd $19, $1, $ra +0x5f 0x02 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x5d 0x26 0xc5 0x67 # CHECK: daddiu $9, $6, -15001 +0x5d 0x29 0xc5 0x67 # CHECK: daddiu $9, $9, -15001 +0x5d 0x23 0x00 0x20 # CHECK: daddiu $9, $3, 32 +0x5f 0x56 0xee 0x16 # CHECK: daddiu $26, $22, -4586 +0x5d 0xeb 0xec 0x5f # CHECK: daddiu $15, $11, -5025 +0x5d 0xce 0x11 0xea # CHECK: daddiu $14, $14, 4586 +0x5e 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x5d 0x7a 0x7c 0xcd # CHECK: daddiu $11, $26, 31949 +0x5f 0xbd 0xff 0xe0 # CHECK: daddiu $sp, $sp, -32 +0x59 0x61 0xd1 0x50 # CHECK: daddu $26, $1, $11 +0x5b 0xe1 0x99 0x50 # CHECK: daddu $19, $1, $ra +0x58 0xe6 0x49 0x50 # CHECK: daddu $9, $6, $7 +0x58 0x69 0x49 0x50 # CHECK: daddu $9, $9, $3 +0x5d 0x26 0xc5 0x67 # CHECK: daddiu $9, $6, -15001 +0x5d 0x29 0x00 0x0a # CHECK: daddiu $9, $9, 10 +0x5e 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x5f 0x02 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x5c 0x63 0xff 0xfb # CHECK: daddiu $3, $3, -5 +0x5c 0x64 0xff 0xfb # CHECK: daddiu $3, $4, -5 +0x00 0x00 0x03 0x7c # CHECK: tlbp +0x00 0x00 0x13 0x7c # CHECK: tlbr +0x00 0x00 0x23 0x7c # CHECK: tlbwi +0x00 0x00 0x33 0x7c # CHECK: tlbwr +0x00 0x00 0x19 0x7c # CHECK: dvp +0x00 0x04 0x19 0x7c # CHECK: dvp $4 +0x00 0x00 0x39 0x7c # CHECK: evp +0x00 0x04 0x39 0x7c # CHECK: evp $4 +0x03 0xe4 0x1f 0x3c # CHECK: jalrc.hb $4 +0x00 0x85 0x1f 0x3c # CHECK: jalrc.hb $4, $5 +0x00 0x83 0x38 0x00 # CHECK: sll $4, $3, 7 +0x00 0x65 0x10 0x10 # CHECK: sllv $2, $3, $5 +0x00 0x83 0x38 0x80 # CHECK: sra $4, $3, 7 +0x00 0x65 0x10 0x90 # CHECK: srav $2, $3, $5 +0x00 0x83 0x38 0x40 # CHECK: srl $4, $3, 7 +0x00 0x65 0x10 0x50 # CHECK: srlv $2, $3, $5 +0x58 0x62 0x09 0x90 # CHECK: dsub $1, $2, $3 +0x59 0xe7 0x19 0xd0 # CHECK: dsubu $3, $7, $15 +0x59 0xe0 0x39 0x90 # CHECK: dneg $7, $15 +0x59 0x40 0x51 0x90 # CHECK: dneg $10, $10 +0x59 0x60 0x09 0xd0 # CHECK: dnegu $1, $11 +0x58 0xa0 0x29 0xd0 # CHECK: dnegu $5, $5 +0x3c 0x44 0x00 0x08 # CHECK: lh $2, 8($4) +0x60 0x82 0x6a 0x08 # CHECK: lhe $4, 8($2) +0x34 0x82 0x00 0x08 # CHECK: lhu $4, 8($2) +0x60 0x82 0x62 0x08 # CHECK: lhue $4, 8($2) +0x00 0xa4 0x18 0x18 # CHECK: mul $3, $4, $5 +0x00 0xa4 0x18 0x58 # CHECK: muh $3, $4, $5 +0x00 0xa4 0x18 0x98 # CHECK: mulu $3, $4, $5 +0x00 0xa4 0x18 0xd8 # CHECK: muhu $3, $4, $5 +0x58 0xa4 0x18 0x18 # CHECK: dmul $3, $4, $5 +0x58 0xa4 0x18 0x58 # CHECK: dmuh $3, $4, $5 +0x58 0xa4 0x18 0x98 # CHECK: dmulu $3, $4, $5 +0x58 0xa4 0x18 0xd8 # CHECK: dmuhu $3, $4, $5 +0x22 0x04 0x10 0x08 # CHECK: lwp $16, 8($4) +0x22 0x04 0x90 0x08 # CHECK: swp $16, 8($4) +0x58 0x64 0x7b 0x3c # CHECK: dsbh $3, $4 +0x58 0x64 0xfb 0x3c # CHECK: dshd $3, $4 +0x58 0x64 0x28 0x00 # CHECK: dsll $3, $4, 5 +0x58 0x64 0x28 0x08 # CHECK: dsll32 $3, $4, 5 +0x58 0xa6 0x20 0x10 # CHECK: dsllv $4, $5, $6 +0x58 0x85 0x28 0x80 # CHECK: dsra $4, $5, 5 +0x58 0xa6 0x20 0x90 # CHECK: dsrav $4, $5, $6 +0x41 0x1f 0x00 0x02 # CHECK: bc1eqzc $f31, 4 +0x41 0x3f 0x00 0x02 # CHECK: bc1nezc $f31, 4 +0x41 0x5f 0x00 0x04 # CHECK: bc2eqzc $31, 8 +0x41 0x7f 0x00 0x04 # CHECK: bc2nezc $31, 8 +0x00 0xa4 0x1a 0x50 # CHECK: and $3, $4, $5 +0xd0 0x64 0x04 0xd2 # CHECK: andi $3, $4, 1234 +0x00 0xa4 0x1a 0x90 # CHECK: or $3, $4, $5 +0x50 0x64 0x04 0xd2 # CHECK: ori $3, $4, 1234 +0x00 0xa4 0x1b 0x10 # CHECK: xor $3, $4, $5 +0x70 0x64 0x04 0xd2 # CHECK: xori $3, $4, 1234 +0x00 0xa4 0x1a 0xd0 # CHECK: nor $3, $4, $5 +0x00 0x04 0x1a 0xd0 # CHECK: not $3, $4 +0x58 0x22 0x4b 0x3c # CHECK: dclo $1, $2 +0x58 0x22 0x5b 0x3c # CHECK: dclz $1, $2 +0x58 0xaa 0x40 0xc0 # CHECK: drotr $5, $10, 8 +0x58 0x22 0x20 0xc8 # CHECK: drotr32 $1, $2, 4 +0x58 0xc4 0x18 0xd0 # CHECK: drotrv $3, $6, $4 +0xdc 0x82 0x00 0x05 # CHECK: ld $4, 5($2) +0x60 0x48 0x70 0x03 # CHECK: lld $2, 3($8) +0x60 0x22 0xe0 0x0a # CHECK: lwu $1, 10($2) +0xd8 0x83 0x00 0x05 # CHECK: sd $4, 5($3) +0x58 0x22 0x10 0x40 # CHECK: dsrl $1, $2, 2 +0x58 0x64 0x28 0x48 # CHECK: dsrl32 $3, $4, 5 +0x58 0x63 0x08 0x50 # CHECK: dsrlv $1, $3, $3 +0xbc 0xea 0x01 0x2c # CHECK: ldc1 $f7, 300($10) +0xbd 0x0a 0x01 0x2c # CHECK: ldc1 $f8, 300($10) +0x21 0x6c 0x23 0xff # CHECK: ldc2 $11, 1023($12) +0x9c 0x45 0x00 0x20 # CHECK: lwc1 $f2, 32($5) +0x20 0x24 0x00 0x10 # CHECK: lwc2 $1, 16($4) +0xb8 0xea 0x00 0x40 # CHECK: sdc1 $f7, 64($10) +0xb9 0x0a 0x00 0x40 # CHECK: sdc1 $f8, 64($10) +0x20 0x50 0xa0 0x08 # CHECK: sdc2 $2, 8($16) +0x98 0xcd 0x01 0x71 # CHECK: swc1 $f6, 369($13) +0x20 0xf1 0x83 0x09 # CHECK: swc2 $7, 777($17) diff --git a/test/MC/Disassembler/Mips/mips2/valid-mips2-el.txt b/test/MC/Disassembler/Mips/mips2/valid-mips2-el.txt index 5bdf8f17eb68..382e085acf96 100644 --- a/test/MC/Disassembler/Mips/mips2/valid-mips2-el.txt +++ b/test/MC/Disassembler/Mips/mips2/valid-mips2-el.txt @@ -136,11 +136,11 @@ 0x22 0x98 0xd1 0xb9 # CHECK: swr $17, -26590($14) 0x34 0x00 0x03 0x00 # CHECK: teq $zero, $3 0x34 0x9b 0xa7 0x00 # CHECK: teq $5, $7, 620 -0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, 48032 +0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, -17504 0x30 0x00 0xea 0x00 # CHECK: tge $7, $10 0x30 0x55 0xb3 0x00 # CHECK: tge $5, $19, 340 0xa1 0x13 0x28 0x06 # CHECK: tgei $17, 5025 -0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, 36915 +0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, -28621 0x31 0x00 0xdc 0x02 # CHECK: tgeu $22, $gp 0xf1 0x5e 0x8e 0x02 # CHECK: tgeu $20, $14, 379 0x08 0x00 0x00 0x42 # CHECK: tlbp @@ -149,13 +149,13 @@ 0x06 0x00 0x00 0x42 # CHECK: tlbwr 0x32 0x00 0xed 0x01 # CHECK: tlt $15, $13 0x72 0x21 0x53 0x00 # CHECK: tlt $2, $19, 133 -0xbd 0xad 0xca 0x05 # CHECK: tlti $14, 44477 -0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, 60460 +0xbd 0xad 0xca 0x05 # CHECK: tlti $14, -21059 +0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, -5076 0x33 0x00 0x70 0x01 # CHECK: tltu $11, $16 0x33 0xfe 0x1d 0x02 # CHECK: tltu $16, $sp, 1016 0x36 0x00 0xd1 0x00 # CHECK: tne $6, $17 0x76 0xdd 0xe8 0x00 # CHECK: tne $7, $8, 885 -0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, 35889 +0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, -29647 0x8d 0x75 0x20 0x46 # CHECK: trunc.w.d $f22, $f14 0x0d 0xf7 0x00 0x46 # CHECK: trunc.w.s $f28, $f30 0x26 0x90 0x9e 0x00 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips2/valid-mips2.txt b/test/MC/Disassembler/Mips/mips2/valid-mips2.txt index a0b766a5dc1b..6158ea8ca026 100644 --- a/test/MC/Disassembler/Mips/mips2/valid-mips2.txt +++ b/test/MC/Disassembler/Mips/mips2/valid-mips2.txt @@ -72,14 +72,14 @@ 0x04 0xd0 0x14 0x9b # CHECK: bltzal $6, 21104 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x09 0x33 0x00 0x2a # CHECK: j 80478376 0x0b 0x2a 0xd1 0x44 # CHECK: j 212550928 diff --git a/test/MC/Disassembler/Mips/mips3/valid-mips3-el.txt b/test/MC/Disassembler/Mips/mips3/valid-mips3-el.txt index 6ffe7748e950..939b79668599 100644 --- a/test/MC/Disassembler/Mips/mips3/valid-mips3-el.txt +++ b/test/MC/Disassembler/Mips/mips3/valid-mips3-el.txt @@ -184,11 +184,11 @@ 0x22 0x98 0xd1 0xb9 # CHECK: swr $17, -26590($14) 0x34 0x00 0x03 0x00 # CHECK: teq $zero, $3 0x34 0x9b 0xa7 0x00 # CHECK: teq $5, $7, 620 -0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, 48032 +0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, -17504 0x30 0x00 0xea 0x00 # CHECK: tge $7, $10 0x30 0x55 0xb3 0x00 # CHECK: tge $5, $19, 340 0xa1 0x13 0x28 0x06 # CHECK: tgei $17, 5025 -0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, 36915 +0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, -28621 0x31 0x00 0xdc 0x02 # CHECK: tgeu $22, $gp 0xf1 0x5e 0x8e 0x02 # CHECK: tgeu $20, $14, 379 0x08 0x00 0x00 0x42 # CHECK: tlbp @@ -197,13 +197,13 @@ 0x06 0x00 0x00 0x42 # CHECK: tlbwr 0x32 0x00 0xed 0x01 # CHECK: tlt $15, $13 0x72 0x21 0x53 0x00 # CHECK: tlt $2, $19, 133 -0xbd 0xad 0xca 0x05 # CHECK: tlti $14, 44477 -0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, 60460 +0xbd 0xad 0xca 0x05 # CHECK: tlti $14, -21059 +0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, -5076 0x33 0x00 0x70 0x01 # CHECK: tltu $11, $16 0x33 0xfe 0x1d 0x02 # CHECK: tltu $16, $sp, 1016 0x36 0x00 0xd1 0x00 # CHECK: tne $6, $17 0x76 0xdd 0xe8 0x00 # CHECK: tne $7, $8, 885 -0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, 35889 +0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, -29647 0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23 0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31 0x8d 0x75 0x20 0x46 # CHECK: trunc.w.d $f22, $f14 diff --git a/test/MC/Disassembler/Mips/mips3/valid-mips3.txt b/test/MC/Disassembler/Mips/mips3/valid-mips3.txt index fb244e2f1543..4877280000f1 100644 --- a/test/MC/Disassembler/Mips/mips3/valid-mips3.txt +++ b/test/MC/Disassembler/Mips/mips3/valid-mips3.txt @@ -103,14 +103,14 @@ 0x04 0xd0 0x14 0x9b # CHECK: bltzal $6, 21104 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x09 0x33 0x00 0x2a # CHECK: j 80478376 0x0b 0x2a 0xd1 0x44 # CHECK: j 212550928 diff --git a/test/MC/Disassembler/Mips/mips32/valid-mips32.txt b/test/MC/Disassembler/Mips/mips32/valid-mips32.txt index f71b2a16fcfc..d86f9e518fae 100644 --- a/test/MC/Disassembler/Mips/mips32/valid-mips32.txt +++ b/test/MC/Disassembler/Mips/mips32/valid-mips32.txt @@ -105,14 +105,14 @@ 0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x08 0x00 0x01 0x4c # CHECK: j 1328 0x09 0x33 0x00 0x2a # CHECK: j 80478376 diff --git a/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt b/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt index acce76bcfddd..7ee4f4bf7fa8 100644 --- a/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt +++ b/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt @@ -110,15 +110,15 @@ 0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 0x07 0xdf 0xe8 0x07 # CHECK: synci -6137($fp) -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x08 0x00 0x01 0x4c # CHECK: j 1328 0x09 0x33 0x00 0x2a # CHECK: j 80478376 diff --git a/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt b/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt index 18dbd9ea7a40..8e5c16b4a337 100644 --- a/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt +++ b/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt @@ -107,15 +107,15 @@ 0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 0x07 0xdf 0xe8 0x07 # CHECK: synci -6137($fp) -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x08 0x00 0x01 0x4c # CHECK: j 1328 0x09 0x33 0x00 0x2a # CHECK: j 80478376 diff --git a/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt b/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt index 8b553cfab2cc..afe1b695dea5 100644 --- a/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt +++ b/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt @@ -107,15 +107,15 @@ 0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 0x07 0xdf 0xe8 0x07 # CHECK: synci -6137($fp) -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x08 0x00 0x01 0x4c # CHECK: j 1328 0x09 0x33 0x00 0x2a # CHECK: j 80478376 diff --git a/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6-el.txt b/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6-el.txt index 4164988b2b8f..34bfd769f2d3 100644 --- a/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6-el.txt +++ b/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6-el.txt @@ -7,8 +7,8 @@ 0xe9 0xff 0x62 0x3c # CHECK: aui $3, $2, -23 0xff 0xff 0x7e 0xec # CHECK: auipc $3, -1 0x9b 0x14 0x11 0x04 # CHECK: bal 21104 -0xb8 0x96 0x37 0xe8 # CHECK: balc 14572256 -0xb8 0x96 0x37 0xc8 # CHECK: bc 14572256 +0xb8 0x96 0x37 0xe8 # CHECK: balc 14572260 +0xb8 0x96 0x37 0xc8 # CHECK: bc 14572260 0x01 0x00 0x20 0x45 # CHECK: bc1eqz $f0, 8 0x01 0x00 0x3f 0x45 # CHECK: bc1eqz $f31, 8 0x01 0x00 0xa0 0x45 # CHECK: bc1nez $f0, 8 @@ -17,31 +17,44 @@ 0x02 0x00 0x3f 0x49 # CHECK: bc2eqz $31, 12 0x02 0x00 0xa0 0x49 # CHECK: bc2nez $0, 12 0x02 0x00 0xbf 0x49 # CHECK: bc2nez $31, 12 -0x40 0x00 0xa6 0x20 # CHECK: beqc $5, $6, 256 -0x4d 0x01 0x02 0x20 # CHECK: beqzalc $2, 1332 -0x40 0x00 0xa6 0x60 # CHECK: bnec $5, $6, 256 -0x4d 0x01 0x02 0x60 # CHECK: bnezalc $2, 1332 -0x90 0x46 0xa0 0xd8 # CHECK: beqzc $5, 72256 -0x40 0x00 0x43 0x58 # CHECK: bgec $2, $3, 256 -0x40 0x00 0x43 0x18 # CHECK: bgeuc $2, $3, 256 -0x4d 0x01 0x42 0x18 # CHECK: bgezalc $2, 1332 -0x90 0x46 0xa0 0xf8 # CHECK: bnezc $5, 72256 -0x40 0x00 0xa5 0x5c # CHECK: bltzc $5, 256 -0x40 0x00 0xa5 0x58 # CHECK: bgezc $5, 256 -0x4d 0x01 0x02 0x1c # CHECK: bgtzalc $2, 1332 -0x40 0x00 0x05 0x58 # CHECK: blezc $5, 256 -0x4d 0x01 0x42 0x1c # CHECK: bltzalc $2, 1332 -0x40 0x00 0x05 0x5c # CHECK: bgtzc $5, 256 +0x40 0x00 0xa6 0x20 # CHECK: beqc $5, $6, 260 +0x4d 0x01 0x02 0x20 # CHECK: beqzalc $2, 1336 +0x40 0x00 0xa6 0x60 # CHECK: bnec $5, $6, 260 +0xfa 0xff 0x43 0x60 # CHECK: bnec $2, $3, -20 +0x4d 0x01 0x02 0x60 # CHECK: bnezalc $2, 1336 +0x90 0x46 0xa0 0xd8 # CHECK: beqzc $5, 72260 +0x40 0x00 0x43 0x58 # CHECK: bgec $2, $3, 260 +0xfa 0xff 0x43 0x58 # CHECK: bgec $2, $3, -20 +0x40 0x00 0x43 0x18 # CHECK: bgeuc $2, $3, 260 +0xfa 0xff 0x43 0x18 # CHECK: bgeuc $2, $3, -20 +0x4d 0x01 0x42 0x18 # CHECK: bgezalc $2, 1336 +0xfa 0xff 0x42 0x18 # CHECK: bgezalc $2, -20 +0x90 0x46 0xa0 0xf8 # CHECK: bnezc $5, 72260 +0x40 0x00 0xa5 0x5c # CHECK: bltzc $5, 260 +0xfa 0xff 0xa5 0x5c # CHECK: bltzc $5, -20 +0x40 0x00 0xa5 0x58 # CHECK: bgezc $5, 260 +0xfa 0xff 0xa5 0x58 # CHECK: bgezc $5, -20 +0x4d 0x01 0x02 0x1c # CHECK: bgtzalc $2, 1336 +0xfa 0xff 0x02 0x1c # CHECK: bgtzalc $2, -20 +0x40 0x00 0x05 0x58 # CHECK: blezc $5, 260 +0xfa 0xff 0x05 0x58 # CHECK: blezc $5, -20 +0x4d 0x01 0x42 0x1c # CHECK: bltzalc $2, 1336 +0xfa 0xff 0x42 0x1c # CHECK: bltzalc $2, -20 +0x40 0x00 0x05 0x5c # CHECK: bgtzc $5, 260 +0xfa 0xff 0x05 0x5c # CHECK: bgtzc $5, -20 0x20 0x20 0x02 0x7c # CHECK: bitswap $4, $2 -0x4d 0x01 0x02 0x18 # CHECK: blezalc $2, 1332 -0x40 0x00 0xa6 0x5c # CHECK: bltc $5, $6, 256 -0x40 0x00 0xa6 0x1c # CHECK: bltuc $5, $6, 256 -0x01 0x00 0x00 0x60 # CHECK: bnvc $zero, $zero, 4 -0x01 0x00 0x40 0x60 # CHECK: bnvc $2, $zero, 4 -0x01 0x00 0x82 0x60 # CHECK: bnvc $4, $2, 4 -0x01 0x00 0x00 0x20 # CHECK: bovc $zero, $zero, 4 -0x01 0x00 0x40 0x20 # CHECK: bovc $2, $zero, 4 -0x01 0x00 0x82 0x20 # CHECK: bovc $4, $2, 4 +0x4d 0x01 0x02 0x18 # CHECK: blezalc $2, 1336 +0xfa 0xff 0x02 0x18 # CHECK: blezalc $2, -20 +0x40 0x00 0xa6 0x5c # CHECK: bltc $5, $6, 260 +0xfa 0xff 0xa6 0x5c # CHECK: bltc $5, $6, -20 +0x40 0x00 0xa6 0x1c # CHECK: bltuc $5, $6, 260 +0xfa 0xff 0xa6 0x1c # CHECK: bltuc $5, $6, -20 +0x01 0x00 0x00 0x60 # CHECK: bnvc $zero, $zero, 8 +0x01 0x00 0x40 0x60 # CHECK: bnvc $2, $zero, 8 +0x01 0x00 0x82 0x60 # CHECK: bnvc $4, $2, 8 +0x01 0x00 0x00 0x20 # CHECK: bovc $zero, $zero, 8 +0x01 0x00 0x40 0x20 # CHECK: bovc $2, $zero, 8 +0x01 0x00 0x82 0x20 # CHECK: bovc $4, $2, 8 0x80 0x18 0x84 0x46 # CHECK: cmp.af.s $f2, $f3, $f4 0x80 0x18 0xa4 0x46 # CHECK: cmp.af.d $f2, $f3, $f4 0x81 0x18 0x84 0x46 # CHECK: cmp.un.s $f2, $f3, $f4 @@ -117,8 +130,10 @@ 0x9b 0x20 0x00 0x46 # CHECK: class.s $f2, $f4 0x9b 0x20 0x20 0x46 # CHECK: class.d $f2, $f4 0x09 0x04 0x80 0x00 # CHECK: jr.hb $4 +0x00 0x00 0x1b 0xd8 # CHECK: jrc $27 0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x00 0x00 0x19 0xf8 # CHECK: jalrc $25 0xb6 0xb3 0x42 0x7e # CHECK: ll $2, -153($18) 0x26 0xec 0x6f 0x7e # CHECK: sc $15, -40($19) 0x51 0x58 0xa0 0x00 # CHECK: clo $11, $5 diff --git a/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6.txt b/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6.txt index 6af02fc61b86..7266848706d3 100644 --- a/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6.txt +++ b/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6.txt @@ -18,8 +18,10 @@ 0x00 0x64 0x10 0xda # CHECK: mod $2, $3, $4 0x00 0x64 0x10 0xdb # CHECK: modu $2, $3, $4 0x00 0x80 0x04 0x09 # CHECK: jr.hb $4 +0xd8 0x1b 0x00 0x00 # CHECK: jrc $27 0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0xf8 0x19 0x00 0x00 # CHECK: jalrc $25 0x00 0xa0 0x58 0x51 # CHECK: clo $11, $5 0x00 0xa7 0x9b 0x34 # CHECK: teq $5, $7, 620 0x00 0xb3 0x55 0x30 # CHECK: tge $5, $19, 340 @@ -33,22 +35,28 @@ 0x02 0xdc 0x00 0x31 # CHECK: tgeu $22, $gp 0x03 0x80 0xe8 0x50 # CHECK: clz $sp, $gp 0x04 0x11 0x14 0x9b # CHECK: bal 21104 -# FIXME: The encode/decode functions are not inverses of each other. -0x18 0x02 0x01 0x4d # CHECK: blezalc $2, 1332 -# FIXME: The encode/decode functions are not inverses of each other. -0x18 0x42 0x01 0x4d # CHECK: bgezalc $2, 1332 -0x18 0x43 0x00 0x40 # CHECK: bgeuc $2, $3, 256 -# FIXME: The encode/decode functions are not inverses of each other. -0x1c 0x02 0x01 0x4d # CHECK: bgtzalc $2, 1332 -# FIXME: The encode/decode functions are not inverses of each other. -0x1c 0x42 0x01 0x4d # CHECK: bltzalc $2, 1332 -0x1c 0xa6 0x00 0x40 # CHECK: bltuc $5, $6, 256 -0x20 0x00 0x00 0x01 # CHECK: bovc $zero, $zero, 4 -# FIXME: The encode/decode functions are not inverses of each other. -0x20 0x02 0x01 0x4d # CHECK: beqzalc $2, 1332 -0x20 0x40 0x00 0x01 # CHECK: bovc $2, $zero, 4 -0x20 0x82 0x00 0x01 # CHECK: bovc $4, $2, 4 -0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 256 +# The encode/decode functions are not inverses of each other. +0x18 0x02 0x01 0x4d # CHECK: blezalc $2, 1336 +0x18 0x02 0xff 0xfa # CHECk: blezalc $2, -20 +# The encode/decode functions are not inverses of each other in the immediate case. +0x18 0x42 0x01 0x4d # CHECK: bgezalc $2, 1336 +0x18 0x42 0xff 0xfa # CHECK: bgezalc $2, -20 +0x18 0x43 0x00 0x40 # CHECK: bgeuc $2, $3, 260 +0x18 0x43 0xff 0xfa # CHECK: bgeuc $2, $3, -20 +# The encode/decode functions are not inverses of each other in the immediate case. +0x1c 0x02 0x01 0x4d # CHECK: bgtzalc $2, 1336 +0x1c 0x02 0xff 0xfa # CHECK: bgtzalc $2, -20 +# The encode/decode functions are not inverses of each other in the immediate case. +0x1c 0x42 0x01 0x4d # CHECK: bltzalc $2, 1336 +0x1c 0x42 0xff 0xfa # CHECK: bltzalc $2, -20 +0x1c 0xa6 0x00 0x40 # CHECK: bltuc $5, $6, 260 +0x1c 0xa6 0xff 0xfa # CHECK: bltuc $5, $6, -20 +0x20 0x00 0x00 0x01 # CHECK: bovc $zero, $zero, 8 +# The encode/decode functions are not inverses of each other in the immediate case. +0x20 0x02 0x01 0x4d # CHECK: beqzalc $2, 1336 +0x20 0x40 0x00 0x01 # CHECK: bovc $2, $zero, 8 +0x20 0x82 0x00 0x01 # CHECK: bovc $4, $2, 8 +0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 260 0x25 0x29 0x00 0x0a # CHECK: addiu $9, $9, 10 0x30 0x42 0x00 0x04 # CHECK: andi $2, $2, 4 0x34 0x42 0x00 0x04 # CHECK: ori $2, $2, 4 @@ -143,32 +151,41 @@ 0x49 0xbf 0x00 0x02 # CHECK: bc2nez $31, 12 0x49 0xc8 0x0d 0x43 # CHECK: ldc2 $8, -701($1) 0x49 0xf4 0x92 0x75 # CHECK: sdc2 $20, 629($18) -0x58 0x05 0x00 0x40 # CHECK: blezc $5, 256 -0x58 0x43 0x00 0x40 # CHECK: bgec $2, $3, 256 -0x58 0xa5 0x00 0x40 # CHECK: bgezc $5, 256 -0x5c 0x05 0x00 0x40 # CHECK: bgtzc $5, 256 -0x5c 0xa5 0x00 0x40 # CHECK: bltzc $5, 256 -0x5c 0xa6 0x00 0x40 # CHECK: bltc $5, $6, 256 -0x60 0x00 0x00 0x01 # CHECK: bnvc $zero, $zero, 4 -# FIXME: The encode/decode functions are not inverses of each other. -0x60 0x02 0x01 0x4d # CHECK: bnezalc $2, 1332 -0x60 0x40 0x00 0x01 # CHECK: bnvc $2, $zero, 4 -0x60 0x82 0x00 0x01 # CHECK: bnvc $4, $2, 4 -0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 256 +0x58 0x05 0x00 0x40 # CHECK: blezc $5, 260 +0x58 0x05 0xff 0xfa # CHECk: blezc $5, -20 +0x58 0x43 0x00 0x40 # CHECK: bgec $2, $3, 260 +0x58 0x43 0xff 0xfa # CHECK: bgec $2, $3, -20 +0x58 0xa5 0x00 0x40 # CHECK: bgezc $5, 260 +0x58 0xa5 0xff 0xfa # CHECK: bgezc $5, -20 +0x5c 0x05 0x00 0x40 # CHECK: bgtzc $5, 260 +0x5c 0x05 0xff 0xfa # CHECk: bgtzc $5, -20 +0x5c 0xa5 0x00 0x40 # CHECK: bltzc $5, 260 +0x5c 0xa5 0xff 0xfa # CHECK: bltzc $5, -20 +0x5c 0xa6 0x00 0x40 # CHECK: bltc $5, $6, 260 +0x5c 0xa6 0xff 0xfa # CHECK: bltc $5, $6, -20 +0x60 0x00 0x00 0x01 # CHECK: bnvc $zero, $zero, 8 +# The encode/decode functions are not inverses of each other in the immediate case. +0x60 0x02 0x01 0x4d # CHECK: bnezalc $2, 1336 +0x60 0x40 0x00 0x01 # CHECK: bnvc $2, $zero, 8 +0x60 0x82 0x00 0x01 # CHECK: bnvc $4, $2, 8 +0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 260 +0x60 0x43 0xff 0xfa # CHECK: bnec $2, $3, -20 0x7c 0x02 0x20 0x20 # CHECK: bitswap $4, $2 0x7c 0x43 0x22 0xa0 # CHECK: align $4, $2, $3, 2 0x7c 0xa1 0x04 0x25 # CHECK: cache 1, 8($5) 0x7c 0xa1 0x04 0x35 # CHECK: pref 1, 8($5) 0x7e 0x42 0xb3 0xb6 # CHECK: ll $2, -153($18) 0x7e 0x6f 0xec 0x26 # CHECK: sc $15, -40($19) -0xc8 0x37 0x96 0xb8 # CHECK: bc 14572256 +0xc8 0x37 0x96 0xb8 # CHECK: bc 14572260 0xd8 0x05 0x01 0x00 # CHECK: jic $5, 256 -0xd8 0xa0 0x46 0x90 # CHECK: beqzc $5, 72256 -0xe8 0x37 0x96 0xb8 # CHECK: balc 14572256 +0xd8 0xa0 0x46 0x90 # CHECK: beqzc $5, 72260 +0xd8 0x5f 0xff 0xfa # CHECK: beqzc $2, -20 +0xe8 0x37 0x96 0xb8 # CHECK: balc 14572260 0xec 0x48 0x00 0x43 # CHECK: lwpc $2, 268 0xec 0x50 0x00 0x43 # CHECK: lwupc $2, 268 0xec 0x7e 0xff 0xff # CHECK: auipc $3, -1 0xec 0x7f 0x00 0x38 # CHECK: aluipc $3, 56 0xec 0x80 0x00 0x19 # CHECK: addiupc $4, 100 0xf8 0x05 0x01 0x00 # CHECK: jialc $5, 256 -0xf8 0xa0 0x46 0x90 # CHECK: bnezc $5, 72256 +0xf8 0xa0 0x46 0x90 # CHECK: bnezc $5, 72260 +0xf8 0x5f 0xff 0xfa # CHECK: bnezc $2, -20 diff --git a/test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt b/test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt index 1d1044d32055..4a3d78cde553 100644 --- a/test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt +++ b/test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt @@ -204,11 +204,11 @@ 0x08 0x98 0x4c 0x4f # CHECK: swxc1 $f19, $12($26) 0x34 0x00 0x03 0x00 # CHECK: teq $zero, $3 0x34 0x9b 0xa7 0x00 # CHECK: teq $5, $7, 620 -0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, 48032 +0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, -17504 0x30 0x00 0xea 0x00 # CHECK: tge $7, $10 0x30 0x55 0xb3 0x00 # CHECK: tge $5, $19, 340 0xa1 0x13 0x28 0x06 # CHECK: tgei $17, 5025 -0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, 36915 +0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, -28621 0x31 0x00 0xdc 0x02 # CHECK: tgeu $22, $gp 0xf1 0x5e 0x8e 0x02 # CHECK: tgeu $20, $14, 379 0x08 0x00 0x00 0x42 # CHECK: tlbp @@ -217,13 +217,13 @@ 0x06 0x00 0x00 0x42 # CHECK: tlbwr 0x32 0x00 0xed 0x01 # CHECK: tlt $15, $13 0x72 0x21 0x53 0x00 # CHECK: tlt $2, $19, 133 -0xbd 0xad 0xca 0x05 # CHECK: tlti $14, 44477 -0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, 60460 +0xbd 0xad 0xca 0x05 # CHECK: tlti $14, -21059 +0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, -5076 0x33 0x00 0x70 0x01 # CHECK: tltu $11, $16 0x33 0xfe 0x1d 0x02 # CHECK: tltu $16, $sp, 1016 0x36 0x00 0xd1 0x00 # CHECK: tne $6, $17 0x76 0xdd 0xe8 0x00 # CHECK: tne $7, $8, 885 -0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, 35889 +0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, -29647 0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23 0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31 0x8d 0x75 0x20 0x46 # CHECK: trunc.w.d $f22, $f14 diff --git a/test/MC/Disassembler/Mips/mips4/valid-mips4.txt b/test/MC/Disassembler/Mips/mips4/valid-mips4.txt index 47ab90809ec6..f225d2cc220d 100644 --- a/test/MC/Disassembler/Mips/mips4/valid-mips4.txt +++ b/test/MC/Disassembler/Mips/mips4/valid-mips4.txt @@ -107,14 +107,14 @@ 0x04 0xd0 0x14 0x9b # CHECK: bltzal $6, 21104 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x09 0x33 0x00 0x2a # CHECK: j 80478376 0x0b 0x2a 0xd1 0x44 # CHECK: j 212550928 diff --git a/test/MC/Disassembler/Mips/mips64/valid-mips64.txt b/test/MC/Disassembler/Mips/mips64/valid-mips64.txt index 2ba1ecdf5b8e..5b5427db1e10 100644 --- a/test/MC/Disassembler/Mips/mips64/valid-mips64.txt +++ b/test/MC/Disassembler/Mips/mips64/valid-mips64.txt @@ -147,14 +147,14 @@ 0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x08 0x00 0x01 0x4c # CHECK: j 1328 0x09 0x33 0x00 0x2a # CHECK: j 80478376 diff --git a/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt b/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt index ac9d2b808622..5de751234c81 100644 --- a/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt +++ b/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt @@ -161,14 +161,14 @@ 0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x08 0x00 0x01 0x4c # CHECK: j 1328 0x09 0x33 0x00 0x2a # CHECK: j 80478376 diff --git a/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt b/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt index 31b9f66bce12..01c02ad82224 100644 --- a/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt +++ b/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt @@ -158,14 +158,14 @@ 0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x08 0x00 0x01 0x4c # CHECK: j 1328 0x09 0x33 0x00 0x2a # CHECK: j 80478376 diff --git a/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt b/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt index 1fa0e629b375..12e5294d36da 100644 --- a/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt +++ b/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt @@ -158,14 +158,14 @@ 0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 -0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, -29647 0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 -0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, -21059 0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 -0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 -0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 -0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, -17504 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, -28621 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, -5076 0x08 0x00 0x00 0x01 # CHECK: j 4 0x08 0x00 0x01 0x4c # CHECK: j 1328 0x09 0x33 0x00 0x2a # CHECK: j 80478376 diff --git a/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt b/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt index 08f5e04ab4fa..2515e097c96a 100644 --- a/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt +++ b/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt @@ -7,8 +7,8 @@ 0xe9 0xff 0x62 0x3c # CHECK: aui $3, $2, -23 0xff 0xff 0x7e 0xec # CHECK: auipc $3, -1 0x9b 0x14 0x11 0x04 # CHECK: bal 21104 -0xb8 0x96 0x37 0xe8 # CHECK: balc 14572256 -0xb8 0x96 0x37 0xc8 # CHECK: bc 14572256 +0xb8 0x96 0x37 0xe8 # CHECK: balc 14572260 +0xb8 0x96 0x37 0xc8 # CHECK: bc 14572260 0x01 0x00 0x20 0x45 # CHECK: bc1eqz $f0, 8 0x01 0x00 0x3f 0x45 # CHECK: bc1eqz $f31, 8 0x01 0x00 0xa0 0x45 # CHECK: bc1nez $f0, 8 @@ -17,31 +17,46 @@ 0x02 0x00 0x3f 0x49 # CHECK: bc2eqz $31, 12 0x02 0x00 0xa0 0x49 # CHECK: bc2nez $0, 12 0x02 0x00 0xbf 0x49 # CHECK: bc2nez $31, 12 -0x40 0x00 0xa6 0x20 # CHECK: beqc $5, $6, 256 -0x4d 0x01 0x02 0x20 # CHECK: beqzalc $2, 1332 -0x90 0x46 0xa0 0xd8 # CHECK: beqzc $5, 72256 -0x40 0x00 0x43 0x58 # CHECK: bgec $2, $3, 256 -0x40 0x00 0x43 0x18 # CHECK: bgeuc $2, $3, 256 -0x4d 0x01 0x42 0x18 # CHECK: bgezalc $2, 1332 -0x40 0x00 0xa5 0x58 # CHECK: bgezc $5, 256 -0x4d 0x01 0x02 0x1c # CHECK: bgtzalc $2, 1332 -0x40 0x00 0x05 0x5c # CHECK: bgtzc $5, 256 +0x40 0x00 0xa6 0x20 # CHECK: beqc $5, $6, 260 +0x4d 0x01 0x02 0x20 # CHECK: beqzalc $2, 1336 +0x90 0x46 0xa0 0xd8 # CHECK: beqzc $5, 72260 +0xfa 0xff 0x5f 0xd8 # CHECK: beqzc $2, -20 +0x40 0x00 0x43 0x58 # CHECK: bgec $2, $3, 260 +0xfa 0xff 0x43 0x58 # CHECK: bgec $2, $3, -20 +0x40 0x00 0x43 0x18 # CHECK: bgeuc $2, $3, 260 +0xfa 0xff 0x43 0x18 # CHECK: bgeuc $2, $3, -20 +0x4d 0x01 0x42 0x18 # CHECK: bgezalc $2, 1336 +0xfa 0xff 0x42 0x18 # CHECK: bgezalc $2, -20 +0x40 0x00 0xa5 0x58 # CHECK: bgezc $5, 260 +0xfa 0xff 0xa5 0x58 # CHECK: bgezc $5, -20 +0x4d 0x01 0x02 0x1c # CHECK: bgtzalc $2, 1336 +0xfa 0xff 0x02 0x1c # CHECK: bgtzalc $2, -20 +0x40 0x00 0x05 0x5c # CHECK: bgtzc $5, 260 +0xfa 0xff 0x05 0x5c # CHECK: bgtzc $5, -20 0x20 0x20 0x02 0x7c # CHECK: bitswap $4, $2 -0x4d 0x01 0x02 0x18 # CHECK: blezalc $2, 1332 -0x40 0x00 0x05 0x58 # CHECK: blezc $5, 256 -0x40 0x00 0xa6 0x5c # CHECK: bltc $5, $6, 256 -0x40 0x00 0xa6 0x1c # CHECK: bltuc $5, $6, 256 -0x4d 0x01 0x42 0x1c # CHECK: bltzalc $2, 1332 -0x40 0x00 0xa5 0x5c # CHECK: bltzc $5, 256 -0x40 0x00 0xa6 0x60 # CHECK: bnec $5, $6, 256 -0x4d 0x01 0x02 0x60 # CHECK: bnezalc $2, 1332 -0x90 0x46 0xa0 0xf8 # CHECK: bnezc $5, 72256 -0x01 0x00 0x40 0x60 # CHECK: bnvc $2, $zero, 4 -0x01 0x00 0x82 0x60 # CHECK: bnvc $4, $2, 4 -0x01 0x00 0x00 0x60 # CHECK: bnvc $zero, $zero, 4 -0x01 0x00 0x40 0x20 # CHECK: bovc $2, $zero, 4 -0x01 0x00 0x82 0x20 # CHECK: bovc $4, $2, 4 -0x01 0x00 0x00 0x20 # CHECK: bovc $zero, $zero, 4 +0x4d 0x01 0x02 0x18 # CHECK: blezalc $2, 1336 +0xfa 0xff 0x02 0x18 # CHECK: blezalc $2, -20 +0x40 0x00 0x05 0x58 # CHECK: blezc $5, 260 +0xfa 0xff 0x05 0x58 # CHECK: blezc $5, -20 +0x40 0x00 0xa6 0x5c # CHECK: bltc $5, $6, 260 +0xfa 0xff 0xa6 0x5c # CHECK: bltc $5, $6, -20 +0x40 0x00 0xa6 0x1c # CHECK: bltuc $5, $6, 260 +0xfa 0xff 0xa6 0x1c # CHECK: bltuc $5, $6, -20 +0x4d 0x01 0x42 0x1c # CHECK: bltzalc $2, 1336 +0xfa 0xff 0x42 0x1c # CHECK: bltzalc $2, -20 +0x40 0x00 0xa5 0x5c # CHECK: bltzc $5, 260 +0xfa 0xff 0xa5 0x5c # CHECK: bltzc $5, -20 +0x40 0x00 0xa6 0x60 # CHECK: bnec $5, $6, 260 +0xfa 0xff 0x43 0x60 # CHECK: bnec $2, $3, -20 +0x4d 0x01 0x02 0x60 # CHECK: bnezalc $2, 1336 +0x90 0x46 0xa0 0xf8 # CHECK: bnezc $5, 72260 +0xfa 0xff 0x5f 0xf8 # CHECK: bnezc $2, -20 +0x01 0x00 0x40 0x60 # CHECK: bnvc $2, $zero, 8 +0x01 0x00 0x82 0x60 # CHECK: bnvc $4, $2, 8 +0x01 0x00 0x00 0x60 # CHECK: bnvc $zero, $zero, 8 +0x01 0x00 0x40 0x20 # CHECK: bovc $2, $zero, 8 +0x01 0x00 0x82 0x20 # CHECK: bovc $4, $2, 8 +0x01 0x00 0x00 0x20 # CHECK: bovc $zero, $zero, 8 0x25 0x04 0xa1 0x7c # CHECK: cache 1, 8($5) 0x9b 0x20 0x20 0x46 # CHECK: class.d $f2, $f4 0x9b 0x20 0x00 0x46 # CHECK: class.s $f2, $f4 @@ -104,8 +119,10 @@ 0x20 0x60 0x6e 0x41 # CHECK: ei $14 0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x00 0x00 0x19 0xf8 # CHECK: jalrc $25 0x00 0x01 0x05 0xf8 # CHECK: jialc $5, 256 0x00 0x01 0x05 0xd8 # CHECK: jic $5, 256 +0x00 0x00 0x1b 0xd8 # CHECK: jrc $27 0x09 0x04 0x80 0x00 # CHECK: jr.hb $4 0x43 0x0d 0xc8 0x49 # CHECK: ldc2 $8, -701($1) 0x48 0x3c 0x58 0xec # CHECK: ldpc $2, 123456 diff --git a/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt b/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt index 7fa27a7c5420..3c3750a9fed2 100644 --- a/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt +++ b/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt @@ -29,8 +29,10 @@ 0x00 0x64 0x10 0xde # CHECK: dmod $2, $3, $4 0x00 0x64 0x10 0xdf # CHECK: dmodu $2, $3, $4 0x00 0x80 0x04 0x09 # CHECK: jr.hb $4 +0xd8 0x1b 0x00 0x00 # CHECK: jrc $27 0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0xf8 0x19 0x00 0x00 # CHECK: jalrc $25 0x00 0xa0 0x58 0x51 # CHECK: clo $11, $5 0x00 0xa7 0x9b 0x34 # CHECK: teq $5, $7, 620 0x00 0xb3 0x55 0x30 # CHECK: tge $5, $19, 340 @@ -50,22 +52,28 @@ 0x04 0x11 0x14 0x9b # CHECK: bal 21104 0x04 0x66 0x56 0x78 # CHECK: dahi $3, 22136 0x04 0x7e 0xab 0xcd # CHECK: dati $3, -21555 -# FIXME: The encode/decode functions are not inverses of each other. -0x18 0x02 0x01 0x4d # CHECK: blezalc $2, 1332 -# FIXME: The encode/decode functions are not inverses of each other. -0x18 0x42 0x01 0x4d # CHECK: bgezalc $2, 1332 -0x18 0x43 0x00 0x40 # CHECK: bgeuc $2, $3, 256 -# FIXME: The encode/decode functions are not inverses of each other. -0x1c 0x02 0x01 0x4d # CHECK: bgtzalc $2, 1332 -# FIXME: The encode/decode functions are not inverses of each other. -0x1c 0x42 0x01 0x4d # CHECK: bltzalc $2, 1332 -0x1c 0xa6 0x00 0x40 # CHECK: bltuc $5, $6, 256 -0x20 0x00 0x00 0x01 # CHECK: bovc $zero, $zero, 4 -# FIXME: The encode/decode functions are not inverses of each other. -0x20 0x02 0x01 0x4d # CHECK: beqzalc $2, 1332 -0x20 0x40 0x00 0x01 # CHECK: bovc $2, $zero, 4 -0x20 0x82 0x00 0x01 # CHECK: bovc $4, $2, 4 -0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 256 +# The encode/decode functions are not inverses of each other in the immediate case. +0x18 0x02 0x01 0x4d # CHECK: blezalc $2, 1336 +0x18 0x02 0xff 0xfa # CHECk: blezalc $2, -20 +# The encode/decode functions are not inverses of each other in the immediate case. +0x18 0x42 0x01 0x4d # CHECK: bgezalc $2, 1336 +0x18 0x42 0xff 0xfa # CHECK: bgezalc $2, -20 +0x18 0x43 0x00 0x40 # CHECK: bgeuc $2, $3, 260 +0x18 0x43 0xff 0xfa # CHECK: bgeuc $2, $3, -20 +# The encode/decode functions are not inverses of each other in the immediate case. +0x1c 0x02 0x01 0x4d # CHECK: bgtzalc $2, 1336 +0x1c 0x02 0xff 0xfa # CHECK: bgtzalc $2, -20 +# The encode/decode functions are not inverses of each other in the immediate case. +0x1c 0x42 0x01 0x4d # CHECK: bltzalc $2, 1336 +0x1c 0x42 0xff 0xfa # CHECK: bltzalc $2, -20 +0x1c 0xa6 0x00 0x40 # CHECK: bltuc $5, $6, 260 +0x1c 0xa6 0xff 0xfa # CHECK: bltuc $5, $6, -20 +0x20 0x00 0x00 0x01 # CHECK: bovc $zero, $zero, 8 +# The encode/decode functions are not inverses of each other in the immediate case. +0x20 0x02 0x01 0x4d # CHECK: beqzalc $2, 1336 +0x20 0x40 0x00 0x01 # CHECK: bovc $2, $zero, 8 +0x20 0x82 0x00 0x01 # CHECK: bovc $4, $2, 8 +0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 260 0x25 0x29 0x00 0x0a # CHECK: addiu $9, $9, 10 0x30 0x42 0x00 0x04 # CHECK: andi $2, $2, 4 0x34 0x42 0x00 0x04 # CHECK: ori $2, $2, 4 @@ -162,18 +170,25 @@ 0x49 0xbf 0x00 0x02 # CHECK: bc2nez $31, 12 0x49 0xc8 0x0d 0x43 # CHECK: ldc2 $8, -701($1) 0x49 0xf4 0x92 0x75 # CHECK: sdc2 $20, 629($18) -0x58 0x05 0x00 0x40 # CHECK: blezc $5, 256 -0x58 0x43 0x00 0x40 # CHECK: bgec $2, $3, 256 -0x58 0xa5 0x00 0x40 # CHECK: bgezc $5, 256 -0x5c 0x05 0x00 0x40 # CHECK: bgtzc $5, 256 -0x5c 0xa5 0x00 0x40 # CHECK: bltzc $5, 256 -0x5c 0xa6 0x00 0x40 # CHECK: bltc $5, $6, 256 -0x60 0x00 0x00 0x01 # CHECK: bnvc $zero, $zero, 4 -# FIXME: The encode/decode functions are not inverses of each other. -0x60 0x02 0x01 0x4d # CHECK: bnezalc $2, 1332 -0x60 0x40 0x00 0x01 # CHECK: bnvc $2, $zero, 4 -0x60 0x82 0x00 0x01 # CHECK: bnvc $4, $2, 4 -0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 256 +0x58 0x05 0x00 0x40 # CHECK: blezc $5, 260 +0x58 0x05 0xff 0xfa # CHECk: blezc $5, -20 +0x58 0x43 0x00 0x40 # CHECK: bgec $2, $3, 260 +0x58 0x43 0xff 0xfa # CHECK: bgec $2, $3, -20 +0x58 0xa5 0x00 0x40 # CHECK: bgezc $5, 260 +0x58 0xa5 0xff 0xfa # CHECK: bgezc $5, -20 +0x5c 0x05 0x00 0x40 # CHECK: bgtzc $5, 260 +0x5c 0x05 0xff 0xfa # CHECk: bgtzc $5, -20 +0x5c 0xa5 0x00 0x40 # CHECK: bltzc $5, 260 +0x5c 0xa5 0xff 0xfa # CHECK: bltzc $5, -20 +0x5c 0xa6 0x00 0x40 # CHECK: bltc $5, $6, 260 +0x5c 0xa6 0xff 0xfa # CHECK: bltc $5, $6, -20 +0x60 0x00 0x00 0x01 # CHECK: bnvc $zero, $zero, 8 +# The encode/decode functions are not inverses of each other in the immediate case. +0x60 0x02 0x01 0x4d # CHECK: bnezalc $2, 1336 +0x60 0x40 0x00 0x01 # CHECK: bnvc $2, $zero, 8 +0x60 0x82 0x00 0x01 # CHECK: bnvc $4, $2, 8 +0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 260 +0x60 0x43 0xff 0xfa # CHECK: bnec $2, $3, -20 0x74 0x62 0x12 0x34 # CHECK: daui $3, $2, 4660 0x7c 0x02 0x20 0x20 # CHECK: bitswap $4, $2 0x7c 0x02 0x20 0x24 # CHECK: dbitswap $4, $2 @@ -185,10 +200,11 @@ 0x7e 0x6f 0xec 0x26 # CHECK: sc $15, -40($19) 0x7f 0xaf 0xe6 0xa7 # CHECK: scd $15, -51($sp) 0x7f 0xe0 0x38 0x37 # CHECK: lld $zero, 112($ra) -0xc8 0x37 0x96 0xb8 # CHECK: bc 14572256 +0xc8 0x37 0x96 0xb8 # CHECK: bc 14572260 0xd8 0x05 0x01 0x00 # CHECK: jic $5, 256 -0xd8 0xa0 0x46 0x90 # CHECK: beqzc $5, 72256 -0xe8 0x37 0x96 0xb8 # CHECK: balc 14572256 +0xd8 0xa0 0x46 0x90 # CHECK: beqzc $5, 72260 +0xd8 0x5f 0xff 0xfa # CHECK: beqzc $2, -20 +0xe8 0x37 0x96 0xb8 # CHECK: balc 14572260 0xec 0x48 0x00 0x43 # CHECK: lwpc $2, 268 0xec 0x50 0x00 0x43 # CHECK: lwupc $2, 268 0xec 0x58 0x3c 0x48 # CHECK: ldpc $2, 123456 @@ -196,4 +212,5 @@ 0xec 0x7f 0x00 0x38 # CHECK: aluipc $3, 56 0xec 0x80 0x00 0x19 # CHECK: addiupc $4, 100 0xf8 0x05 0x01 0x00 # CHECK: jialc $5, 256 -0xf8 0xa0 0x46 0x90 # CHECK: bnezc $5, 72256 +0xf8 0xa0 0x46 0x90 # CHECK: bnezc $5, 72260 +0xf8 0x5f 0xff 0xfa # CHECK: bnezc $2, -20 diff --git a/test/MC/Disassembler/Mips/mips64r6/valid-xfail-mips64r6.txt b/test/MC/Disassembler/Mips/mips64r6/valid-xfail-mips64r6.txt index 8ca8b815414c..3fa9fec50637 100644 --- a/test/MC/Disassembler/Mips/mips64r6/valid-xfail-mips64r6.txt +++ b/test/MC/Disassembler/Mips/mips64r6/valid-xfail-mips64r6.txt @@ -3,16 +3,16 @@ # # RUN: llvm-mc %s -disassemble -triple=mips-unknown-linux -mcpu=mips64r6 | FileCheck %s # XFAIL: * -0x20 0x40 0x00 0x01 # CHECK: bovc $0, $2, 4 -0x20 0x82 0x00 0x01 # CHECK: bovc $2, $4, 4 -0x60 0x40 0x00 0x01 # CHECK: bnvc $0, $2, 4 -0x60 0x82 0x00 0x01 # CHECK: bnvc $2, $4, 4 -0x20 0xc0 0x00 0x40 # CHECK: beqc $6, $zero, 256 -0x20 0xa0 0x00 0x40 # CHECK: beqc $5, $zero, 256 -0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 256 -0x60 0xc0 0x00 0x40 # CHECK: bnec $6, $zero, 256 -0x60 0xa0 0x00 0x40 # CHECK: bnec $5, $zero, 256 -0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 256 +0x20 0x40 0x00 0x01 # CHECK: bovc $0, $2, 8 +0x20 0x82 0x00 0x01 # CHECK: bovc $2, $4, 8 +0x60 0x40 0x00 0x01 # CHECK: bnvc $0, $2, 8 +0x60 0x82 0x00 0x01 # CHECK: bnvc $2, $4, 8 +0x20 0xc0 0x00 0x40 # CHECK: beqc $6, $zero, 260 +0x20 0xa0 0x00 0x40 # CHECK: beqc $5, $zero, 260 +0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 260 +0x60 0xc0 0x00 0x40 # CHECK: bnec $6, $zero, 260 +0x60 0xa0 0x00 0x40 # CHECK: bnec $5, $zero, 260 +0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 260 0x64 0x58 0x46 0x9f # CHECK: daddiu $24, $2, 18079 0x66 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 0x65 0x6f 0xec 0x5f # CHECK: daddiu $15, $11, -5025 diff --git a/test/MC/Disassembler/PowerPC/ppc64-encoding-bookII.txt b/test/MC/Disassembler/PowerPC/ppc64-encoding-bookII.txt index 480681c67f1d..4f62c782fd7c 100644 --- a/test/MC/Disassembler/PowerPC/ppc64-encoding-bookII.txt +++ b/test/MC/Disassembler/PowerPC/ppc64-encoding-bookII.txt @@ -33,6 +33,12 @@ # CHECK: stdcx. 2, 3, 4 0x7c 0x43 0x21 0xad +# CHECK: stwat 2, 3, 28 +0x7c 0x43 0xe5 0x8c + +# CHECK: stdat 2, 3, 28 +0x7c 0x43 0xe5 0xcc + # CHECK: ptesync 0x7c 0x40 0x04 0xac @@ -72,6 +78,12 @@ # CHECK: ldarx 2, 3, 4, 1 0x7c 0x43 0x20 0xa9 +# CHECK: lwat 2, 3, 28 +0x7c 0x43 0xe4 0x8c + +# CHECK: ldat 2, 3, 28 +0x7c 0x43 0xe4 0xcc + # CHECK: sync 0x7c 0x00 0x04 0xac diff --git a/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt b/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt index 16ff14c794d6..b2b497658748 100644 --- a/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt +++ b/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt @@ -672,3 +672,207 @@ # CHECK: mfvscr 2 0x10 0x40 0x06 0x04 +# Power9 instructions + +# CHECK: vcmpneb 2, 3, 4 +0x10 0x43 0x20 0x07 + +# CHECK: vcmpneb. 2, 3, 4 +0x10 0x43 0x24 0x07 + +# CHECK: vcmpnezb 2, 3, 4 +0x10 0x43 0x21 0x07 + +# CHECK: vcmpnezb. 2, 3, 4 +0x10 0x43 0x25 0x07 + +# CHECK: vcmpneh 2, 3, 4 +0x10 0x43 0x20 0x47 + +# CHECK: vcmpneh. 2, 3, 4 +0x10 0x43 0x24 0x47 + +# CHECK: vcmpnezh 2, 3, 4 +0x10 0x43 0x21 0x47 + +# CHECK: vcmpnezh. 2, 3, 4 +0x10 0x43 0x25 0x47 + +# CHECK: vcmpnew 2, 3, 4 +0x10 0x43 0x20 0x87 + +# CHECK: vcmpnew. 2, 3, 4 +0x10 0x43 0x24 0x87 + +# CHECK: vcmpnezw 2, 3, 4 +0x10 0x43 0x21 0x87 + +# CHECK: vcmpnezw. 2, 3, 4 +0x10 0x43 0x25 0x87 + +# CHECK: vextractub 2, 3, 15 +0x10 0x4f 0x1a 0x0d + +# CHECK: vextractuh 2, 3, 14 +0x10 0x4e 0x1a 0x4d + +# CHECK: vextractuw 2, 3, 12 +0x10 0x4c 0x1a 0x8d + +# CHECK: vextractd 2, 3, 8 +0x10 0x48 0x1a 0xcd + +# CHECK: vextublx 2, 3, 4 +0x10 0x43 0x26 0x0d + +# CHECK: vextubrx 2, 3, 4 +0x10 0x43 0x27 0x0d + +# CHECK: vextuhlx 2, 3, 4 +0x10 0x43 0x26 0x4d + +# CHECK: vextuhrx 2, 3, 4 +0x10 0x43 0x27 0x4d + +# CHECK: vextuwlx 2, 3, 4 +0x10 0x43 0x26 0x8d + +# CHECK: vextuwrx 2, 3, 4 +0x10 0x43 0x27 0x8d + +# CHECK: vinsertb 2, 3, 15 +0x10 0x4f 0x1b 0x0d + +# CHECK: vinserth 2, 3, 14 +0x10 0x4e 0x1b 0x4d + +# CHECK: vinsertw 2, 3, 12 +0x10 0x4c 0x1b 0x8d + +# CHECK: vinsertd 2, 3, 8 +0x10 0x48 0x1b 0xcd + +# Power9 instructions + +# CHECK: vclzlsbb 2, 3 +0x10 0x40 0x1e 0x02 + +# CHECK: vctzlsbb 2, 3 +0x10 0x41 0x1e 0x02 + +# CHECK: vctzb 2, 3 +0x10 0x5c 0x1e 0x02 + +# CHECK: vctzh 2, 3 +0x10 0x5d 0x1e 0x02 + +# CHECK: vctzw 2, 3 +0x10 0x5e 0x1e 0x02 + +# CHECK: vctzd 2, 3 +0x10 0x5f 0x1e 0x02 + +# CHECK: vextsb2w 2, 3 +0x10 0x50 0x1e 0x02 + +# CHECK: vextsh2w 2, 3 +0x10 0x51 0x1e 0x02 + +# CHECK: vextsb2d 2, 3 +0x10 0x58 0x1e 0x02 + +# CHECK: vextsh2d 2, 3 +0x10 0x59 0x1e 0x02 + +# CHECK: vextsw2d 2, 3 +0x10 0x5a 0x1e 0x02 + +# CHECK: vnegw 2, 3 +0x10 0x46 0x1e 0x02 + +# CHECK: vnegd 2, 3 +0x10 0x47 0x1e 0x02 + +# CHECK: vprtybw 2, 3 +0x10 0x48 0x1e 0x02 + +# CHECK: vprtybd 2, 3 +0x10 0x49 0x1e 0x02 + +# CHECK: vprtybq 2, 3 +0x10 0x4a 0x1e 0x02 + +# CHECK: vbpermd 2, 5, 17 +0x10 0x45 0x8d 0xcc + +# CHECK: vpermr 2, 3, 4, 5 +0x10 0x43 0x21 0x7b + +# CHECK: vrlwnm 2, 3, 4 +0x10 0x43 0x21 0x85 + +# CHECK: vrlwmi 2, 3, 4 +0x10 0x43 0x20 0x85 + +# CHECK: vrldnm 2, 3, 4 +0x10 0x43 0x21 0xc5 + +# CHECK: vrldmi 2, 3, 4 +0x10 0x43 0x20 0xc5 + +# CHECK: vslv 2, 3, 4 +0x10 0x43 0x27 0x44 + +# CHECK: vsrv 2, 3, 4 +0x10 0x43 0x27 0x04 + +# CHECK: vmul10uq 2, 3 +0x10 0x43 0x02 0x01 + +# CHECK: vmul10cuq 2, 3 +0x10 0x43 0x00 0x01 + +# CHECK: vmul10euq 2, 3, 4 +0x10 0x43 0x22 0x41 + +# CHECK: vmul10ecuq 2, 3, 4 +0x10 0x43 0x20 0x41 + +# CHECK: bcdcfn. 27, 31, 1 +0x13 0x67 0xff 0x81 + +# CHECK: bcdcfz. 27, 31, 1 +0x13 0x66 0xff 0x81 + +# CHECK: bcdctn. 27, 31 +0x13 0x65 0xfd 0x81 + +# CHECK: bcdctz. 27, 31, 1 +0x13 0x64 0xff 0x81 + +# CHECK: bcdcfsq. 27, 31, 1 +0x13 0x62 0xff 0x81 + +# CHECK: bcdctsq. 27, 31 +0x13 0x60 0xfd 0x81 + +# CHECK: bcdcpsgn. 27, 31, 7 +0x13 0x7f 0x3b 0x41 + +# CHECK: bcdsetsgn. 27, 31, 1 +0x13 0x7f 0xff 0x81 + +# CHECK: bcds. 27, 31, 7, 1 +0x13 0x7f 0x3e 0xc1 + +# CHECK: bcdus. 27, 31, 7 +0x13 0x7f 0x3c 0x81 + +# CHECK: bcdsr. 27, 31, 7, 1 +0x13 0x7f 0x3f 0xc1 + +# CHECK: bcdtrunc. 27, 31, 7, 1 +0x13 0x7f 0x3f 0x01 + +# CHECK: bcdutrunc. 27, 31, 7 +0x13 0x7f 0x3d 0x41 diff --git a/test/MC/Disassembler/PowerPC/ppc64-encoding.txt b/test/MC/Disassembler/PowerPC/ppc64-encoding.txt index 74023340d500..a6d079297bcf 100644 --- a/test/MC/Disassembler/PowerPC/ppc64-encoding.txt +++ b/test/MC/Disassembler/PowerPC/ppc64-encoding.txt @@ -151,6 +151,9 @@ # CHECK: ldux 2, 3, 4 0x7c 0x43 0x20 0x6a +# CHECK: ldmx 2, 3, 4 +0x7c 0x43 0x22 0x6a + # CHECK: stb 2, 128(4) 0x98 0x44 0x00 0x80 @@ -415,6 +418,24 @@ # CHECK: cmplw 2, 3, 4 0x7d 0x03 0x20 0x40 +# CHECK: cmprb 3, 1, 7, 17 +0x7d 0xa7 0x89 0x80 + +# CHECK: cmpeqb 3, 7, 17 +0x7d 0x87 0x89 0xc0 + +# CHECK: cnttzw 7, 17 +0x7e 0x27 0x04 0x34 + +# CHECK: cnttzw. 7, 17 +0x7e 0x27 0x04 0x35 + +# CHECK: cnttzd 7, 17 +0x7e 0x27 0x04 0x74 + +# CHECK: cnttzd. 7, 17 +0x7e 0x27 0x04 0x75 + # CHECK: twllti 3, 4 0x0c 0x43 0x00 0x04 @@ -658,7 +679,32 @@ # CHECK: mfocrf 16, 8 0x7e 0x10 0x80 0x26 +# CHECK: mcrxrx 7 +0x7f 0x80 0x04 0x80 + # CHECK: mtsrin 10, 12 0x7d 0x40 0x61 0xe4 + # CHECK: mfsrin 10, 12 0x7d 0x40 0x65 0x26 + +# CHECK: copy 2, 19, 1 +0x7c 0x22 0x9e 0x0c + +# CHECK: paste 17, 1, 1 +0x7c 0x31 0x0f 0x0c + +# CHECK: cp_abort +0x7c 0x00 0x06 0x8c + +# CHECK: msgsync +0x7c 0x00 0x06 0xec + +# CHECK: slbieg 6, 21 +0x7c 0xc0 0xab 0xa4 + +# CHECK: slbsync +0x7c 0x00 0x02 0xa4 + +# CHECK: stop +0x4c 0x00 0x02 0xe4 diff --git a/test/MC/Disassembler/PowerPC/vsx.txt b/test/MC/Disassembler/PowerPC/vsx.txt index 37fd17b015ab..3f8adc912452 100644 --- a/test/MC/Disassembler/PowerPC/vsx.txt +++ b/test/MC/Disassembler/PowerPC/vsx.txt @@ -539,3 +539,332 @@ # CHECK: mtvsrwz 0, 3 0x7c 0x03 0x01 0xe6 + +# Power9 Instructions: + +# CHECK: xscpsgnqp 7, 31, 27 +0xfc 0xff 0xd8 0xc8 + +# CHECK: xsabsqp 7, 27 +0xfc 0xe0 0xde 0x48 + +# CHECK: xsnegqp 7, 27 +0xfc 0xf0 0xde 0x48 + +# CHECK: xsnabsqp 7, 27 +0xfc 0xe8 0xde 0x48 + +# CHECK: xsaddqp 7, 31, 27 +0xfc 0xff 0xd8 0x08 + +# CHECK: xsaddqpo 7, 31, 27 +0xfc 0xff 0xd8 0x09 + +# CHECK: xsdivqp 7, 31, 27 +0xfc 0xff 0xdc 0x48 + +# CHECK: xsdivqpo 7, 31, 27 +0xfc 0xff 0xdc 0x49 + +# CHECK: xsmulqp 7, 31, 27 +0xfc 0xff 0xd8 0x48 + +# CHECK: xsmulqpo 7, 31, 27 +0xfc 0xff 0xd8 0x49 + +# CHECK: xssqrtqp 7, 31 +0xfc 0xfb 0xfe 0x48 + +# CHECK: xssqrtqpo 7, 31 +0xfc 0xfb 0xfe 0x49 + +# CHECK: xssubqp 7, 31, 27 +0xfc 0xff 0xdc 0x08 + +# CHECK: xssubqpo 7, 31, 27 +0xfc 0xff 0xdc 0x09 + +# CHECK: xsmaddqp 7, 31, 27 +0xfc 0xff 0xdb 0x08 + +# CHECK: xsmaddqpo 7, 31, 27 +0xfc 0xff 0xdb 0x09 + +# CHECK: xsmsubqp 7, 31, 27 +0xfc 0xff 0xdb 0x48 + +# CHECK: xsmsubqpo 7, 31, 27 +0xfc 0xff 0xdb 0x49 + +# CHECK: xsnmaddqp 7, 31, 27 +0xfc 0xff 0xdb 0x88 + +# CHECK: xsnmaddqpo 7, 31, 27 +0xfc 0xff 0xdb 0x89 + +# CHECK: xsnmsubqp 7, 31, 27 +0xfc 0xff 0xdb 0xc8 + +# CHECK: xsnmsubqpo 7, 31, 27 +0xfc 0xff 0xdb 0xc9 + +# CHECK: xscmpoqp 6, 31, 27 +0xff 0x1f 0xd9 0x08 + +# CHECK: xscmpuqp 6, 31, 27 +0xff 0x1f 0xdd 0x08 + +# CHECK: xscmpexpdp 6, 63, 27 +0xf3 0x1f 0xd9 0xdc + +# CHECK: xscmpexpqp 6, 31, 27 +0xff 0x1f 0xd9 0x48 + +# CHECK: xscmpeqdp 7, 63, 27 +0xf0 0xff 0xd8 0x1c + +# CHECK: xscmpgedp 7, 63, 27 +0xf0 0xff 0xd8 0x9c + +# CHECK: xscmpgtdp 7, 63, 27 +0xf0 0xff 0xd8 0x5c + +# CHECK: xscmpnedp 7, 63, 27 +0xf0 0xff 0xd8 0xdc + +# CHECK: xvcmpnedp 7, 63, 27 +0xf0 0xff 0xdb 0xdc + +# CHECK: xvcmpnedp. 7, 63, 27 +0xf0 0xff 0xdf 0xdc + +# CHECK: xvcmpnesp 7, 63, 27 +0xf0 0xff 0xda 0xdc + +# CHECK: xvcmpnesp. 7, 63, 27 +0xf0 0xff 0xde 0xdc + +# CHECK: xscvdpqp 7, 27 +0xfc 0xf6 0xde 0x88 + +# CHECK: xscvqpdp 7, 27 +0xfc 0xf4 0xde 0x88 + +# CHECK: xscvqpdpo 7, 27 +0xfc 0xf4 0xde 0x89 + +# CHECK: xscvqpsdz 7, 27 +0xfc 0xf9 0xde 0x88 + +# CHECK: xscvqpswz 7, 27 +0xfc 0xe9 0xde 0x88 + +# CHECK: xscvqpudz 7, 27 +0xfc 0xf1 0xde 0x88 + +# CHECK: xscvqpuwz 7, 27 +0xfc 0xe1 0xde 0x88 + +# CHECK: xscvsdqp 7, 27 +0xfc 0xea 0xde 0x88 + +# CHECK: xscvudqp 7, 27 +0xfc 0xe2 0xde 0x88 + +# CHECK: xscvdphp 7, 63 +0xf0 0xf1 0xfd 0x6e + +# CHECK: xscvhpdp 7, 63 +0xf0 0xf0 0xfd 0x6e + +# CHECK: xvcvhpsp 7, 63 +0xf0 0xf8 0xff 0x6e + +# CHECK: xvcvsphp 7, 63 +0xf0 0xf9 0xff 0x6e + +# CHECK: xsrqpi 1, 7, 27, 2 +0xfc 0xe1 0xdc 0x0a + +# CHECK: xsrqpix 1, 7, 27, 2 +0xfc 0xe1 0xdc 0x0b + +# CHECK: xsrqpxp 1, 7, 27, 2 +0xfc 0xe1 0xdc 0x4a + +# CHECK: xsiexpdp 63, 3, 4 +0xf3 0xe3 0x27 0x2d + +# CHECK: xsiexpqp 7, 31, 27 +0xfc 0xff 0xde 0xc8 + +# CHECK: xviexpdp 7, 63, 27 +0xf0 0xff 0xdf 0xc4 + +# CHECK: xviexpsp 7, 63, 27 +0xf0 0xff 0xde 0xc4 + +# CHECK: xxextractuw 7, 63, 15 +0xf0 0xef 0xfa 0x96 + +# CHECK: xxinsertw 7, 63, 15 +0xf0 0xef 0xfa 0xd6 + +# CHECK: xsxexpdp 7, 63 +0xf0 0xe0 0xfd 0x6e + +# CHECK: xsxsigdp 7, 63 +0xf0 0xe1 0xfd 0x6e + +# CHECK: xsxexpqp 7, 31 +0xfc 0xe2 0xfe 0x48 + +# CHECK: xsxsigqp 7, 31 +0xfc 0xf2 0xfe 0x48 + +# CHECK: xvxexpdp 7, 63 +0xf0 0xe0 0xff 0x6e + +# CHECK: xvxexpsp 7, 63 +0xf0 0xe8 0xff 0x6e + +# CHECK: xvxsigdp 7, 63 +0xf0 0xe1 0xff 0x6e + +# CHECK: xvxsigsp 7, 63 +0xf0 0xe9 0xff 0x6e + +# CHECK: xststdcsp 7, 63, 127 +0xf3 0xff 0xfc 0xaa + +# CHECK: xststdcdp 7, 63, 127 +0xf3 0xff 0xfd 0xaa + +# CHECK: xststdcqp 7, 31, 127 +0xff 0xff 0xfd 0x88 + +# CHECK: xststdcsp 7, 63, 127 +0xf3 0xff 0xfc 0xaa + +# CHECK: xststdcdp 7, 63, 127 +0xf3 0xff 0xfd 0xaa + +# CHECK: xststdcqp 7, 31, 127 +0xff 0xff 0xfd 0x88 + +# CHECK: xsmaxcdp 7, 63, 27 +0xf0 0xff 0xdc 0x04 + +# CHECK: xsmaxjdp 7, 63, 27 +0xf0 0xff 0xdc 0x84 + +# CHECK: xsmincdp 7, 63, 27 +0xf0 0xff 0xdc 0x44 + +# CHECK: xsminjdp 7, 63, 27 +0xf0 0xff 0xdc 0xc4 + +# CHECK: xxbrh 7, 63 +0xf0 0xe7 0xff 0x6e + +# CHECK: xxbrw 7, 63 +0xf0 0xef 0xff 0x6e + +# CHECK: xxbrd 7, 63 +0xf0 0xf7 0xff 0x6e + +# CHECK: xxbrq 7, 63 +0xf0 0xff 0xff 0x6e + +# CHECK: xxperm 7, 63, 27 +0xf0 0xff 0xd8 0xd4 + +# CHECK: xxpermr 7, 63, 27 +0xf0 0xff 0xd9 0xd4 + +# CHECK: xxspltib 63, 255 +0xf3 0xe7 0xfa 0xd1 + +# CHECK: lxv 61, 32752(31) +0xf7 0xbf 0x7f 0xf9 + +# CHECK: lxv 61, -32768(0) +0xf7 0xa0 0x80 0x09 + +# CHECK: stxv 61, 32752(31) +0xf7 0xbf 0x7f 0xfd + +# CHECK: stxv 61, -32768(0) +0xf7 0xa0 0x80 0x0d + +# CHECK: lxsd 31, -32768(0) +0xe7 0xe0 0x80 0x02 + +# CHECK: lxsd 31, 32764(12) +0xe7 0xec 0x7f 0xfe + +# CHECK: lxssp 31, -32768(0) +0xe7 0xe0 0x80 0x03 + +# CHECK: lxssp 31, 32764(12) +0xe7 0xec 0x7f 0xff + +# CHECK: stxsd 31, 32764(12) +0xf7 0xec 0x7f 0xfe + +# CHECK: stxssp 31, -32768(0) +0xf7 0xe0 0x80 0x03 + +# CHECK: lxvx 57, 12, 27 +0x7f 0x2c 0xda 0x19 + +# CHECK: lxsibzx 57, 12, 27 +0x7f 0x2c 0xde 0x1b + +# CHECK: lxsihzx 57, 12, 27 +0x7f 0x2c 0xde 0x5b + +# CHECK: lxvb16x 57, 12, 27 +0x7f 0x2c 0xde 0xd9 + +# CHECK: lxvh8x 57, 12, 27 +0x7f 0x2c 0xde 0x59 + +# CHECK: lxvl 57, 12, 27 +0x7f 0x2c 0xda 0x1b + +# CHECK: lxvll 57, 12, 27 +0x7f 0x2c 0xda 0x5b + +# CHECK: lxvwsx 57, 12, 27 +0x7f 0x2c 0xda 0xd9 + +# CHECK: stxsibx 57, 12, 27 +0x7f 0x2c 0xdf 0x1b + +# CHECK: stxsihx 57, 12, 27 +0x7f 0x2c 0xdf 0x5b + +# CHECK: stxvh8x 57, 12, 27 +0x7f 0x2c 0xdf 0x59 + +# CHECK: stxvb16x 57, 12, 27 +0x7f 0x2c 0xdf 0xd9 + +# CHECK: stxvx 57, 12, 27 +0x7f 0x2c 0xdb 0x19 + +# CHECK: stxvl 57, 12, 27 +0x7f 0x2c 0xdb 0x1b + +# CHECK: stxvll 57, 12, 27 +0x7f 0x2c 0xdb 0x5b + +# CHECK: mtvsrws 34, 3 +0x7c 0x43 0x03 0x27 + +# CHECK: mtvsrdd 34, 3, 12 +0x7c 0x43 0x63 0x67 + +# CHECK: mfvsrld 3, 34 +0x7c 0x43 0x02 0x67 diff --git a/test/MC/Disassembler/Sparc/sparc-special-registers.txt b/test/MC/Disassembler/Sparc/sparc-special-registers.txt index f653dbda605d..b34816dfac68 100644 --- a/test/MC/Disassembler/Sparc/sparc-special-registers.txt +++ b/test/MC/Disassembler/Sparc/sparc-special-registers.txt @@ -32,3 +32,15 @@ # CHECK: wr %i0, 5, %tbr 0x81 0x9e 0x20 0x05 + +# CHECK: st %fsr, [%i5] +0xc1 0x2f 0x40 0x00 + +# CHECK: st %csr, [%i5] +0xc1 0xaf 0x40 0x00 + +# CHECK: std %cq, [%o3+-93] +0xc1 0xb2 0xff 0xa3 + +# CHECK: std %fq, [%i5+%l1] +0xc1 0x37 0x40 0x11 diff --git a/test/MC/Disassembler/Sparc/sparc-v9.txt b/test/MC/Disassembler/Sparc/sparc-v9.txt index b8ca01ce04ee..0a81b8df4cda 100644 --- a/test/MC/Disassembler/Sparc/sparc-v9.txt +++ b/test/MC/Disassembler/Sparc/sparc-v9.txt @@ -2,3 +2,117 @@ # CHECK: popc %g1, %g2 0x85 0x70 0x00 0x01 + +# CHECK: ta %icc, %i5 +0x91 0xd0 0x00 0x1d + +# CHECK: ta %icc, 82 +0x91 0xd0 0x20 0x52 + +# CHECK: ta %icc, %g1 + %i2 +0x91 0xd0 0x40 0x1a + +# CHECK: ta %icc, %i5 + 41 +0x91 0xd7 0x60 0x29 + +# CHECK: tn %icc, %i5 +0x81 0xd0 0x00 0x1d + +# CHECK: tne %icc, 82 +0x93 0xd0 0x20 0x52 + +# CHECK: te %icc, %g1 + %i2 +0x83 0xd0 0x40 0x1a + +# CHECK: tg %icc, %i5 + 41 +0x95 0xd7 0x60 0x29 + +# CHECK: tle %icc, %i5 +0x85 0xd0 0x00 0x1d + +# CHECK: tge %icc, 82 +0x97 0xd0 0x20 0x52 + +# CHECK: tl %icc, %g1 + %i2 +0x87 0xd0 0x40 0x1a + +# CHECK: tgu %icc, %i5 + 41 +0x99 0xd7 0x60 0x29 + +# CHECK: tleu %icc, %i5 +0x89 0xd0 0x00 0x1d + +# CHECK: tcc %icc, 82 +0x9b 0xd0 0x20 0x52 + +# CHECK: tcs %icc, %g1 + %i2 +0x8b 0xd0 0x40 0x1a + +# CHECK: tpos %icc, %i5 + 41 +0x9d 0xd7 0x60 0x29 + +# CHECK: tneg %icc, %i5 +0x8d 0xd0 0x00 0x1d + +# CHECK: tvc %icc, 82 +0x9f 0xd0 0x20 0x52 + +# CHECK: tvs %icc, %g1 + %i2 +0x8f 0xd0 0x40 0x1a + +# CHECK: ta %xcc, %i5 +0x91 0xd0 0x10 0x1d + +# CHECK: ta %xcc, 82 +0x91 0xd0 0x30 0x52 + +# CHECK: ta %xcc, %g1 + %i2 +0x91 0xd0 0x50 0x1a + +# CHECK: ta %xcc, %i5 + 41 +0x91 0xd7 0x70 0x29 + +# CHECK: tn %xcc, %i5 +0x81 0xd0 0x10 0x1d + +# CHECK: tne %xcc, 82 +0x93 0xd0 0x30 0x52 + +# CHECK: te %xcc, %g1 + %i2 +0x83 0xd0 0x50 0x1a + +# CHECK: tg %xcc, %i5 + 41 +0x95 0xd7 0x70 0x29 + +# CHECK: tle %xcc, %i5 +0x85 0xd0 0x10 0x1d + +# CHECK: tge %xcc, 82 +0x97 0xd0 0x30 0x52 + +# CHECK: tl %xcc, %g1 + %i2 +0x87 0xd0 0x50 0x1a + +# CHECK: tgu %xcc, %i5 + 41 +0x99 0xd7 0x70 0x29 + +# CHECK: tleu %xcc, %i5 +0x89 0xd0 0x10 0x1d + +# CHECK: tcc %xcc, 82 +0x9b 0xd0 0x30 0x52 + +# CHECK: tcs %xcc, %g1 + %i2 +0x8b 0xd0 0x50 0x1a + +# CHECK: tpos %xcc, %i5 + 41 +0x9d 0xd7 0x70 0x29 + +# CHECK: tneg %xcc, %i5 +0x8d 0xd0 0x10 0x1d + +# CHECK: tvc %xcc, 82 +0x9f 0xd0 0x30 0x52 + +# CHECK: tvs %xcc, %g1 + %i2 +0x8f 0xd0 0x50 0x1a
\ No newline at end of file diff --git a/test/MC/Disassembler/Sparc/sparc.txt b/test/MC/Disassembler/Sparc/sparc.txt index 6724ebf8bf25..9c0b2a107394 100644 --- a/test/MC/Disassembler/Sparc/sparc.txt +++ b/test/MC/Disassembler/Sparc/sparc.txt @@ -168,6 +168,51 @@ # CHECK: fbo 4194303 0x1f 0xbf 0xff 0xff +# CHECK: cba 4194303 +0x11 0xff 0xff 0xff + +# CHECK: cbn 4194303 +0x01 0xff 0xff 0xff + +# CHECK: cb3 4194303 +0x0f 0xff 0xff 0xff + +# CHECK: cb2 4194303 +0x0d 0xff 0xff 0xff + +# CHECK: cb23 4194303 +0x0b 0xff 0xff 0xff + +# CHECK: cb1 4194303 +0x09 0xff 0xff 0xff + +# CHECK: cb13 4194303 +0x07 0xff 0xff 0xff + +# CHECK: cb12 4194303 +0x05 0xff 0xff 0xff + +# CHECK: cb123 4194303 +0x03 0xff 0xff 0xff + +# CHECK: cb03 4194303 +0x15 0xff 0xff 0xff + +# CHECK: cb02 4194303 +0x17 0xff 0xff 0xff + +# CHECK: cb023 4194303 +0x19 0xff 0xff 0xff + +# CHECK: cb01 4194303 +0x1b 0xff 0xff 0xff + +# CHECK: cb013 4194303 +0x1d 0xff 0xff 0xff + +# CHECK: cb012 4194303 +0x1f 0xff 0xff 0xff + # CHECK: restore 0x81 0xe8 0x00 0x00 @@ -187,16 +232,73 @@ 0x00 0x00 0x00 0x0c # CHECK: jmp %g1+12 -0x81,0xc0,0x60,0x0c +0x81 0xc0 0x60 0x0c # CHECK: retl 0x81 0xc3 0xe0 0x08 # CHECK: ret -0x81,0xc7,0xe0,0x08 +0x81 0xc7 0xe0 0x08 # CHECK: rett %i7+8 0x81 0xcf 0xe0 0x08 # CHECK: stbar 0x81 0x43 0xc0 0x00 + +# CHECK: ta %i5 +0x91 0xd0 0x00 0x1d + +# CHECK: ta 82 +0x91 0xd0 0x20 0x52 + +# CHECK: ta %g1 + %i2 +0x91 0xd0 0x40 0x1a + +# CHECK: ta %i5 + 41 +0x91 0xd7 0x60 0x29 + +# CHECK: tn %i5 +0x81 0xd0 0x00 0x1d + +# CHECK: tne 82 +0x93 0xd0 0x20 0x52 + +# CHECK: te %g1 + %i2 +0x83 0xd0 0x40 0x1a + +# CHECK: tg %i5 + 41 +0x95 0xd7 0x60 0x29 + +# CHECK: tle %i5 +0x85 0xd0 0x00 0x1d + +# CHECK: tge 82 +0x97 0xd0 0x20 0x52 + +# CHECK: tl %g1 + %i2 +0x87 0xd0 0x40 0x1a + +# CHECK: tgu %i5 + 41 +0x99 0xd7 0x60 0x29 + +# CHECK: tleu %i5 +0x89 0xd0 0x00 0x1d + +# CHECK: tcc 82 +0x9b 0xd0 0x20 0x52 + +# CHECK: tcs %g1 + %i2 +0x8b 0xd0 0x40 0x1a + +# CHECK: tpos %i5 + 41 +0x9d 0xd7 0x60 0x29 + +# CHECK: tneg %i5 +0x8d 0xd0 0x00 0x1d + +# CHECK: tvc 82 +0x9f 0xd0 0x20 0x52 + +# CHECK: tvs %g1 + %i2 +0x8f 0xd0 0x40 0x1a diff --git a/test/MC/Disassembler/SystemZ/insns-pcrel.txt b/test/MC/Disassembler/SystemZ/insns-pcrel.txt index b7edab65e703..d3579481e1fa 100644 --- a/test/MC/Disassembler/SystemZ/insns-pcrel.txt +++ b/test/MC/Disassembler/SystemZ/insns-pcrel.txt @@ -1730,3 +1730,35 @@ # 0x000009d2: # CHECK: clij %r0, 0, 15, 0x9d2 0xec 0x0f 0x00 0x00 0x00 0x7f + +# 0x000009d8: +# CHECK: exrl %r0, 0x9d8 +0xc6 0x00 0x00 0x00 0x00 0x00 + +# 0x000009de: +# CHECK: exrl %r15, 0x9de +0xc6 0xf0 0x00 0x00 0x00 0x00 + +# 0x000009e4: +# CHECK: exrl %r0, 0x9e2 +0xc6 0x00 0xff 0xff 0xff 0xff + +# 0x000009ea: +# CHECK: exrl %r15, 0x9e8 +0xc6 0xf0 0xff 0xff 0xff 0xff + +# 0x000009f0: +# CHECK: exrl %r0, 0xffffffff000009f0 +0xc6 0x00 0x80 0x00 0x00 0x00 + +# 0x000009f6: +# CHECK: exrl %r15, 0xffffffff000009f6 +0xc6 0xf0 0x80 0x00 0x00 0x00 + +# 0x000009fc: +# CHECK: exrl %r0, 0x1000009fa +0xc6 0x00 0x7f 0xff 0xff 0xff + +# 0x00000a02: +# CHECK: exrl %r15, 0x100000a00 +0xc6 0xf0 0x7f 0xff 0xff 0xff diff --git a/test/MC/Disassembler/SystemZ/insns-z13.txt b/test/MC/Disassembler/SystemZ/insns-z13.txt index 71e77664abb2..b6970ab3c6d7 100644 --- a/test/MC/Disassembler/SystemZ/insns-z13.txt +++ b/test/MC/Disassembler/SystemZ/insns-z13.txt @@ -3313,3 +3313,99 @@ #CHECK: wledb %v31, %v31, 7, 15 0xe7 0xff 0x00 0xff 0x3c 0xc5 + +#CHECK: lochi %r11, 42, 0 +0xec 0xb0 0x00 0x2a 0x00 0x42 + +#CHECK: lochio %r11, 42 +0xec 0xb1 0x00 0x2a 0x00 0x42 + +#CHECK: lochih %r11, 42 +0xec 0xb2 0x00 0x2a 0x00 0x42 + +#CHECK: lochinle %r11, 42 +0xec 0xb3 0x00 0x2a 0x00 0x42 + +#CHECK: lochil %r11, -1 +0xec 0xb4 0xff 0xff 0x00 0x42 + +#CHECK: lochinhe %r11, 42 +0xec 0xb5 0x00 0x2a 0x00 0x42 + +#CHECK: lochilh %r11, -1 +0xec 0xb6 0xff 0xff 0x00 0x42 + +#CHECK: lochine %r11, 0 +0xec 0xb7 0x00 0x00 0x00 0x42 + +#CHECK: lochie %r11, 0 +0xec 0xb8 0x00 0x00 0x00 0x42 + +#CHECK: lochinlh %r11, 42 +0xec 0xb9 0x00 0x2a 0x00 0x42 + +#CHECK: lochihe %r11, 255 +0xec 0xba 0x00 0xff 0x00 0x42 + +#CHECK: lochinl %r11, 255 +0xec 0xbb 0x00 0xff 0x00 0x42 + +#CHECK: lochile %r11, 32767 +0xec 0xbc 0x7f 0xff 0x00 0x42 + +#CHECK: lochinh %r11, 32767 +0xec 0xbd 0x7f 0xff 0x00 0x42 + +#CHECK: lochino %r11, 32512 +0xec 0xbe 0x7f 0x00 0x00 0x42 + +#CHECK: lochi %r11, 32512, 15 +0xec 0xbf 0x7f 0x00 0x00 0x42 + +#CHECK: locghi %r11, 42, 0 +0xec 0xb0 0x00 0x2a 0x00 0x46 + +#CHECK: locghio %r11, 42 +0xec 0xb1 0x00 0x2a 0x00 0x46 + +#CHECK: locghih %r11, 42 +0xec 0xb2 0x00 0x2a 0x00 0x46 + +#CHECK: locghinle %r11, 42 +0xec 0xb3 0x00 0x2a 0x00 0x46 + +#CHECK: locghil %r11, -1 +0xec 0xb4 0xff 0xff 0x00 0x46 + +#CHECK: locghinhe %r11, 42 +0xec 0xb5 0x00 0x2a 0x00 0x46 + +#CHECK: locghilh %r11, -1 +0xec 0xb6 0xff 0xff 0x00 0x46 + +#CHECK: locghine %r11, 0 +0xec 0xb7 0x00 0x00 0x00 0x46 + +#CHECK: locghie %r11, 0 +0xec 0xb8 0x00 0x00 0x00 0x46 + +#CHECK: locghinlh %r11, 42 +0xec 0xb9 0x00 0x2a 0x00 0x46 + +#CHECK: locghihe %r11, 255 +0xec 0xba 0x00 0xff 0x00 0x46 + +#CHECK: locghinl %r11, 255 +0xec 0xbb 0x00 0xff 0x00 0x46 + +#CHECK: locghile %r11, 32767 +0xec 0xbc 0x7f 0xff 0x00 0x46 + +#CHECK: locghinh %r11, 32767 +0xec 0xbd 0x7f 0xff 0x00 0x46 + +#CHECK: locghino %r11, 32512 +0xec 0xbe 0x7f 0x00 0x00 0x46 + +#CHECK: locghi %r11, 32512, 15 +0xec 0xbf 0x7f 0x00 0x00 0x46 diff --git a/test/MC/Disassembler/SystemZ/insns.txt b/test/MC/Disassembler/SystemZ/insns.txt index 17c3a45b3e41..80756baed6ba 100644 --- a/test/MC/Disassembler/SystemZ/insns.txt +++ b/test/MC/Disassembler/SystemZ/insns.txt @@ -1288,6 +1288,90 @@ # CHECK: cgr %r7, %r8 0xb9 0x20 0x00 0x78 +# CHECK: cgrb %r0, %r0, 0, 0 +0xec 0x00 0x00 0x00 0x00 0xe4 + +# CHECK: cgrb %r0, %r15, 0, 0 +0xec 0x0f 0x00 0x00 0x00 0xe4 + +# CHECK: cgrb %r15, %r0, 0, 0 +0xec 0xf0 0x00 0x00 0x00 0xe4 + +# CHECK: cgrb %r7, %r8, 0, 0 +0xec 0x78 0x00 0x00 0x00 0xe4 + +# CHECK: cgrb %r0, %r0, 0, 4095(%r15) +0xec 0x00 0xff 0xff 0x00 0xe4 + +# CHECK: cgrb %r0, %r0, 0, 0(%r8) +0xec 0x00 0x80 0x00 0x00 0xe4 + +# CHECK: cgrb %r0, %r0, 0, 4095(%r7) +0xec 0x00 0x7f 0xff 0x00 0xe4 + +# CHECK: cgrb %r0, %r0, 1, 0 +0xec 0x00 0x00 0x00 0x10 0xe4 + +# CHECK: cgrbh %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x20 0xe4 + +# CHECK: cgrb %r0, %r0, 3, 0 +0xec 0x00 0x00 0x00 0x30 0xe4 + +# CHECK: cgrbl %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x40 0xe4 + +# CHECK: cgrb %r0, %r0, 5, 0 +0xec 0x00 0x00 0x00 0x50 0xe4 + +# CHECK: cgrblh %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x60 0xe4 + +# CHECK: cgrb %r0, %r0, 7, 0 +0xec 0x00 0x00 0x00 0x70 0xe4 + +# CHECK: cgrbe %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x80 0xe4 + +# CHECK: cgrb %r0, %r0, 9, 0 +0xec 0x00 0x00 0x00 0x90 0xe4 + +# CHECK: cgrbhe %r0, %r0, 0 +0xec 0x00 0x00 0x00 0xa0 0xe4 + +# CHECK: cgrb %r0, %r0, 11, 0 +0xec 0x00 0x00 0x00 0xb0 0xe4 + +# CHECK: cgrble %r0, %r0, 0 +0xec 0x00 0x00 0x00 0xc0 0xe4 + +# CHECK: cgrb %r0, %r0, 13, 0 +0xec 0x00 0x00 0x00 0xd0 0xe4 + +# CHECK: cgrb %r0, %r0, 14, 0 +0xec 0x00 0x00 0x00 0xe0 0xe4 + +# CHECK: cgrb %r0, %r0, 15, 0 +0xec 0x00 0x00 0x00 0xf0 0xe4 + +# CHECK: cgrth %r0, %r1 +0xb9 0x60 0x20 0x01 + +# CHECK: cgrtl %r0, %r1 +0xb9 0x60 0x40 0x01 + +# CHECK: cgrte %r0, %r1 +0xb9 0x60 0x80 0x01 + +# CHECK: cgrtlh %r0, %r1 +0xb9 0x60 0x60 0x01 + +# CHECK: cgrthe %r0, %r1 +0xb9 0x60 0xa0 0x01 + +# CHECK: cgrtle %r0, %r1 +0xb9 0x60 0xc0 0x01 + # CHECK: cg %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x20 @@ -1318,6 +1402,96 @@ # CHECK: cg %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x20 +# CHECK: cgib %r0, 0, 0, 0 +0xec 0x00 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, -128, 0, 0 +0xec 0x00 0x00 0x00 0x80 0xfc + +# CHECK: cgib %r0, -1, 0, 0 +0xec 0x00 0x00 0x00 0xff 0xfc + +# CHECK: cgib %r0, 127, 0, 0 +0xec 0x00 0x00 0x00 0x7f 0xfc + +# CHECK: cgib %r15, 0, 0, 0 +0xec 0xf0 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r7, 100, 0, 0 +0xec 0x70 0x00 0x00 0x64 0xfc + +# CHECK: cgib %r0, 0, 0, 4095(%r15) +0xec 0x00 0xff 0xff 0x00 0xfc + +# CHECK: cgib %r0, 0, 0, 0(%r8) +0xec 0x00 0x80 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 0, 4095(%r7) +0xec 0x00 0x7f 0xff 0x00 0xfc + +# CHECK: cgib %r0, 0, 1, 0 +0xec 0x01 0x00 0x00 0x00 0xfc + +# CHECK: cgibh %r0, 0, 0 +0xec 0x02 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 3, 0 +0xec 0x03 0x00 0x00 0x00 0xfc + +# CHECK: cgibl %r0, 0, 0 +0xec 0x04 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 5, 0 +0xec 0x05 0x00 0x00 0x00 0xfc + +# CHECK: cgiblh %r0, 0, 0 +0xec 0x06 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 7, 0 +0xec 0x07 0x00 0x00 0x00 0xfc + +# CHECK: cgibe %r0, 0, 0 +0xec 0x08 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 9, 0 +0xec 0x09 0x00 0x00 0x00 0xfc + +# CHECK: cgibhe %r0, 0, 0 +0xec 0x0a 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 11, 0 +0xec 0x0b 0x00 0x00 0x00 0xfc + +# CHECK: cgible %r0, 0, 0 +0xec 0x0c 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 13, 0 +0xec 0x0d 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 14, 0 +0xec 0x0e 0x00 0x00 0x00 0xfc + +# CHECK: cgib %r0, 0, 15, 0 +0xec 0x0f 0x00 0x00 0x00 0xfc + +# CHECK: cgith %r0, 0 +0xec 0x00 0x00 0x00 0x20 0x70 + +# CHECK: cgitl %r0, 0 +0xec 0x00 0x00 0x00 0x40 0x70 + +# CHECK: cgite %r0, 0 +0xec 0x00 0x00 0x00 0x80 0x70 + +# CHECK: cgitlh %r0, 0 +0xec 0x00 0x00 0x00 0x60 0x70 + +# CHECK: cgithe %r0, 0 +0xec 0x00 0x00 0x00 0xa0 0x70 + +# CHECK: cgitle %r0, 0 +0xec 0x00 0x00 0x00 0xc0 0x70 + # CHECK: cgxbr %r0, 0, %f0 0xb3 0xaa 0x00 0x00 @@ -1498,6 +1672,78 @@ # CHECK: chy %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x79 +# CHECK: cib %r0, 0, 0, 0 +0xec 0x00 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, -128, 0, 0 +0xec 0x00 0x00 0x00 0x80 0xfe + +# CHECK: cib %r0, -1, 0, 0 +0xec 0x00 0x00 0x00 0xff 0xfe + +# CHECK: cib %r0, 127, 0, 0 +0xec 0x00 0x00 0x00 0x7f 0xfe + +# CHECK: cib %r15, 0, 0, 0 +0xec 0xf0 0x00 0x00 0x00 0xfe + +# CHECK: cib %r7, 100, 0, 0 +0xec 0x70 0x00 0x00 0x64 0xfe + +# CHECK: cib %r0, 0, 0, 4095(%r15) +0xec 0x00 0xff 0xff 0x00 0xfe + +# CHECK: cib %r0, 0, 0, 0(%r8) +0xec 0x00 0x80 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 0, 4095(%r7) +0xec 0x00 0x7f 0xff 0x00 0xfe + +# CHECK: cib %r0, 0, 1, 0 +0xec 0x01 0x00 0x00 0x00 0xfe + +# CHECK: cibh %r0, 0, 0 +0xec 0x02 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 3, 0 +0xec 0x03 0x00 0x00 0x00 0xfe + +# CHECK: cibl %r0, 0, 0 +0xec 0x04 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 5, 0 +0xec 0x05 0x00 0x00 0x00 0xfe + +# CHECK: ciblh %r0, 0, 0 +0xec 0x06 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 7, 0 +0xec 0x07 0x00 0x00 0x00 0xfe + +# CHECK: cibe %r0, 0, 0 +0xec 0x08 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 9, 0 +0xec 0x09 0x00 0x00 0x00 0xfe + +# CHECK: cibhe %r0, 0, 0 +0xec 0x0a 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 11, 0 +0xec 0x0b 0x00 0x00 0x00 0xfe + +# CHECK: cible %r0, 0, 0 +0xec 0x0c 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 13, 0 +0xec 0x0d 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 14, 0 +0xec 0x0e 0x00 0x00 0x00 0xfe + +# CHECK: cib %r0, 0, 15, 0 +0xec 0x0f 0x00 0x00 0x00 0xfe + # CHECK: cih %r0, -2147483648 0xcc 0x0d 0x80 0x00 0x00 0x00 @@ -1516,6 +1762,24 @@ # CHECK: cih %r15, 0 0xcc 0xfd 0x00 0x00 0x00 0x00 +# CHECK: cith %r0, 0 +0xec 0x00 0x00 0x00 0x20 0x72 + +# CHECK: citl %r0, 0 +0xec 0x00 0x00 0x00 0x40 0x72 + +# CHECK: cite %r0, 0 +0xec 0x00 0x00 0x00 0x80 0x72 + +# CHECK: citlh %r0, 0 +0xec 0x00 0x00 0x00 0x60 0x72 + +# CHECK: cithe %r0, 0 +0xec 0x00 0x00 0x00 0xa0 0x72 + +# CHECK: citle %r0, 0 +0xec 0x00 0x00 0x00 0xc0 0x72 + # CHECK: clc 0(1), 0 0xd5 0x00 0x00 0x00 0x00 0x00 @@ -1642,6 +1906,78 @@ # CHECK: clgebr %r15, 0, %f0, 1 0xb3 0xac 0x01 0xf0 +# CHECK: clgib %r0, 0, 0, 0 +0xec 0x00 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 128, 0, 0 +0xec 0x00 0x00 0x00 0x80 0xfd + +# CHECK: clgib %r0, 255, 0, 0 +0xec 0x00 0x00 0x00 0xff 0xfd + +# CHECK: clgib %r0, 127, 0, 0 +0xec 0x00 0x00 0x00 0x7f 0xfd + +# CHECK: clgib %r15, 0, 0, 0 +0xec 0xf0 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r7, 100, 0, 0 +0xec 0x70 0x00 0x00 0x64 0xfd + +# CHECK: clgib %r0, 0, 0, 4095(%r15) +0xec 0x00 0xff 0xff 0x00 0xfd + +# CHECK: clgib %r0, 0, 0, 0(%r8) +0xec 0x00 0x80 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 0, 4095(%r7) +0xec 0x00 0x7f 0xff 0x00 0xfd + +# CHECK: clgib %r0, 0, 1, 0 +0xec 0x01 0x00 0x00 0x00 0xfd + +# CHECK: clgibh %r0, 0, 0 +0xec 0x02 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 3, 0 +0xec 0x03 0x00 0x00 0x00 0xfd + +# CHECK: clgibl %r0, 0, 0 +0xec 0x04 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 5, 0 +0xec 0x05 0x00 0x00 0x00 0xfd + +# CHECK: clgiblh %r0, 0, 0 +0xec 0x06 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 7, 0 +0xec 0x07 0x00 0x00 0x00 0xfd + +# CHECK: clgibe %r0, 0, 0 +0xec 0x08 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 9, 0 +0xec 0x09 0x00 0x00 0x00 0xfd + +# CHECK: clgibhe %r0, 0, 0 +0xec 0x0a 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 11, 0 +0xec 0x0b 0x00 0x00 0x00 0xfd + +# CHECK: clgible %r0, 0, 0 +0xec 0x0c 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 13, 0 +0xec 0x0d 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 14, 0 +0xec 0x0e 0x00 0x00 0x00 0xfd + +# CHECK: clgib %r0, 0, 15, 0 +0xec 0x0f 0x00 0x00 0x00 0xfd + # CHECK: clgxbr %r0, 0, %f0, 1 0xb3 0xae 0x01 0x00 @@ -1690,6 +2026,42 @@ # CHECK: clfi %r15, 0 0xc2 0xff 0x00 0x00 0x00 0x00 +# CHECK: clfith %r0, 0 +0xec 0x00 0x00 0x00 0x20 0x73 + +# CHECK: clfitl %r0, 0 +0xec 0x00 0x00 0x00 0x40 0x73 + +# CHECK: clfite %r0, 0 +0xec 0x00 0x00 0x00 0x80 0x73 + +# CHECK: clfitlh %r0, 0 +0xec 0x00 0x00 0x00 0x60 0x73 + +# CHECK: clfithe %r0, 0 +0xec 0x00 0x00 0x00 0xa0 0x73 + +# CHECK: clfitle %r0, 0 +0xec 0x00 0x00 0x00 0xc0 0x73 + +# CHECK: clgith %r0, 0 +0xec 0x00 0x00 0x00 0x20 0x71 + +# CHECK: clgitl %r0, 0 +0xec 0x00 0x00 0x00 0x40 0x71 + +# CHECK: clgite %r0, 0 +0xec 0x00 0x00 0x00 0x80 0x71 + +# CHECK: clgitlh %r0, 0 +0xec 0x00 0x00 0x00 0x60 0x71 + +# CHECK: clgithe %r0, 0 +0xec 0x00 0x00 0x00 0xa0 0x71 + +# CHECK: clgitle %r0, 0 +0xec 0x00 0x00 0x00 0xc0 0x71 + # CHECK: clgfi %r0, 0 0xc2 0x0e 0x00 0x00 0x00 0x00 @@ -1774,6 +2146,72 @@ # CHECK: clgr %r7, %r8 0xb9 0x21 0x00 0x78 +# CHECK: clgrb %r0, %r0, 0, 0 +0xec 0x00 0x00 0x00 0x00 0xe5 + +# CHECK: clgrb %r0, %r15, 0, 0 +0xec 0x0f 0x00 0x00 0x00 0xe5 + +# CHECK: clgrb %r15, %r0, 0, 0 +0xec 0xf0 0x00 0x00 0x00 0xe5 + +# CHECK: clgrb %r7, %r8, 0, 0 +0xec 0x78 0x00 0x00 0x00 0xe5 + +# CHECK: clgrb %r0, %r0, 0, 4095(%r15) +0xec 0x00 0xff 0xff 0x00 0xe5 + +# CHECK: clgrb %r0, %r0, 0, 0(%r8) +0xec 0x00 0x80 0x00 0x00 0xe5 + +# CHECK: clgrb %r0, %r0, 0, 4095(%r7) +0xec 0x00 0x7f 0xff 0x00 0xe5 + +# CHECK: clgrb %r0, %r0, 1, 0 +0xec 0x00 0x00 0x00 0x10 0xe5 + +# CHECK: clgrbh %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x20 0xe5 + +# CHECK: clgrb %r0, %r0, 3, 0 +0xec 0x00 0x00 0x00 0x30 0xe5 + +# CHECK: clgrbl %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x40 0xe5 + +# CHECK: clgrb %r0, %r0, 5, 0 +0xec 0x00 0x00 0x00 0x50 0xe5 + +# CHECK: clgrblh %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x60 0xe5 + +# CHECK: clgrb %r0, %r0, 7, 0 +0xec 0x00 0x00 0x00 0x70 0xe5 + +# CHECK: clgrbe %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x80 0xe5 + +# CHECK: clgrb %r0, %r0, 9, 0 +0xec 0x00 0x00 0x00 0x90 0xe5 + +# CHECK: clgrbhe %r0, %r0, 0 +0xec 0x00 0x00 0x00 0xa0 0xe5 + +# CHECK: clgrb %r0, %r0, 11, 0 +0xec 0x00 0x00 0x00 0xb0 0xe5 + +# CHECK: clgrble %r0, %r0, 0 +0xec 0x00 0x00 0x00 0xc0 0xe5 + +# CHECK: clgrb %r0, %r0, 13, 0 +0xec 0x00 0x00 0x00 0xd0 0xe5 + +# CHECK: clgrb %r0, %r0, 14, 0 +0xec 0x00 0x00 0x00 0xe0 0xe5 + +# CHECK: clgrb %r0, %r0, 15, 0 +0xec 0x00 0x00 0x00 0xf0 0xe5 + # CHECK: clg %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x21 @@ -1876,6 +2314,78 @@ # CHECK: cli 4095(%r15), 42 0x95 0x2a 0xff 0xff +# CHECK: clib %r0, 0, 0, 0 +0xec 0x00 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 128, 0, 0 +0xec 0x00 0x00 0x00 0x80 0xff + +# CHECK: clib %r0, 255, 0, 0 +0xec 0x00 0x00 0x00 0xff 0xff + +# CHECK: clib %r0, 127, 0, 0 +0xec 0x00 0x00 0x00 0x7f 0xff + +# CHECK: clib %r15, 0, 0, 0 +0xec 0xf0 0x00 0x00 0x00 0xff + +# CHECK: clib %r7, 100, 0, 0 +0xec 0x70 0x00 0x00 0x64 0xff + +# CHECK: clib %r0, 0, 0, 4095(%r15) +0xec 0x00 0xff 0xff 0x00 0xff + +# CHECK: clib %r0, 0, 0, 0(%r8) +0xec 0x00 0x80 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 0, 4095(%r7) +0xec 0x00 0x7f 0xff 0x00 0xff + +# CHECK: clib %r0, 0, 1, 0 +0xec 0x01 0x00 0x00 0x00 0xff + +# CHECK: clibh %r0, 0, 0 +0xec 0x02 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 3, 0 +0xec 0x03 0x00 0x00 0x00 0xff + +# CHECK: clibl %r0, 0, 0 +0xec 0x04 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 5, 0 +0xec 0x05 0x00 0x00 0x00 0xff + +# CHECK: cliblh %r0, 0, 0 +0xec 0x06 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 7, 0 +0xec 0x07 0x00 0x00 0x00 0xff + +# CHECK: clibe %r0, 0, 0 +0xec 0x08 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 9, 0 +0xec 0x09 0x00 0x00 0x00 0xff + +# CHECK: clibhe %r0, 0, 0 +0xec 0x0a 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 11, 0 +0xec 0x0b 0x00 0x00 0x00 0xff + +# CHECK: clible %r0, 0, 0 +0xec 0x0c 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 13, 0 +0xec 0x0d 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 14, 0 +0xec 0x0e 0x00 0x00 0x00 0xff + +# CHECK: clib %r0, 0, 15, 0 +0xec 0x0f 0x00 0x00 0x00 0xff + # CHECK: clih %r0, 0 0xcc 0x0f 0x00 0x00 0x00 0x00 @@ -1930,6 +2440,108 @@ # CHECK: clr %r7, %r8 0x15 0x78 +# CHECK: clrb %r0, %r0, 0, 0 +0xec 0x00 0x00 0x00 0x00 0xf7 + +# CHECK: clrb %r0, %r15, 0, 0 +0xec 0x0f 0x00 0x00 0x00 0xf7 + +# CHECK: clrb %r15, %r0, 0, 0 +0xec 0xf0 0x00 0x00 0x00 0xf7 + +# CHECK: clrb %r7, %r8, 0, 0 +0xec 0x78 0x00 0x00 0x00 0xf7 + +# CHECK: clrb %r0, %r0, 0, 4095(%r15) +0xec 0x00 0xff 0xff 0x00 0xf7 + +# CHECK: clrb %r0, %r0, 0, 0(%r8) +0xec 0x00 0x80 0x00 0x00 0xf7 + +# CHECK: clrb %r0, %r0, 0, 4095(%r7) +0xec 0x00 0x7f 0xff 0x00 0xf7 + +# CHECK: clrb %r0, %r0, 1, 0 +0xec 0x00 0x00 0x00 0x10 0xf7 + +# CHECK: clrbh %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x20 0xf7 + +# CHECK: clrb %r0, %r0, 3, 0 +0xec 0x00 0x00 0x00 0x30 0xf7 + +# CHECK: clrbl %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x40 0xf7 + +# CHECK: clrb %r0, %r0, 5, 0 +0xec 0x00 0x00 0x00 0x50 0xf7 + +# CHECK: clrblh %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x60 0xf7 + +# CHECK: clrb %r0, %r0, 7, 0 +0xec 0x00 0x00 0x00 0x70 0xf7 + +# CHECK: clrbe %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x80 0xf7 + +# CHECK: clrb %r0, %r0, 9, 0 +0xec 0x00 0x00 0x00 0x90 0xf7 + +# CHECK: clrbhe %r0, %r0, 0 +0xec 0x00 0x00 0x00 0xa0 0xf7 + +# CHECK: clrb %r0, %r0, 11, 0 +0xec 0x00 0x00 0x00 0xb0 0xf7 + +# CHECK: clrble %r0, %r0, 0 +0xec 0x00 0x00 0x00 0xc0 0xf7 + +# CHECK: clrb %r0, %r0, 13, 0 +0xec 0x00 0x00 0x00 0xd0 0xf7 + +# CHECK: clrb %r0, %r0, 14, 0 +0xec 0x00 0x00 0x00 0xe0 0xf7 + +# CHECK: clrb %r0, %r0, 15, 0 +0xec 0x00 0x00 0x00 0xf0 0xf7 + +# CHECK: clgrth %r0, %r1 +0xb9 0x61 0x20 0x01 + +# CHECK: clgrtl %r0, %r1 +0xb9 0x61 0x40 0x01 + +# CHECK: clgrte %r0, %r1 +0xb9 0x61 0x80 0x01 + +# CHECK: clgrtlh %r0, %r1 +0xb9 0x61 0x60 0x01 + +# CHECK: clgrthe %r0, %r1 +0xb9 0x61 0xa0 0x01 + +# CHECK: clgrtle %r0, %r1 +0xb9 0x61 0xc0 0x01 + +# CHECK: clrth %r0, %r1 +0xb9 0x73 0x20 0x01 + +# CHECK: clrtl %r0, %r1 +0xb9 0x73 0x40 0x01 + +# CHECK: clrte %r0, %r1 +0xb9 0x73 0x80 0x01 + +# CHECK: clrtlh %r0, %r1 +0xb9 0x73 0x60 0x01 + +# CHECK: clrthe %r0, %r1 +0xb9 0x73 0xa0 0x01 + +# CHECK: clrtle %r0, %r1 +0xb9 0x73 0xc0 0x01 + # CHECK: clst %r0, %r0 0xb2 0x5d 0x00 0x00 @@ -2023,6 +2635,90 @@ # CHECK: cr %r7, %r8 0x19 0x78 +# CHECK: crb %r0, %r0, 0, 0 +0xec 0x00 0x00 0x00 0x00 0xf6 + +# CHECK: crb %r0, %r15, 0, 0 +0xec 0x0f 0x00 0x00 0x00 0xf6 + +# CHECK: crb %r15, %r0, 0, 0 +0xec 0xf0 0x00 0x00 0x00 0xf6 + +# CHECK: crb %r7, %r8, 0, 0 +0xec 0x78 0x00 0x00 0x00 0xf6 + +# CHECK: crb %r0, %r0, 0, 4095(%r15) +0xec 0x00 0xff 0xff 0x00 0xf6 + +# CHECK: crb %r0, %r0, 0, 0(%r8) +0xec 0x00 0x80 0x00 0x00 0xf6 + +# CHECK: crb %r0, %r0, 0, 4095(%r7) +0xec 0x00 0x7f 0xff 0x00 0xf6 + +# CHECK: crb %r0, %r0, 1, 0 +0xec 0x00 0x00 0x00 0x10 0xf6 + +# CHECK: crbh %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x20 0xf6 + +# CHECK: crb %r0, %r0, 3, 0 +0xec 0x00 0x00 0x00 0x30 0xf6 + +# CHECK: crbl %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x40 0xf6 + +# CHECK: crb %r0, %r0, 5, 0 +0xec 0x00 0x00 0x00 0x50 0xf6 + +# CHECK: crblh %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x60 0xf6 + +# CHECK: crb %r0, %r0, 7, 0 +0xec 0x00 0x00 0x00 0x70 0xf6 + +# CHECK: crbe %r0, %r0, 0 +0xec 0x00 0x00 0x00 0x80 0xf6 + +# CHECK: crb %r0, %r0, 9, 0 +0xec 0x00 0x00 0x00 0x90 0xf6 + +# CHECK: crbhe %r0, %r0, 0 +0xec 0x00 0x00 0x00 0xa0 0xf6 + +# CHECK: crb %r0, %r0, 11, 0 +0xec 0x00 0x00 0x00 0xb0 0xf6 + +# CHECK: crble %r0, %r0, 0 +0xec 0x00 0x00 0x00 0xc0 0xf6 + +# CHECK: crb %r0, %r0, 13, 0 +0xec 0x00 0x00 0x00 0xd0 0xf6 + +# CHECK: crb %r0, %r0, 14, 0 +0xec 0x00 0x00 0x00 0xe0 0xf6 + +# CHECK: crb %r0, %r0, 15, 0 +0xec 0x00 0x00 0x00 0xf0 0xf6 + +# CHECK: crth %r0, %r1 +0xb9 0x72 0x20 0x01 + +# CHECK: crtl %r0, %r1 +0xb9 0x72 0x40 0x01 + +# CHECK: crte %r0, %r1 +0xb9 0x72 0x80 0x01 + +# CHECK: crtlh %r0, %r1 +0xb9 0x72 0x60 0x01 + +# CHECK: crthe %r0, %r1 +0xb9 0x72 0xa0 0x01 + +# CHECK: crtle %r0, %r1 +0xb9 0x72 0xc0 0x01 + # CHECK: csg %r0, %r0, -524288 0xeb 0x00 0x00 0x00 0x80 0x30 @@ -2512,6 +3208,27 @@ # CHECK: etnd %r7 0xb2 0xec 0x00 0x70 +# CHECK: ex %r0, 0 +0x44 0x00 0x00 0x00 + +# CHECK: ex %r0, 4095 +0x44 0x00 0x0f 0xff + +# CHECK: ex %r0, 0(%r1) +0x44 0x00 0x10 0x00 + +# CHECK: ex %r0, 0(%r15) +0x44 0x00 0xf0 0x00 + +# CHECK: ex %r0, 4095(%r1,%r15) +0x44 0x01 0xff 0xff + +# CHECK: ex %r0, 4095(%r15,%r1) +0x44 0x0f 0x1f 0xff + +# CHECK: ex %r15, 0 +0x44 0xf0 0x00 0x00 + # CHECK: fidbr %f0, 0, %f0 0xb3 0x5f 0x00 0x00 @@ -2644,6 +3361,87 @@ # CHECK: ic %r15, 0 0x43 0xf0 0x00 0x00 +# CHECK: icm %r0, 0, 0 +0xbf 0x00 0x00 0x00 + +# CHECK: icm %r0, 15, 4095 +0xbf 0x0f 0x0f 0xff + +# CHECK: icm %r0, 0, 0(%r1) +0xbf 0x00 0x10 0x00 + +# CHECK: icm %r0, 0, 0(%r15) +0xbf 0x00 0xf0 0x00 + +# CHECK: icm %r0, 15, 4095(%r15) +0xbf 0x0f 0xff 0xff + +# CHECK: icm %r0, 0, 4095(%r1) +0xbf 0x00 0x1f 0xff + +# CHECK: icm %r15, 0, 0 +0xbf 0xf0 0x00 0x00 + +# CHECK: icmh %r0, 0, -524288 +0xeb 0x00 0x00 0x00 0x80 0x80 + +# CHECK: icmh %r0, 0, -1 +0xeb 0x00 0x0f 0xff 0xff 0x80 + +# CHECK: icmh %r0, 15, 0 +0xeb 0x0f 0x00 0x00 0x00 0x80 + +# CHECK: icmh %r0, 15, 1 +0xeb 0x0f 0x00 0x01 0x00 0x80 + +# CHECK: icmh %r0, 8, 524287 +0xeb 0x08 0x0f 0xff 0x7f 0x80 + +# CHECK: icmh %r0, 8, 0(%r1) +0xeb 0x08 0x10 0x00 0x00 0x80 + +# CHECK: icmh %r0, 4, 0(%r15) +0xeb 0x04 0xf0 0x00 0x00 0x80 + +# CHECK: icmh %r0, 4, 524287(%r15) +0xeb 0x04 0xff 0xff 0x7f 0x80 + +# CHECK: icmh %r0, 0, 524287(%r1) +0xeb 0x00 0x1f 0xff 0x7f 0x80 + +# CHECK: icmh %r15, 0, 0 +0xeb 0xf0 0x00 0x00 0x00 0x80 + +# CHECK: icmy %r0, 0, -524288 +0xeb 0x00 0x00 0x00 0x80 0x81 + +# CHECK: icmy %r0, 0, -1 +0xeb 0x00 0x0f 0xff 0xff 0x81 + +# CHECK: icmy %r0, 15, 0 +0xeb 0x0f 0x00 0x00 0x00 0x81 + +# CHECK: icmy %r0, 15, 1 +0xeb 0x0f 0x00 0x01 0x00 0x81 + +# CHECK: icmy %r0, 8, 524287 +0xeb 0x08 0x0f 0xff 0x7f 0x81 + +# CHECK: icmy %r0, 8, 0(%r1) +0xeb 0x08 0x10 0x00 0x00 0x81 + +# CHECK: icmy %r0, 4, 0(%r15) +0xeb 0x04 0xf0 0x00 0x00 0x81 + +# CHECK: icmy %r0, 4, 524287(%r15) +0xeb 0x04 0xff 0xff 0x7f 0x81 + +# CHECK: icmy %r0, 0, 524287(%r1) +0xeb 0x00 0x1f 0xff 0x7f 0x81 + +# CHECK: icmy %r15, 0, 0 +0xeb 0xf0 0x00 0x00 0x00 0x81 + # CHECK: icy %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x73 @@ -4210,6 +5008,36 @@ # CHECK: llill %r15, 0 0xa5 0xff 0x00 0x00 +# CHECK: lm %r0, %r0, 0 +0x98 0x00 0x00 0x00 + +# CHECK: lm %r0, %r15, 0 +0x98 0x0f 0x00 0x00 + +# CHECK: lm %r14, %r15, 0 +0x98 0xef 0x00 0x00 + +# CHECK: lm %r15, %r15, 0 +0x98 0xff 0x00 0x00 + +# CHECK: lm %r0, %r0, 4095 +0x98 0x00 0x0f 0xff + +# CHECK: lm %r0, %r0, 1 +0x98 0x00 0x00 0x01 + +# CHECK: lm %r0, %r0, 0(%r1) +0x98 0x00 0x10 0x00 + +# CHECK: lm %r0, %r0, 0(%r15) +0x98 0x00 0xf0 0x00 + +# CHECK: lm %r0, %r0, 4095(%r1) +0x98 0x00 0x1f 0xff + +# CHECK: lm %r0, %r0, 4095(%r15) +0x98 0x00 0xff 0xff + # CHECK: lmg %r0, %r0, 0 0xeb 0x00 0x00 0x00 0x00 0x04 @@ -4249,6 +5077,84 @@ # CHECK: lmg %r0, %r0, 524287(%r15) 0xeb 0x00 0xff 0xff 0x7f 0x04 +# CHECK: lmh %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0x96 + +# CHECK: lmh %r0, %r15, 0 +0xeb 0x0f 0x00 0x00 0x00 0x96 + +# CHECK: lmh %r14, %r15, 0 +0xeb 0xef 0x00 0x00 0x00 0x96 + +# CHECK: lmh %r15, %r15, 0 +0xeb 0xff 0x00 0x00 0x00 0x96 + +# CHECK: lmh %r0, %r0, -524288 +0xeb 0x00 0x00 0x00 0x80 0x96 + +# CHECK: lmh %r0, %r0, -1 +0xeb 0x00 0x0f 0xff 0xff 0x96 + +# CHECK: lmh %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0x96 + +# CHECK: lmh %r0, %r0, 1 +0xeb 0x00 0x00 0x01 0x00 0x96 + +# CHECK: lmh %r0, %r0, 524287 +0xeb 0x00 0x0f 0xff 0x7f 0x96 + +# CHECK: lmh %r0, %r0, 0(%r1) +0xeb 0x00 0x10 0x00 0x00 0x96 + +# CHECK: lmh %r0, %r0, 0(%r15) +0xeb 0x00 0xf0 0x00 0x00 0x96 + +# CHECK: lmh %r0, %r0, 524287(%r1) +0xeb 0x00 0x1f 0xff 0x7f 0x96 + +# CHECK: lmh %r0, %r0, 524287(%r15) +0xeb 0x00 0xff 0xff 0x7f 0x96 + +# CHECK: lmy %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0x98 + +# CHECK: lmy %r0, %r15, 0 +0xeb 0x0f 0x00 0x00 0x00 0x98 + +# CHECK: lmy %r14, %r15, 0 +0xeb 0xef 0x00 0x00 0x00 0x98 + +# CHECK: lmy %r15, %r15, 0 +0xeb 0xff 0x00 0x00 0x00 0x98 + +# CHECK: lmy %r0, %r0, -524288 +0xeb 0x00 0x00 0x00 0x80 0x98 + +# CHECK: lmy %r0, %r0, -1 +0xeb 0x00 0x0f 0xff 0xff 0x98 + +# CHECK: lmy %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0x98 + +# CHECK: lmy %r0, %r0, 1 +0xeb 0x00 0x00 0x01 0x00 0x98 + +# CHECK: lmy %r0, %r0, 524287 +0xeb 0x00 0x0f 0xff 0x7f 0x98 + +# CHECK: lmy %r0, %r0, 0(%r1) +0xeb 0x00 0x10 0x00 0x00 0x98 + +# CHECK: lmy %r0, %r0, 0(%r15) +0xeb 0x00 0xf0 0x00 0x00 0x98 + +# CHECK: lmy %r0, %r0, 524287(%r1) +0xeb 0x00 0x1f 0xff 0x7f 0x98 + +# CHECK: lmy %r0, %r0, 524287(%r15) +0xeb 0x00 0xff 0xff 0x7f 0x98 + # CHECK: lndbr %f0, %f9 0xb3 0x11 0x00 0x09 @@ -4657,6 +5563,36 @@ # CHECK: lrvr %r15, %r15 0xb9 0x1f 0x00 0xff +# CHECK: lrvh %r0, -524288 +0xe3 0x00 0x00 0x00 0x80 0x1f + +# CHECK: lrvh %r0, -1 +0xe3 0x00 0x0f 0xff 0xff 0x1f + +# CHECK: lrvh %r0, 0 +0xe3 0x00 0x00 0x00 0x00 0x1f + +# CHECK: lrvh %r0, 1 +0xe3 0x00 0x00 0x01 0x00 0x1f + +# CHECK: lrvh %r0, 524287 +0xe3 0x00 0x0f 0xff 0x7f 0x1f + +# CHECK: lrvh %r0, 0(%r1) +0xe3 0x00 0x10 0x00 0x00 0x1f + +# CHECK: lrvh %r0, 0(%r15) +0xe3 0x00 0xf0 0x00 0x00 0x1f + +# CHECK: lrvh %r0, 524287(%r1,%r15) +0xe3 0x01 0xff 0xff 0x7f 0x1f + +# CHECK: lrvh %r0, 524287(%r15,%r1) +0xe3 0x0f 0x1f 0xff 0x7f 0x1f + +# CHECK: lrvh %r15, 0 +0xe3 0xf0 0x00 0x00 0x00 0x1f + # CHECK: lrv %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x1e @@ -6826,6 +7762,66 @@ # CHECK: shy %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x7b +# CHECK: sla %r0, 0 +0x8b 0x00 0x00 0x00 + +# CHECK: sla %r7, 0 +0x8b 0x70 0x00 0x00 + +# CHECK: sla %r15, 0 +0x8b 0xf0 0x00 0x00 + +# CHECK: sla %r0, 4095 +0x8b 0x00 0x0f 0xff + +# CHECK: sla %r0, 0(%r1) +0x8b 0x00 0x10 0x00 + +# CHECK: sla %r0, 0(%r15) +0x8b 0x00 0xf0 0x00 + +# CHECK: sla %r0, 4095(%r1) +0x8b 0x00 0x1f 0xff + +# CHECK: sla %r0, 4095(%r15) +0x8b 0x00 0xff 0xff + +# CHECK: slak %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0xdd + +# CHECK: slak %r15, %r1, 0 +0xeb 0xf1 0x00 0x00 0x00 0xdd + +# CHECK: slak %r1, %r15, 0 +0xeb 0x1f 0x00 0x00 0x00 0xdd + +# CHECK: slak %r15, %r15, 0 +0xeb 0xff 0x00 0x00 0x00 0xdd + +# CHECK: slak %r0, %r0, -524288 +0xeb 0x00 0x00 0x00 0x80 0xdd + +# CHECK: slak %r0, %r0, -1 +0xeb 0x00 0x0f 0xff 0xff 0xdd + +# CHECK: slak %r0, %r0, 1 +0xeb 0x00 0x00 0x01 0x00 0xdd + +# CHECK: slak %r0, %r0, 524287 +0xeb 0x00 0x0f 0xff 0x7f 0xdd + +# CHECK: slak %r0, %r0, 0(%r1) +0xeb 0x00 0x10 0x00 0x00 0xdd + +# CHECK: slak %r0, %r0, 0(%r15) +0xeb 0x00 0xf0 0x00 0x00 0xdd + +# CHECK: slak %r0, %r0, 524287(%r1) +0xeb 0x00 0x1f 0xff 0x7f 0xdd + +# CHECK: slak %r0, %r0, 524287(%r15) +0xeb 0x00 0xff 0xff 0x7f 0xdd + # CHECK: slbgr %r0, %r0 0xb9 0x89 0x00 0x00 @@ -7879,6 +8875,36 @@ # CHECK: sthy %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x70 +# CHECK: stm %r0, %r0, 0 +0x90 0x00 0x00 0x00 + +# CHECK: stm %r0, %r15, 0 +0x90 0x0f 0x00 0x00 + +# CHECK: stm %r14, %r15, 0 +0x90 0xef 0x00 0x00 + +# CHECK: stm %r15, %r15, 0 +0x90 0xff 0x00 0x00 + +# CHECK: stm %r0, %r0, 4095 +0x90 0x00 0x0f 0xff + +# CHECK: stm %r0, %r0, 1 +0x90 0x00 0x00 0x01 + +# CHECK: stm %r0, %r0, 0(%r1) +0x90 0x00 0x10 0x00 + +# CHECK: stm %r0, %r0, 0(%r15) +0x90 0x00 0xf0 0x00 + +# CHECK: stm %r0, %r0, 4095(%r1) +0x90 0x00 0x1f 0xff + +# CHECK: stm %r0, %r0, 4095(%r15) +0x90 0x00 0xff 0xff + # CHECK: stmg %r0, %r0, 0 0xeb 0x00 0x00 0x00 0x00 0x24 @@ -7918,6 +8944,84 @@ # CHECK: stmg %r0, %r0, 524287(%r15) 0xeb 0x00 0xff 0xff 0x7f 0x24 +# CHECK: stmh %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0x26 + +# CHECK: stmh %r0, %r15, 0 +0xeb 0x0f 0x00 0x00 0x00 0x26 + +# CHECK: stmh %r14, %r15, 0 +0xeb 0xef 0x00 0x00 0x00 0x26 + +# CHECK: stmh %r15, %r15, 0 +0xeb 0xff 0x00 0x00 0x00 0x26 + +# CHECK: stmh %r0, %r0, -524288 +0xeb 0x00 0x00 0x00 0x80 0x26 + +# CHECK: stmh %r0, %r0, -1 +0xeb 0x00 0x0f 0xff 0xff 0x26 + +# CHECK: stmh %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0x26 + +# CHECK: stmh %r0, %r0, 1 +0xeb 0x00 0x00 0x01 0x00 0x26 + +# CHECK: stmh %r0, %r0, 524287 +0xeb 0x00 0x0f 0xff 0x7f 0x26 + +# CHECK: stmh %r0, %r0, 0(%r1) +0xeb 0x00 0x10 0x00 0x00 0x26 + +# CHECK: stmh %r0, %r0, 0(%r15) +0xeb 0x00 0xf0 0x00 0x00 0x26 + +# CHECK: stmh %r0, %r0, 524287(%r1) +0xeb 0x00 0x1f 0xff 0x7f 0x26 + +# CHECK: stmh %r0, %r0, 524287(%r15) +0xeb 0x00 0xff 0xff 0x7f 0x26 + +# CHECK: stmy %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0x90 + +# CHECK: stmy %r0, %r15, 0 +0xeb 0x0f 0x00 0x00 0x00 0x90 + +# CHECK: stmy %r14, %r15, 0 +0xeb 0xef 0x00 0x00 0x00 0x90 + +# CHECK: stmy %r15, %r15, 0 +0xeb 0xff 0x00 0x00 0x00 0x90 + +# CHECK: stmy %r0, %r0, -524288 +0xeb 0x00 0x00 0x00 0x80 0x90 + +# CHECK: stmy %r0, %r0, -1 +0xeb 0x00 0x0f 0xff 0xff 0x90 + +# CHECK: stmy %r0, %r0, 0 +0xeb 0x00 0x00 0x00 0x00 0x90 + +# CHECK: stmy %r0, %r0, 1 +0xeb 0x00 0x00 0x01 0x00 0x90 + +# CHECK: stmy %r0, %r0, 524287 +0xeb 0x00 0x0f 0xff 0x7f 0x90 + +# CHECK: stmy %r0, %r0, 0(%r1) +0xeb 0x00 0x10 0x00 0x00 0x90 + +# CHECK: stmy %r0, %r0, 0(%r15) +0xeb 0x00 0xf0 0x00 0x00 0x90 + +# CHECK: stmy %r0, %r0, 524287(%r1) +0xeb 0x00 0x1f 0xff 0x7f 0x90 + +# CHECK: stmy %r0, %r0, 524287(%r15) +0xeb 0x00 0xff 0xff 0x7f 0x90 + # CHECK: strvg %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x2f @@ -7948,6 +9052,36 @@ # CHECK: strvg %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x2f +# CHECK: strvh %r0, -524288 +0xe3 0x00 0x00 0x00 0x80 0x3f + +# CHECK: strvh %r0, -1 +0xe3 0x00 0x0f 0xff 0xff 0x3f + +# CHECK: strvh %r0, 0 +0xe3 0x00 0x00 0x00 0x00 0x3f + +# CHECK: strvh %r0, 1 +0xe3 0x00 0x00 0x01 0x00 0x3f + +# CHECK: strvh %r0, 524287 +0xe3 0x00 0x0f 0xff 0x7f 0x3f + +# CHECK: strvh %r0, 0(%r1) +0xe3 0x00 0x10 0x00 0x00 0x3f + +# CHECK: strvh %r0, 0(%r15) +0xe3 0x00 0xf0 0x00 0x00 0x3f + +# CHECK: strvh %r0, 524287(%r1,%r15) +0xe3 0x01 0xff 0xff 0x7f 0x3f + +# CHECK: strvh %r0, 524287(%r15,%r1) +0xe3 0x0f 0x1f 0xff 0x7f 0x3f + +# CHECK: strvh %r15, 0 +0xe3 0xf0 0x00 0x00 0x00 0x3f + # CHECK: strv %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x3e @@ -8146,6 +9280,18 @@ # CHECK: sty %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x50 +# CHECK: svc 0 +0x0a 0x00 + +# CHECK: svc 3 +0x0a 0x03 + +# CHECK: svc 128 +0x0a 0x80 + +# CHECK: svc 255 +0x0a 0xff + # CHECK: sxbr %f0, %f0 0xb3 0x4b 0x00 0x00 @@ -8272,6 +9418,69 @@ # CHECK: tbeginc 4095(%r15), 42 0xe5 0x61 0xff 0xff 0x00 0x2a +# CHECK: tcdb %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x11 + +# CHECK: tcdb %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x11 + +# CHECK: tcdb %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x11 + +# CHECK: tcdb %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x11 + +# CHECK: tcdb %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x11 + +# CHECK: tcdb %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x11 + +# CHECK: tcdb %f15, 0 +0xed 0xf0 0x00 0x00 0x00 0x11 + +# CHECK: tceb %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x10 + +# CHECK: tceb %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x10 + +# CHECK: tceb %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x10 + +# CHECK: tceb %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x10 + +# CHECK: tceb %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x10 + +# CHECK: tceb %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x10 + +# CHECK: tceb %f15, 0 +0xed 0xf0 0x00 0x00 0x00 0x10 + +# CHECK: tcxb %f0, 0 +0xed 0x00 0x00 0x00 0x00 0x12 + +# CHECK: tcxb %f0, 4095 +0xed 0x00 0x0f 0xff 0x00 0x12 + +# CHECK: tcxb %f0, 0(%r1) +0xed 0x00 0x10 0x00 0x00 0x12 + +# CHECK: tcxb %f0, 0(%r15) +0xed 0x00 0xf0 0x00 0x00 0x12 + +# CHECK: tcxb %f0, 4095(%r1,%r15) +0xed 0x01 0xff 0xff 0x00 0x12 + +# CHECK: tcxb %f0, 4095(%r15,%r1) +0xed 0x0f 0x1f 0xff 0x00 0x12 + +# CHECK: tcxb %f13, 0 +0xed 0xd0 0x00 0x00 0x00 0x12 + # CHECK: tend 0xb2 0xf8 0x00 0x00 diff --git a/test/MC/Disassembler/X86/intel-syntax.txt b/test/MC/Disassembler/X86/intel-syntax.txt index 0a628af02c15..17d9d53e4183 100644 --- a/test/MC/Disassembler/X86/intel-syntax.txt +++ b/test/MC/Disassembler/X86/intel-syntax.txt @@ -108,10 +108,10 @@ # CHECK: vshufpd xmm0, xmm1, xmm2, 1 0xc5 0xf1 0xc6 0xc2 0x01 -# CHECK: vpgatherqq ymm2, qword ptr [rdi + 2*ymm1], ymm0 +# CHECK: vpgatherqq ymm2, ymmword ptr [rdi + 2*ymm1], ymm0 0xc4 0xe2 0xfd 0x91 0x14 0x4f -# CHECK: vpgatherdd xmm10, dword ptr [r15 + 2*xmm9], xmm8 +# CHECK: vpgatherdd xmm10, xmmword ptr [r15 + 2*xmm9], xmm8 0xc4 0x02 0x39 0x90 0x14 0x4f # CHECK: xsave64 opaque ptr [rax] diff --git a/test/MC/Disassembler/X86/simple-tests.txt b/test/MC/Disassembler/X86/simple-tests.txt index 875c5b711a90..620f24919703 100644 --- a/test/MC/Disassembler/X86/simple-tests.txt +++ b/test/MC/Disassembler/X86/simple-tests.txt @@ -51,6 +51,12 @@ # CHECK: rdtscp 0x0f 0x01 0xf9 +# CHECK: monitorx +0x0f 0x01 0xfa + +# CHECK: mwaitx +0x0f 0x01 0xfb + # CHECK: vmxon 0xf3 0x0f 0xc7 0x30 @@ -905,12 +911,21 @@ # CHECK: vpcmov %ymm1, %ymm2, %ymm3, %ymm4 0x8f 0xe8 0x64 0xa2 0xe2 0x10 +# CHECK: vpcmov %ymm2, %ymm1, %ymm3, %ymm4 +0x8f 0xe8 0xe4 0xa2 0xe2 0x10 + # CHECK: vpcmov (%rax), %ymm2, %ymm3, %ymm4 0x8f 0xe8 0xe4 0xa2 0x20 0x20 # CHECK: vpcmov %ymm1, (%rax), %ymm3, %ymm4 0x8f 0xe8 0x64 0xa2 0x20 0x10 +# CHECK: vpermil2pd $0, %xmm3, %xmm2, %xmm1, %xmm0 +0xc4 0xe3 0x71 0x49 0xc2 0x30 + +# CHECK: vpermil2pd $0, %xmm2, %xmm3, %xmm1, %xmm0 +0xc4 0xe3 0xf1 0x49 0xc2 0x30 + # CHECK: vpcomeqb %xmm6, %xmm4, %xmm2 0x8f 0xe8 0x58 0xcc 0xd6 0x04 diff --git a/test/MC/Disassembler/X86/x86-32.txt b/test/MC/Disassembler/X86/x86-32.txt index c51e0a3dc379..f92d6057877b 100644 --- a/test/MC/Disassembler/X86/x86-32.txt +++ b/test/MC/Disassembler/X86/x86-32.txt @@ -90,6 +90,12 @@ # CHECK: rdtscp 0x0f 0x01 0xf9 +# CHECK: monitorx +0x0f 0x01 0xfa + +# CHECK: mwaitx +0x0f 0x01 0xfb + # CHECK: vmxon 0xf3 0x0f 0xc7 0x30 diff --git a/test/MC/ELF/cfi-version.ll b/test/MC/ELF/cfi-version.ll index 6bb9f8ba8fe7..7087944a6a44 100644 --- a/test/MC/ELF/cfi-version.ll +++ b/test/MC/ELF/cfi-version.ll @@ -24,11 +24,10 @@ attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !llvm.module.flags = !{!9, !10} !llvm.ident = !{!11} -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: 1, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2) +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2) !1 = !DIFile(filename: "test.c", directory: "/tmp") !2 = !{} -!3 = !{!4} -!4 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2) +!4 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2) !5 = !DIFile(filename: "test.c", directory: "/tmp") !6 = !DISubroutineType(types: !7) !7 = !{!8} diff --git a/test/MC/ELF/compression.s b/test/MC/ELF/compression.s index 5560ba78c68f..0777ee3f9032 100644 --- a/test/MC/ELF/compression.s +++ b/test/MC/ELF/compression.s @@ -1,36 +1,70 @@ -// RUN: llvm-mc -filetype=obj -compress-debug-sections -triple x86_64-pc-linux-gnu < %s -o %t -// RUN: llvm-objdump -s %t | FileCheck %s -// RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck --check-prefix=INFO %s -// RUN: llvm-mc -filetype=obj -compress-debug-sections -triple i386-pc-linux-gnu < %s \ -// RUN: | llvm-readobj -symbols - | FileCheck --check-prefix=386-SYMBOLS %s +// Check zlib-gnu style +// RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib-gnu -triple x86_64-pc-linux-gnu < %s -o %t +// RUN: llvm-objdump -s %t | FileCheck --check-prefix=CHECK-GNU-STYLE %s +// RUN: llvm-dwarfdump -debug-dump=str %t | FileCheck --check-prefix=STR %s +// RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib-gnu -triple i386-pc-linux-gnu < %s \ +// RUN: | llvm-readobj -symbols - | FileCheck --check-prefix=386-SYMBOLS-GNU %s -// REQUIRES: zlib +// Check zlib style +// RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib -triple x86_64-pc-linux-gnu < %s -o %t +// RUN: llvm-objdump -s %t | FileCheck --check-prefix=CHECK-ZLIB-STYLE %s +// RUN: llvm-dwarfdump -debug-dump=str %t | FileCheck --check-prefix=STR %s +// RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib -triple i386-pc-linux-gnu < %s \ +// RUN: | llvm-readobj -symbols - | FileCheck --check-prefix=386-SYMBOLS-ZLIB %s +// RUN: llvm-readobj -sections %t | FileCheck --check-prefix=ZLIB-STYLE-FLAGS %s -// CHECK: Contents of section .zdebug_line: -// Check for the 'ZLIB' file magic at the start of the section only -// CHECK-NEXT: ZLIB -// CHECK-NOT: ZLIB +// REQUIRES: zlib // Don't compress small sections, such as this simple debug_abbrev example -// CHECK: Contents of section .debug_abbrev: -// CHECK-NOT: ZLIB -// CHECK-NOT: Contents of +// CHECK-GNU-STYLE: Contents of section .debug_abbrev: +// CHECK-GNU-STYLE-NOT: ZLIB +// CHECK-GNU-STYLE-NOT: Contents of -// CHECK: Contents of section .debug_info: +// CHECK-GNU-STYLE: Contents of section .debug_info: +// CHECK-GNU-STYLE: Contents of section .zdebug_str: +// Check for the 'ZLIB' file magic at the start of the section only +// CHECK-GNU-STYLE-NEXT: ZLIB +// CHECK-GNU-STYLE-NOT: ZLIB // FIXME: Handle compressing alignment fragments to support compressing debug_frame -// CHECK: Contents of section .debug_frame: -// CHECK-NOT: ZLIB -// CHECK: Contents of +// CHECK-GNU-STYLE: Contents of section .debug_frame: +// CHECK-GNU-STYLE-NOT: ZLIB +// CHECK-GNU-STYLE: Contents of -// Decompress one valid dwarf section just to check that this roundtrips -// INFO: 0x00000000: Compile Unit: length = 0x0000000c version = 0x0004 abbr_offset = 0x0000 addr_size = 0x08 (next unit at 0x00000010) +// Decompress one valid dwarf section just to check that this roundtrips, +// we use .zdebug_str section for that +// STR: perfectly compressable data sample ***************************************** // In x86 32 bit named symbols are used for temporary symbols in merge // sections, so make sure we handle symbols inside compressed sections -// 386-SYMBOLS: Name: .Linfo_string0 -// 386-SYMBOLS-NOT: } -// 386-SYMBOLS: Section: .zdebug_str +// 386-SYMBOLS-GNU: Name: .Linfo_string0 +// 386-SYMBOLS-GNU-NOT: } +// 386-SYMBOLS-GNU: Section: .zdebug_str + +// Now check the zlib style output: + +// Don't compress small sections, such as this simple debug_abbrev example +// CHECK-ZLIB-STYLE: Contents of section .debug_abbrev: +// CHECK-ZLIB-STYLE-NOT: ZLIB +// CHECK-ZLIB-STYLE-NOT: Contents of +// CHECK-ZLIB-STYLE: Contents of section .debug_info: +// FIXME: Handle compressing alignment fragments to support compressing debug_frame +// CHECK-ZLIB-STYLE: Contents of section .debug_frame: +// CHECK-ZLIB-STYLE-NOT: ZLIB +// CHECK-ZLIB-STYLE: Contents of + +// Check that debug_line section was not renamed, so it is +// zlib-style, not zlib-gnu one. Check that SHF_COMPRESSED was set. +// ZLIB-STYLE-FLAGS: Section { +// ZLIB-STYLE-FLAGS: Index: +// ZLIB-STYLE-FLAGS: Name: .debug_str +// ZLIB-STYLE-FLAGS-NEXT: Type: SHT_PROGBITS +// ZLIB-STYLE-FLAGS-NEXT: Flags [ +// ZLIB-STYLE-FLAGS-NEXT: SHF_COMPRESSED + +// 386-SYMBOLS-ZLIB: Name: .Linfo_string0 +// 386-SYMBOLS-ZLIB-NOT: } +// 386-SYMBOLS-ZLIB: Section: .debug_str .section .debug_line,"",@progbits @@ -74,6 +108,9 @@ foo: .cfi_endproc .cfi_sections .debug_frame +# Below is the section we will use to check that after compression with llvm-mc, +# llvm-dwarfdump tool will be able to decompress data back and dump it. Data sample +# should be compressable enough, so it is filled with some amount of equal symbols at the end .section .debug_str,"MS",@progbits,1 .Linfo_string0: - .asciz "compress this " + .asciz "perfectly compressable data sample *****************************************" diff --git a/test/MC/ELF/got-relaxed-i386.s b/test/MC/ELF/got-relaxed-i386.s new file mode 100644 index 000000000000..927066c68f2f --- /dev/null +++ b/test/MC/ELF/got-relaxed-i386.s @@ -0,0 +1,22 @@ +// RUN: llvm-mc -filetype=obj -triple i386-pc-linux %s -o - | llvm-readobj -r | FileCheck %s +// RUN: llvm-mc -filetype=obj -relax-relocations=false -triple i386-pc-linux %s -o - | llvm-readobj -r | FileCheck --check-prefix=OLD %s + + movl mov@GOT(%ebx), %eax + mull mul@GOT(%ebx) + .long long@GOT + +// CHECK: Relocations [ +// CHECK-NEXT: Section ({{.*}}) .rel.text { +// CHECK-NEXT: R_386_GOT32X mov +// CHECK-NEXT: R_386_GOT32 mul +// CHECK-NEXT: R_386_GOT32 long +// CHECK-NEXT: } +// CHECK-NEXT: ] + +// OLD: Relocations [ +// OLD-NEXT: Section ({{.*}}) .rel.text { +// OLD-NEXT: R_386_GOT32 mov +// OLD-NEXT: R_386_GOT32 mul +// OLD-NEXT: R_386_GOT32 long +// OLD-NEXT: } +// OLD-NEXT: ] diff --git a/test/MC/ELF/got-relaxed-no-relax.s b/test/MC/ELF/got-relaxed-no-relax.s new file mode 100644 index 000000000000..69511cd78cd9 --- /dev/null +++ b/test/MC/ELF/got-relaxed-no-relax.s @@ -0,0 +1,15 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o - | llvm-readobj -r | FileCheck %s + +// these should not produce relaxable relocations + + movq foo@GOT, %rax + mulq foo@GOTPCREL(%rip) + .long foo@GOTPCREL + +// CHECK: Relocations [ +// CHECK: Section ({{.*}}) .rela.text { +// CHECK-NEXT: R_X86_64_GOT32 foo +// CHECK-NEXT: R_X86_64_GOTPCREL foo +// CHECK-NEXT: R_X86_64_GOTPCREL foo +// CHECK-NEXT: } +// CHECK-NEXT: ] diff --git a/test/MC/ELF/got-relaxed-rex.s b/test/MC/ELF/got-relaxed-rex.s new file mode 100644 index 000000000000..d35afaab3e52 --- /dev/null +++ b/test/MC/ELF/got-relaxed-rex.s @@ -0,0 +1,29 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o - | llvm-readobj -r | FileCheck %s + +// these should produce R_X86_64_REX_GOTPCRELX + + movq mov@GOTPCREL(%rip), %rax + test %rax, test@GOTPCREL(%rip) + adc adc@GOTPCREL(%rip), %rax + add add@GOTPCREL(%rip), %rax + and and@GOTPCREL(%rip), %rax + cmp cmp@GOTPCREL(%rip), %rax + or or@GOTPCREL(%rip), %rax + sbb sbb@GOTPCREL(%rip), %rax + sub sub@GOTPCREL(%rip), %rax + xor xor@GOTPCREL(%rip), %rax + +// CHECK: Relocations [ +// CHECK-NEXT: Section ({{.*}}) .rela.text { +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX mov +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX test +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX adc +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX add +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX and +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX cmp +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX or +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX sbb +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX sub +// CHECK-NEXT: R_X86_64_REX_GOTPCRELX xor +// CHECK-NEXT: } +// CHECK-NEXT: ] diff --git a/test/MC/ELF/got-relaxed.s b/test/MC/ELF/got-relaxed.s new file mode 100644 index 000000000000..c89e462095d8 --- /dev/null +++ b/test/MC/ELF/got-relaxed.s @@ -0,0 +1,21 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o - | llvm-readobj -r | FileCheck %s +// RUN: llvm-mc -filetype=obj -relax-relocations=false -triple x86_64-pc-linux %s -o - | llvm-readobj -r | FileCheck --check-prefix=OLD %s + +// these should produce R_X86_64_GOTPCRELX + + call *call@GOTPCREL(%rip) + jmp *jmp@GOTPCREL(%rip) + +// CHECK: Relocations [ +// CHECK-NEXT: Section ({{.*}}) .rela.text { +// CHECK-NEXT: R_X86_64_GOTPCRELX call +// CHECK-NEXT: R_X86_64_GOTPCRELX jmp +// CHECK-NEXT: } +// CHECK-NEXT: ] + +// OLD: Relocations [ +// OLD-NEXT: Section ({{.*}}) .rela.text { +// OLD-NEXT: R_X86_64_GOTPCREL call +// OLD-NEXT: R_X86_64_GOTPCREL jmp +// OLD-NEXT: } +// OLD-NEXT: ] diff --git a/test/MC/ELF/nocompression.s b/test/MC/ELF/nocompression.s index e7b01f7ad479..1b535fde7588 100644 --- a/test/MC/ELF/nocompression.s +++ b/test/MC/ELF/nocompression.s @@ -1,4 +1,5 @@ -// RUN: not llvm-mc -filetype=obj -compress-debug-sections -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s +// RUN: not llvm-mc -filetype=obj -compress-debug-sections=zlib -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s +// RUN: not llvm-mc -filetype=obj -compress-debug-sections=zlib-gnu -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s // REQUIRES: nozlib diff --git a/test/MC/ELF/relocation-386.s b/test/MC/ELF/relocation-386.s index 19efe0976129..e2c4e1073ad9 100644 --- a/test/MC/ELF/relocation-386.s +++ b/test/MC/ELF/relocation-386.s @@ -1,5 +1,5 @@ -// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | llvm-readobj -r | FileCheck %s --check-prefix=CHECK --check-prefix=I386 -// RUN: llvm-mc -filetype=obj -triple i386-pc-elfiamcu %s -o - | llvm-readobj -r | FileCheck %s --check-prefix=CHECK --check-prefix=IAMCU +// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -relax-relocations=false -o - | llvm-readobj -r | FileCheck %s --check-prefix=CHECK --check-prefix=I386 +// RUN: llvm-mc -filetype=obj -triple i386-pc-elfiamcu %s -relax-relocations=false -o - | llvm-readobj -r | FileCheck %s --check-prefix=CHECK --check-prefix=IAMCU // Test that we produce the correct relocation types and that the relocations // correctly point to the section or the symbol. diff --git a/test/MC/ELF/relocation-tls.s b/test/MC/ELF/relocation-tls.s new file mode 100644 index 000000000000..d0c375551ccc --- /dev/null +++ b/test/MC/ELF/relocation-tls.s @@ -0,0 +1,26 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sr | FileCheck %s + +// Test that we produce the correct relocation. + + leaq _ZL3ccc@TLSDESC(%rip), %rax + call *_ZL3ccc@TLSCALL(%rax) + addq %fs:0, %rax + +// CHECK: Section { +// CHECK: Index: +// CHECK: Name: .rela.text +// CHECK-NEXT: Type: SHT_RELA +// CHECK-NEXT: Flags [ +// CHECK-NEXT: ] +// CHECK-NEXT: Address: 0x0 +// CHECK-NEXT: Offset: +// CHECK-NEXT: Size: +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: +// CHECK-NEXT: AddressAlignment: 8 +// CHECK-NEXT: EntrySize: 24 +// CHECK-NEXT: Relocations [ +// CHECK-NEXT: 0x3 R_X86_64_GOTPC32_TLSDESC _ZL3ccc 0xFFFFFFFFFFFFFFFC +// CHECK-NEXT: 0x9 R_X86_64_TLSDESC_CALL _ZL3ccc 0x0 +// CHECK-NEXT: ] +// CHECK-NEXT: } diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s index 0fec76792818..e0313904563a 100644 --- a/test/MC/ELF/relocation.s +++ b/test/MC/ELF/relocation.s @@ -63,6 +63,11 @@ pr24486: .code16 call pr23771 + .weak weak_sym +weak_sym: + .long pr23272-weak_sym + + // CHECK: Section { // CHECK: Name: .rela.text // CHECK: Relocations [ @@ -101,5 +106,6 @@ pr24486: // CHECK-NEXT: 0xDC R_X86_64_PLT32 foo 0x0 // CHECK-NEXT: 0xF0 R_X86_64_32 .text 0xF0 // CHECK-NEXT: 0xF5 R_X86_64_PC16 pr23771 0xFFFFFFFFFFFFFFFE +// CHECK-NEXT: 0xF7 R_X86_64_PC32 pr23272 0x0 // CHECK-NEXT: ] // CHECK-NEXT: } diff --git a/test/MC/ELF/section-sym-err.s b/test/MC/ELF/section-sym-err.s deleted file mode 100644 index 789fee7c422c..000000000000 --- a/test/MC/ELF/section-sym-err.s +++ /dev/null @@ -1,6 +0,0 @@ -// RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t.o 2>&1 | FileCheck %s - -.section foo -foo: - -// CHECK: error: invalid symbol redefinition diff --git a/test/MC/ELF/section-sym-redefine.s b/test/MC/ELF/section-sym-redefine.s new file mode 100644 index 000000000000..1f6dd5723af1 --- /dev/null +++ b/test/MC/ELF/section-sym-redefine.s @@ -0,0 +1,138 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t -r --expand-relocs | FileCheck %s + +// Local symbol overriding section. +.section x1,"a",@progbits +.local x1 +.comm x1,4,4 +.long x1 // reloc: .bss + 0 + +// Section declared after local. Local symbol wins. +.local x2 +.comm x2,4,4 +.section x2,"a",@progbits +.long x2 // reloc: .bss + 4 + +// No overriding symbol. +.section x3,"a",@progbits +.long x3 // reloc: x3(section) + 0 + +// Global vs section. +.section x4,"a",@progbits +.long 0 +.globl x4 +.section foo, "a", @progbits +x4: +.long 0 +.long x4 // reloc: x4(global) + 0 + +// Global vs implicit section +.globl .data +.data: +.long 42 +.long .data // reloc: .data(global) + 0 + +// CHECK: Relocations [ +// CHECK: Section (4) .relax1 { +// CHECK: Relocation { +// CHECK: Offset: 0x0 +// CHECK: Type: R_X86_64_32 (10) +// CHECK: Symbol: .bss (3) +// CHECK: Addend: 0x0 +// CHECK: } +// CHECK: } +// CHECK: Section (7) .relax2 { +// CHECK: Relocation { +// CHECK: Offset: 0x0 +// CHECK: Type: R_X86_64_32 (10) +// CHECK: Symbol: .bss (3) +// CHECK: Addend: 0x4 +// CHECK: } +// CHECK: } +// CHECK: Section (9) .relax3 { +// CHECK: Relocation { +// CHECK: Offset: 0x0 +// CHECK: Type: R_X86_64_32 (10) +// CHECK: Symbol: x3 (4) +// CHECK: Addend: 0x0 +// CHECK: } +// CHECK: } +// CHECK: Section (12) .relafoo { +// CHECK: Relocation { +// CHECK: Offset: 0x4 +// CHECK: Type: R_X86_64_32 (10) +// CHECK: Symbol: x4 (6) +// CHECK: Addend: 0x0 +// CHECK: } +// CHECK: Relocation { +// CHECK: Offset: 0xC +// CHECK: Type: R_X86_64_32 (10) +// CHECK: Symbol: .data (5) +// CHECK: Addend: 0x0 +// CHECK: } +// CHECK: } +// CHECK: ] +// CHECK: Symbols [ +// CHECK: Symbol { +// CHECK: Name: (0) +// CHECK: Value: 0x0 +// CHECK: Size: 0 +// CHECK: Binding: Local (0x0) +// CHECK: Type: None (0x0) +// CHECK: Other: 0 +// CHECK: Section: Undefined (0x0) +// CHECK: } +// CHECK: Symbol { +// CHECK: Name: x1 (67) +// CHECK: Value: 0x0 +// CHECK: Size: 4 +// CHECK: Binding: Local (0x0) +// CHECK: Type: Object (0x1) +// CHECK: Other: 0 +// CHECK: Section: .bss (0x5) +// CHECK: } +// CHECK: Symbol { +// CHECK: Name: x2 (59) +// CHECK: Value: 0x4 +// CHECK: Size: 4 +// CHECK: Binding: Local (0x0) +// CHECK: Type: Object (0x1) +// CHECK: Other: 0 +// CHECK: Section: .bss (0x5) +// CHECK: } +// CHECK: Symbol { +// CHECK: Name: (0) +// CHECK: Value: 0x0 +// CHECK: Size: 0 +// CHECK: Binding: Local (0x0) +// CHECK: Type: Section (0x3) +// CHECK: Other: 0 +// CHECK: Section: .bss (0x5) +// CHECK: } +// CHECK: Symbol { +// CHECK: Name: (0) +// CHECK: Value: 0x0 +// CHECK: Size: 0 +// CHECK: Binding: Local (0x0) +// CHECK: Type: Section (0x3) +// CHECK: Other: 0 +// CHECK: Section: x3 (0x8) +// CHECK: } +// CHECK: Symbol { +// CHECK: Name: .data (37) +// CHECK: Value: 0x8 +// CHECK: Size: 0 +// CHECK: Binding: Global (0x1) +// CHECK: Type: None (0x0) +// CHECK: Other: 0 +// CHECK: Section: foo (0xB) +// CHECK: } +// CHECK: Symbol { +// CHECK: Name: x4 (43) +// CHECK: Value: 0x0 +// CHECK: Size: 0 +// CHECK: Binding: Global (0x1) +// CHECK: Type: None (0x0) +// CHECK: Other: 0 +// CHECK: Section: foo (0xB) +// CHECK: } +// CHECK: ] diff --git a/test/MC/ELF/section.s b/test/MC/ELF/section.s index 008c4605552a..0277be522361 100644 --- a/test/MC/ELF/section.s +++ b/test/MC/ELF/section.s @@ -6,11 +6,15 @@ .section .note.GNU-stack2,"",%progbits .section .note.GNU-,"",@progbits .section -.note.GNU,"","progbits" +.section src/stack.c,"",@progbits +.section ~!@$%^&*()_-+={[}]|\\:<>,"",@progbits // CHECK: Name: .note.GNU-stack // CHECK: Name: .note.GNU-stack2 // CHECK: Name: .note.GNU- // CHECK: Name: -.note.GNU +// CHECK: Name: src/stack.c +// CHECK: Name: ~!@$%^&*()_-+={[}]|\\:<> // Test that the defaults are used diff --git a/test/MC/ELF/undefined-directional.s b/test/MC/ELF/undefined-directional.s new file mode 100644 index 000000000000..e09acd731112 --- /dev/null +++ b/test/MC/ELF/undefined-directional.s @@ -0,0 +1,12 @@ +// RUN: not llvm-mc -triple x86_64-linux-gnu -filetype=obj -o /dev/null %s 2>&1 | FileCheck %s + +// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: directional label undefined + jmp 1b +// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: directional label undefined + jmp 1f +# 10 "wibble.s" +// CHECK: wibble.s:11:{{[0-9]+}}: error: directional label undefined + jmp 2f + +# 42 "invalid.s" + diff --git a/test/MC/Hexagon/align.s b/test/MC/Hexagon/align.s new file mode 100644 index 000000000000..01a112392ed4 --- /dev/null +++ b/test/MC/Hexagon/align.s @@ -0,0 +1,60 @@ +# RUN: llvm-mc -triple=hexagon -filetype=obj %s | llvm-objdump -d - | FileCheck %s + +# Verify that the .align directive emits the proper insn packets. + +{ r1 = sub(#1, r1) } +# CHECK: 76414021 { r1 = sub(#1, r1) +# CHECK-NEXT: 7f004000 nop +# CHECK-NEXT: 7f004000 nop +# CHECK-NEXT: 7f00c000 nop } + +.align 16 +{ r1 = sub(#1, r1) + r2 = sub(#1, r2) } +# CHECK: 76414021 { r1 = sub(#1, r1) +# CHECK-NEXT: 76424022 r2 = sub(#1, r2) +# CHECK-NEXT: 7f004000 nop +# CHECK-NEXT: 7f00c000 nop } + +.p2align 5 +{ r1 = sub(#1, r1) + r2 = sub(#1, r2) + r3 = sub(#1, r3) } +# CHECK: 76434023 r3 = sub(#1, r3) +# CHECK-NEXT: 7f00c000 nop } + +.align 16 +{ r1 = sub(#1, r1) + r2 = sub(#1, r2) + r3 = sub(#1, r3) + r4 = sub(#1, r4) } + +# Don't pad packets that can't be padded e.g. solo insts +# CHECK: 9200c020 { r0 = vextract(v0,r0) } +r0 = vextract(v0, r0) +.align 128 +# CHECK: 76414021 { r1 = sub(#1, r1) +# CHECK-NEXT: 7f00c000 nop } +{ r1 = sub(#1, r1) } + +#CHECK: { r1 = sub(#1, r1) +#CHECK: r2 = sub(#1, r2) +#CHECK: r3 = sub(#1, r3) } +.falign +.align 8 +{ r1 = sub(#1, r1) + r2 = sub(#1, r2) + r3 = sub(#1, r3) } + +# CHECK: { immext(#0) +# CHECK: r0 = sub(##1, r0) +# CHECK: immext(#0) +# CHECK: r1 = sub(##1, r1) } +# CHECK: { nop +# CHECK: nop +# CHECK: nop } +# CHECK: { r0 = sub(#1, r0) } +{ r0 = sub (##1, r0) + r1 = sub (##1, r1) } +.align 16 +{ r0 = sub (#1, r0) }
\ No newline at end of file diff --git a/test/MC/Hexagon/basic.ll b/test/MC/Hexagon/basic.ll index 8a5d2e6f872c..98b4cbc0a31d 100644 --- a/test/MC/Hexagon/basic.ll +++ b/test/MC/Hexagon/basic.ll @@ -4,4 +4,4 @@ ; OBJ: Format: ELF32-hexagon ; OBJ: Arch: hexagon ; OBJ: AddressSize: 32bit -; OBJ: Machine: EM_HEXAGON +; OBJ: Machine: EM_HEXAGON (0xA4) diff --git a/test/MC/Hexagon/double-vector-producer.s b/test/MC/Hexagon/double-vector-producer.s new file mode 100644 index 000000000000..5421653b5b47 --- /dev/null +++ b/test/MC/Hexagon/double-vector-producer.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv60 -filetype=obj %s | llvm-objdump -d - | FileCheck %s +{ + v1:0 = vshuff(v1,v0,r7) + v2.w = vadd(v13.w,v15.w) + v3.w = vadd(v8.w,v14.w) + vmem(r2+#-2) = v0.new +} + +# CHECK: 60 61 07 1b +# CHECK: 02 4d 4f 1c +# CHECK: 03 48 4e 1c +# CHECK: 26 e6 22 28 diff --git a/test/MC/Hexagon/duplex-registers.s b/test/MC/Hexagon/duplex-registers.s new file mode 100644 index 000000000000..f0cde7f9628d --- /dev/null +++ b/test/MC/Hexagon/duplex-registers.s @@ -0,0 +1,10 @@ +#RUN: llvm-mc -triple=hexagon -filetype=obj %s | llvm-objdump -d - | FileCheck %s + +.text +{ + r16 = memuh(r17 + #0) + r18 = memuh(r19 + #0) +} + +# CHECK: 289808ba +# CHECK: r16 = memuh(r17 + #0);{{ *}}r18 = memuh(r19 + #0) diff --git a/test/MC/Hexagon/elf-flags.s b/test/MC/Hexagon/elf-flags.s new file mode 100644 index 000000000000..94dce8152144 --- /dev/null +++ b/test/MC/Hexagon/elf-flags.s @@ -0,0 +1,9 @@ +# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv4 --filetype=obj %s -o - | llvm-readobj -file-headers -elf-output-style=GNU | FileCheck --check-prefix=CHECK-V4 %s +# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv5 --filetype=obj %s -o - | llvm-readobj -file-headers -elf-output-style=GNU | FileCheck --check-prefix=CHECK-V5 %s +# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv55 --filetype=obj %s -o - | llvm-readobj -file-headers -elf-output-style=GNU | FileCheck --check-prefix=CHECK-V55 %s +# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv60 --filetype=obj %s -o - | llvm-readobj -file-headers -elf-output-style=GNU | FileCheck --check-prefix=CHECK-V60 %s + +# CHECK-V4: Flags: 0x3 +# CHECK-V5: Flags: 0x4 +# CHECK-V55: Flags: 0x5 +# CHECK-V60: Flags: 0x60 diff --git a/test/MC/Hexagon/endloop.s b/test/MC/Hexagon/endloop.s index 303f84fb14ff..d537eb00ed05 100644 --- a/test/MC/Hexagon/endloop.s +++ b/test/MC/Hexagon/endloop.s @@ -1,4 +1,4 @@ -# RUN: llvm-mc -triple=hexagon -filetype=asm %s 2>%t; FileCheck %s <%t +# RUN: not llvm-mc -triple=hexagon -filetype=asm %s 2>&1 | FileCheck %s # Check that a branch in an end-loop packet is caught. diff --git a/test/MC/Hexagon/fixups.s b/test/MC/Hexagon/fixups.s new file mode 100644 index 000000000000..059a18fa8822 --- /dev/null +++ b/test/MC/Hexagon/fixups.s @@ -0,0 +1,25 @@ +# RUN: llvm-mc -arch=hexagon -filetype=obj %s | llvm-objdump -d - | FileCheck %s + + .text +# CHECK-LABEL: 0: +# CHECK: 2442e106 +# CHECK: if (!cmp.eq(r1.new, #1)) jump:t 0xc + { + r1 = zxth(r2) + if (!cmp.eq(r1.new, #1)) jump:t .L1 + } + nop +.L1: + .org 0x10 +# CHECK-LABEL: 10: +# CHECK: 00004020 +# CHECK: immext(#2048) +# CHECK: 2442e118 +# CHECK: if (!cmp.eq(r1.new, #1)) jump:t 0x81c + { + r1 = zxth(r2) + if (!cmp.eq(r1.new, #1)) jump:t .L2 + } + .org .+2048 +.L2: + diff --git a/test/MC/Hexagon/iconst.s b/test/MC/Hexagon/iconst.s new file mode 100644 index 000000000000..277c4de86923 --- /dev/null +++ b/test/MC/Hexagon/iconst.s @@ -0,0 +1,6 @@ +# RUN: llvm-mc -triple=hexagon -filetype=obj %s | llvm-objdump -d -r - | FileCheck %s + +a: +# CHECK: r0 = add(r0, #0) +# CHECK: R_HEX_23_REG +r0 = iconst(#a)
\ No newline at end of file diff --git a/test/MC/Hexagon/instructions/system_user.s b/test/MC/Hexagon/instructions/system_user.s index d52f8b41182a..f0ead9645dd5 100644 --- a/test/MC/Hexagon/instructions/system_user.s +++ b/test/MC/Hexagon/instructions/system_user.s @@ -24,3 +24,39 @@ dcfetch(r17 + #168) # Send value to ETM trace # CHECK: 00 c0 51 62 trace(r17) + +# CHECK: 00 c0 00 a0 +dccleana(r0) + +# CHECK: 00 c0 41 a0 +dccleaninva(r1) + +# CHECK: 00 c0 22 a0 +dcinva(r2) + +# CHECK: 00 c0 c3 a0 +dczeroa(r3) + +# CHECK: 00 c0 c4 56 +icinva(r4) + +# CHECK: 02 c0 c0 57 +isync + +# CHECK: 00 c6 05 a6 +l2fetch(r5, r6) + +# CHECK: 00 c8 87 a6 +l2fetch(r7, r9:8) + +# CHECK: 1c df 40 54 +pause(#255) + +# CHECK: 00 c0 40 a8 +syncht + +# CHECK: 18 df 00 54 +trap0(#254) + +# CHECK: 14 df 80 54 +trap1(#253) diff --git a/test/MC/Hexagon/lcomm.s b/test/MC/Hexagon/lcomm.s new file mode 100644 index 000000000000..ba44bc842c7b --- /dev/null +++ b/test/MC/Hexagon/lcomm.s @@ -0,0 +1,19 @@ +# RUN: llvm-mc -filetype=obj -triple=hexagon %s | llvm-objdump -t - | FileCheck %s +.lcomm dst1,1,1,1 +.lcomm dst2,2,2,2 +.lcomm dst4,4,4,4 +.lcomm dst8,8,8,8 + +r0 = add(pc, ##dst1@PCREL) +r0 = add(pc, ##dst2@PCREL) +r0 = add(pc, ##dst4@PCREL) +r0 = add(pc, ##dst8@PCREL) + +# CHECK: 00000000 l .sbss.1 00000001 dst1 +# CHECK: 00000000 l .sbss.2 00000002 dst2 +# CHECK: 00000000 l .sbss.4 00000004 dst4 +# CHECK: 00000000 l .sbss.8 00000008 dst8 +# CHECK: 00000000 l d .sbss.1 00000000 .sbss.1 +# CHECK: 00000000 l d .sbss.2 00000000 .sbss.2 +# CHECK: 00000000 l d .sbss.4 00000000 .sbss.4 +# CHECK: 00000000 l d .sbss.8 00000000 .sbss.8
\ No newline at end of file diff --git a/test/MC/Hexagon/new-value-check.s b/test/MC/Hexagon/new-value-check.s index e46360a7bb3d..978d6f151480 100644 --- a/test/MC/Hexagon/new-value-check.s +++ b/test/MC/Hexagon/new-value-check.s @@ -1,7 +1,7 @@ -# RUN: llvm-mc -triple=hexagon < %s 2>%t ; \ -# RUN: FileCheck %s < %t --check-prefix=CHECK-STRICT -# RUN: llvm-mc -triple=hexagon -relax-nv-checks < %s 2>%t ; \ -# RUN: FileCheck %s < %t --check-prefix=CHECK-RELAXED +# RUN: not llvm-mc -triple=hexagon < %s 2>&1 | \ +# RUN: FileCheck %s --check-prefix=CHECK-STRICT +# RUN: not llvm-mc -triple=hexagon -relax-nv-checks < %s 2>&1 | \ +# RUN: FileCheck %s --check-prefix=CHECK-RELAXED # CHECK-STRICT: :12:1: error: register `R0' used with `.new' but not validly modified in the same packet # CHECK-RELAXED: :12:1: error: register `R0' used with `.new' but not validly modified in the same packet diff --git a/test/MC/Hexagon/out_of_range.s b/test/MC/Hexagon/out_of_range.s index 2a98ef287f6b..f3f9e7a73b97 100644 --- a/test/MC/Hexagon/out_of_range.s +++ b/test/MC/Hexagon/out_of_range.s @@ -1,4 +1,4 @@ -# RUN: not llvm-mc -triple=hexagon -filetype=asm %s 2> %t; FileCheck %s < %t +# RUN: not llvm-mc -triple=hexagon -filetype=asm %s 2>&1 | FileCheck %s r1:0=##0xFFFFFF7000001000 # CHECK: rror: value -144(0xffffffffffffff70) out of range: -128-127 diff --git a/test/MC/Hexagon/register-alt-names.s b/test/MC/Hexagon/register-alt-names.s new file mode 100644 index 000000000000..97bfd32c51d9 --- /dev/null +++ b/test/MC/Hexagon/register-alt-names.s @@ -0,0 +1,14 @@ +# RUN: llvm-mc -arch=hexagon < %s | FileCheck %s + +# CHECK: r0 = r31 +r0 = lr + +# CHECK: r1 = r30 +r1 = fp + +# CHECK: r2 = r29 +r2 = sp + +# CHECK: r1:0 = combine(r31, r30) +r1:0 = lr:fp + diff --git a/test/MC/Hexagon/relocations.s b/test/MC/Hexagon/relocations.s new file mode 100644 index 000000000000..8b90bc7c0cdf --- /dev/null +++ b/test/MC/Hexagon/relocations.s @@ -0,0 +1,244 @@ +# RUN: llvm-mc -filetype=obj -triple=hexagon %s | llvm-objdump -r - | FileCheck %s + +# CHECK: R_HEX_B22_PCREL +r_hex_b22_pcrel: +{ jump #undefined } + +# CHECK: R_HEX_B15_PCREL +r_hex_b15_pcrel: +{ if (p0) jump #undefined } + +# CHECK: R_HEX_B7_PCREL +r_hex_b7_pcrel: +{ loop1 (#undefined, #0) } + +# CHECK: R_HEX_32 +r_hex_32: +.word undefined + +# CHECK: R_HEX_16 +r_hex_16: +.half undefined +.half 0 + +# CHECK: R_HEX_8 +r_hex_8: +.byte undefined +.byte 0 +.byte 0 +.byte 0 + +# CHECK: R_HEX_GPREL16_0 +r_hex_gprel16_0: +{ r0 = memb (#undefined@gotrel) } + +# CHECK: R_HEX_GPREL16_1 +r_hex_gprel16_1: +{ r0 = memh (#undefined@gotrel) } + +# CHECK: R_HEX_GPREL16_2 +r_hex_gprel16_2: +{ r0 = memw (#undefined@gotrel) } + +# CHECK: R_HEX_GPREL16_3 +r_hex_gprel16_3: +{ r1:0 = memd (#undefined@gotrel) } + +# CHECK: R_HEX_B13_PCREL +r_hex_b13_pcrel: +{ if (r0 != #0) jump:nt #undefined } + +# CHECK: R_HEX_B9_PCREL +r_hex_b9_pcrel: +{ r0 = #0 ; jump #undefined } + +# CHECK: R_HEX_B32_PCREL_X +r_hex_b32_pcrel_x: +{ jump ##undefined } + +# CHECK: R_HEX_32_6_X +r_hex_32_6_x: +{ r0 = ##undefined } + +# CHECK: R_HEX_B22_PCREL_X +r_hex_b22_pcrel_x: +{ jump ##undefined } + +# CHECK: R_HEX_B15_PCREL_X +r_hex_b15_pcrel_x: +{ if (p0) jump ##undefined } + +# CHECK: R_HEX_B9_PCREL_X +r_hex_b9_pcrel_x: +{ r0 = #0 ; jump ##undefined } + +# CHECK: R_HEX_B7_PCREL_X +r_hex_b7_pcrel_x: +{ loop1 (##undefined, #0) } + +# CHECK: R_HEX_32_PCREL +r_hex_32_pcrel: +.word undefined@pcrel + +# CHECK: R_HEX_PLT_B22_PCREL +r_hex_plt_b22_pcrel: +jump undefined@plt + +# CHECK: R_HEX_GOTREL_32 +r_hex_gotrel_32: +.word undefined@gotrel + +# CHECK: R_HEX_GOT_32 +r_hex_got_32: +.word undefined@got + +# CHECK: R_HEX_GOT_16 +r_hex_got_16: +.half undefined@got +.half 0 + +# CHECK: R_HEX_DTPREL_32 +r_hex_dtprel_32: +.word undefined@dtprel + +# CHECK: R_HEX_DTPREL_16 +r_hex_dtprel_16: +.half undefined@dtprel +.half 0 + +# CHECK: R_HEX_GD_GOT_32 +r_hex_gd_got_32: +.word undefined@gdgot + +# CHECK: R_HEX_GD_GOT_16 +r_hex_gd_got_16: +.half undefined@gdgot +.half 0 + +# CHECK: R_HEX_IE_32 +r_hex_ie_32: +.word undefined@ie + +# CHECK: R_HEX_IE_GOT_32 +r_hex_ie_got_32: +.word undefined@iegot + +# CHECK: R_HEX_IE_GOT_16 +r_hex_ie_got_16: +.half undefined@iegot +.half 0 + +# CHECK: R_HEX_TPREL_32 +r_hex_tprel_32: +.word undefined@tprel + +# CHECK: R_HEX_TPREL_16 +r_hex_tprel_16: +r0 = #undefined@tprel + +# CHECK: R_HEX_6_PCREL_X +r_hex_6_pcrel_x: +{ r0 = ##undefined@pcrel + r1 = r1 } + +# CHECK: R_HEX_GOTREL_32_6_X +r_hex_gotrel_32_6_x: +{ r0 = ##undefined@gotrel } + +# CHECK: R_HEX_GOTREL_16_X +r_hex_gotrel_16_x: +{ r0 = ##undefined@gotrel } + +# CHECK: R_HEX_GOTREL_11_X +r_hex_gotrel_11_x: +{ r0 = memw(r0 + ##undefined@gotrel) } + +# CHECK: R_HEX_GOT_32_6_X +r_hex_got_32_6_x: +{ r0 = ##undefined@got } + +# CHECK: R_HEX_GOT_16_X +r_hex_got_16_x: +{ r0 = ##undefined@got } + +# CHECK: R_HEX_GOT_11_X +r_hex_got_11_x: +{ r0 = memw(r0 + ##undefined@got) } + +# CHECK: R_HEX_DTPREL_32_6_X +r_hex_dtprel_32_6_x: +{ r0 = ##undefined@dtprel } + +# CHECK: R_HEX_DTPREL_16_X +r_hex_dtprel_16_x: +{ r0 = ##undefined@dtprel } + +# CHECK: R_HEX_DTPREL_11_X +r_hex_dtprel_11_x: +{ r0 = memw(r0 + ##undefined@dtprel) } + +# CHECK: R_HEX_GD_GOT_32_6_X +r_hex_gd_got_32_6_x: +{ r0 = ##undefined@gdgot } + +# CHECK: R_HEX_GD_GOT_16_X +r_hex_gd_got_16_x: +{ r0 = ##undefined@gdgot } + +# CHECK: R_HEX_GD_GOT_11_X +r_hex_gd_got_11_x: +{ r0 = memw(r0 + ##undefined@gdgot) } + +# CHECK: R_HEX_IE_32_6_X +r_hex_ie_32_6_x: +{ r0 = ##undefined@ie } + +# CHECK: R_HEX_IE_16_X +r_hex_ie_16_x: +{ r0 = ##undefined@ie } + +# CHECK: R_HEX_IE_GOT_32_6_X +r_hex_ie_got_32_6_x: +{ r0 = ##undefined@iegot } + +# CHECK: R_HEX_IE_GOT_16_X +r_hex_ie_got_16_x: +{ r0 = ##undefined@iegot } + +# CHECK: R_HEX_IE_GOT_11_X +r_hex_ie_got_11_x: +{ r0 = memw(r0 + ##undefined@iegot) } + +# CHECK: R_HEX_TPREL_32_6_X +r_hex_tprel_32_6_x: +{ r0 = ##undefined@tprel } + +# CHECK: R_HEX_TPREL_16_X +r_hex_tprel_16_x: +{ r0 = ##undefined@tprel } + +# CHECK: R_HEX_TPREL_11_X +r_hex_tprel_11_x: +{ r0 = memw(r0 + ##undefined@tprel) } + +# CHECK: R_HEX_LD_GOT_32 +r_hex_ld_got_32: +.word undefined@ldgot + +# CHECK: R_HEX_LD_GOT_16 +r_hex_ld_got_16: +.half undefined@ldgot +.half 0 + +# CHECK: R_HEX_LD_GOT_32_6_X +r_hex_ld_got_32_6_x: +{ r0 = ##undefined@ldgot } + +# CHECK: R_HEX_LD_GOT_16_X +r_hex_ld_got_16_x: +{ r0 = ##undefined@ldgot } + +# CHECK: R_HEX_LD_GOT_11_X +r_hex_ld_got_11_x: +{ r0 = memw(r0 + ##undefined@ldgot) } + diff --git a/test/MC/Hexagon/tprel_noextend.s b/test/MC/Hexagon/tprel_noextend.s new file mode 100644 index 000000000000..0bc17c6ce576 --- /dev/null +++ b/test/MC/Hexagon/tprel_noextend.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc -arch=hexagon -filetype=obj %s | llvm-objdump -d - | FileCheck %s +# + +# CHECK-NOT: immext +r0 = #undefined@TPREL + +# CHECK-NOT: immext +r0 = #undefined@DTPREL diff --git a/test/MC/Hexagon/v60-misc.s b/test/MC/Hexagon/v60-misc.s new file mode 100644 index 000000000000..e16034948dc3 --- /dev/null +++ b/test/MC/Hexagon/v60-misc.s @@ -0,0 +1,121 @@ +# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv60 -mattr=+hvx -filetype=obj %s | llvm-objdump -arch=hexagon -mcpu=hexagonv60 -d - | FileCheck %s + +.L0: + +# CHECK: 5c00c000 { if (p0) jump:nt +if (p0) jump .L0 + +# CHECK: 5cffe1fe { if (!p1) jump:nt +if (!p1) jump .L0 + +# CHECK: 5340c200 { if (p2) jumpr:nt +if (p2) jumpr r0 + +# CHECK: 5361c300 { if (!p3) jumpr:nt +if (!p3) jumpr r1 + +# CHECK: 1c2eceee { v14 = vxor(v14,{{ *}}v14) } +v14 = #0 + +# CHECK: 1c80c0a0 { v1:0.w = vsub(v1:0.w,v1:0.w) } +v1:0 = #0 + +# CHECK: 1f42c3e0 { v1:0 = vcombine(v3,v2) } +v1:0 = v3:2 + +# CHECK: 1f90cf00 { q0 = vcmp.eq(v15.b,v16.b) } +q0 = vcmp.eq(v15.ub, v16.ub) + +# CHECK: 1c92f101 { q1 &= vcmp.eq(v17.b,v18.b) } +q1 &= vcmp.eq(v17.ub, v18.ub) + +# CHECK: 1c94f342 { q2 |= vcmp.eq(v19.b,v20.b) } +q2 |= vcmp.eq(v19.ub, v20.ub) + +# CHECK: 1c96f583 { q3 ^= vcmp.eq(v21.b,v22.b) } +q3 ^= vcmp.eq(v21.ub, v22.ub) + +# CHECK: 1f81c004 { q0 = vcmp.eq(v0.h,v1.h) } +q0 = vcmp.eq(v0.uh, v1.uh) + +# CHECK: 1c83e205 { q1 &= vcmp.eq(v2.h,v3.h) } +q1 &= vcmp.eq(v2.uh, v3.uh) + +# CHECK: 1c85e446 { q2 |= vcmp.eq(v4.h,v5.h) } +q2 |= vcmp.eq(v4.uh, v5.uh) + +# CHECK: 1c87e687 { q3 ^= vcmp.eq(v6.h,v7.h) } +q3 ^= vcmp.eq(v6.uh, v7.uh) + +# CHECK: 1f89c808 { q0 = vcmp.eq(v8.w,v9.w) } +q0 = vcmp.eq(v8.uw, v9.uw) + +# CHECK: 1c8aea09 { q1 &= vcmp.eq(v10.w,v10.w) } +q1 &= vcmp.eq(v10.uw, v10.uw) + +# CHECK: 1c8ceb46 { q2 |= vcmp.eq(v11.h,v12.h) } +q2 |= vcmp.eq(v11.uw, v12.uw) + +# CHECK: 1c8eed8b { q3 ^= vcmp.eq(v13.w,v14.w) } +q3 ^= vcmp.eq(v13.uw, v14.uw) + +# CHECK: 2800c00f { v15 = vmem(r0+#0) } +v15 = vmem(r0) + +# CHECK: 2841c010 { v16 = vmem(r1+#0):nt } +v16 = vmem(r1):nt + +# CHECK: 2822c011 { vmem(r2+#0) = v17 } +vmem(r2) = v17 + +# CHECK: 2863c012 { vmem(r3+#0):nt = v18 } +vmem(r3):nt = v18 + +# CHECK: 2884c013 { if (q0) vmem(r4+#0) = v19 } +if (q0) vmem(r4) = v19 + +# CHECK: 2885c834 { if (!q1) vmem(r5+#0) = v20 } +if (!q1) vmem(r5) = v20 + +# CHECK: 28c6d015 { if (q2) vmem(r6+#0):nt = v21 } +if (q2) vmem(r6):nt = v21 + +# CHECK: 28c7d836 { if (!q3) vmem(r7+#0):nt = v22 } +if (!q3) vmem(r7):nt = v22 + +# CHECK: 28a8c017 { if (p0) vmem(r8+#0) = v23 } +if (p0) vmem(r8) = v23 + +# CHECK: 28a9c838 { if (!p1) vmem(r9+#0) = v24 } +if (!p1) vmem(r9) = v24 + +# CHECK: 28ead019 { if (p2) vmem(r10+#0):nt = v25 } +if (p2) vmem(r10):nt = v25 + +# CHECK: 28ebd83a { if (!p3) vmem(r11+#0):nt = v26 } +if (!p3) vmem(r11):nt = v26 + +# CHECK: 282cc022 vmem(r12+#0) = v27.new +{ + v27 = vxor(v28, v29) + vmem(r12) = v27.new +} + +# CHECK: 286dc022 vmem(r13+#0):nt = v30.new +{ + v30 = vxor(v31, v0) + vmem(r13):nt = v30.new +} + +# CHECK: 280ec0e1 { v1 = vmemu(r14+#0) } +v1 = vmemu(r14) + +# CHECK: 282fc0e2 { vmemu(r15+#0) = v2 } +vmemu(r15) = v2 + +# CHECK: 28b0c0c3 { if (p0) vmemu(r16+#0) = v3 } +if (p0) vmemu(r16) = v3 + +# CHECK: 28b1c8e4 { if (!p1) vmemu(r17+#0) = v4 } +if (!p1) vmemu(r17) = v4 + diff --git a/test/MC/Lanai/conditional_inst.s b/test/MC/Lanai/conditional_inst.s new file mode 100644 index 000000000000..58d9b634e4b6 --- /dev/null +++ b/test/MC/Lanai/conditional_inst.s @@ -0,0 +1,77 @@ +! RUN: llvm-mc -arch=lanai -show-encoding -show-inst < %s | FileCheck %s + +.text + .align 4 + .global jump1 + + bt %r5 +! CHECK: encoding: [0xc1,0x00,0x2d,0x00] +! CHECK-NEXT: <MCInst #{{[0-9]+}} JR{{$}} +! CHECK-NEXT: <MCOperand Reg:12>> + +! BR classes + bt 0x1234 +! CHECK: encoding: [0xe0,0x00,0x12,0x34] +! CHECK-NEXT: <MCInst #{{[0-9]+}} BT{{$}} +! CHECK-NEXT: <MCOperand Imm:4660> + +jump1: + blt 2000 +! CHECK: encoding: [0xec,0x00,0x07,0xd1] +! CHECK-NEXT: <MCInst #{{[0-9]+}} BRCC{{$}} +! CHECK-NEXT: <MCOperand Imm:2000> +! CHECK-NEXT: <MCOperand Imm:13> + +jump2: + blt jump1 +! CHECK: encoding: [0b1110110A,A,A,0x01'A'] +! CHECK-NEXT: fixup A - offset: 0, value: jump1, kind: FIXUP_LANAI_25 +! CHECK-NEXT: <MCInst #{{[0-9]+}} BRCC{{$}} +! CHECK-NEXT: <MCOperand Expr:(jump1)> +! CHECK-NEXT: <MCOperand Imm:13> + + bpl jump2 +! CHECK: encoding: [0b1110101A,A,A,A] +! CHECK-NEXT: fixup A - offset: 0, value: jump2, kind: FIXUP_LANAI_25 +! CHECK-NEXT: <MCInst #{{[0-9]+}} BRCC{{$}} +! CHECK-NEXT: <MCOperand Expr:(jump2)> +! CHECK-NEXT: <MCOperand Imm:10> + + bt . +! CHECK: .Ltmp{{[0-9]+}} +! CHECK-NEXT: bt .Ltmp{{[0-9]+}} +! CHECK: encoding: [0b1110000A,A,A,A] +! CHECK-NEXT: fixup A - offset: 0, value: .Ltmp0, kind: FIXUP_LANAI_25 +! CHECK-NEXT: <MCInst #{{[0-9]+}} BT{{$}} +! CHECK-NEXT: <MCOperand Expr:(.Ltmp0)> + +! SCC + spl %r19 +! CHECK: encoding: [0xea,0x4c,0x00,0x02] +! CHECK-NEXT: <MCInst #{{[0-9]+}} SCC{{$}} +! CHECK-NEXT: <MCOperand Reg:26> +! CHECK-NEXT: <MCOperand Imm:10> + +! BRR + bf.r 0x456 +! CHECK: encoding: [0xe1,0x00,0x04,0x57] +! CHECK-NEXT: <MCInst #{{[0-9]+}} BRR{{$}} +! CHECK-NEXT: <MCOperand Imm:1110> +! CHECK-NEXT: <MCOperand Imm:1> + +! Conditional ALU + add.ge %r13, %r14, %r18 +! CHECK: encoding: [0xc9,0x34,0x70,0x06] +! CHECK-NEXT: <MCInst #{{[0-9]+}} ADD_R +! CHECK-NEXT: <MCOperand Reg:25> +! CHECK-NEXT: <MCOperand Reg:20> +! CHECK-NEXT: <MCOperand Reg:21> +! CHECK-NEXT: <MCOperand Imm:12>> + + add.f %r13, %r14, %r18 +! CHECK: encoding: [0xc9,0x36,0x70,0x00] +! CHECK-NEXT: <MCInst #{{[0-9]+}} ADD_F_R +! CHECK-NEXT: <MCOperand Reg:25> +! CHECK-NEXT: <MCOperand Reg:20> +! CHECK-NEXT: <MCOperand Reg:21> +! CHECK-NEXT: <MCOperand Imm:0>> diff --git a/test/MC/Lanai/ctrl-instructions.s b/test/MC/Lanai/ctrl-instructions.s new file mode 100644 index 000000000000..2e5b2f263f48 --- /dev/null +++ b/test/MC/Lanai/ctrl-instructions.s @@ -0,0 +1,13 @@ +! RUN: llvm-mc -triple lanai-unknown-unknown -show-encoding -o - < %s | FileCheck %s + +! CHECK: bt .Ltmp0 ! encoding: [0b1110000A,A,A,A] +! CHECK-NEXT: ! fixup A - offset: 0, value: .Ltmp0, kind: FIXUP_LANAI_25 + bt 1f + nop +1: + +! CHECK: bt foo ! encoding: [0b1110000A,A,A,A] +! CHECK-NEXT: ! fixup A - offset: 0, value: foo, kind: FIXUP_LANAI_25 + bt foo + nop + diff --git a/test/MC/Lanai/lit.local.cfg b/test/MC/Lanai/lit.local.cfg new file mode 100644 index 000000000000..3f30d055364c --- /dev/null +++ b/test/MC/Lanai/lit.local.cfg @@ -0,0 +1,3 @@ +if not 'Lanai' in config.root.targets: + config.unsupported = True + diff --git a/test/MC/Lanai/memory.s b/test/MC/Lanai/memory.s new file mode 100644 index 000000000000..d34f917c7405 --- /dev/null +++ b/test/MC/Lanai/memory.s @@ -0,0 +1,247 @@ +! RUN: llvm-mc -arch=lanai -show-encoding -show-inst < %s | FileCheck %s + +! Checking the machine instructions generated from ASM instructions for ALU +! operations. + +! RM class + ld [%r7], %r6 +! CHECK: encoding: [0x83,0x1c,0x00,0x00] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:0> +! CHECK-NEXT: <MCOperand Imm:0> + + ld [%r6], %r6 +! CHECK: encoding: [0x83,0x18,0x00,0x00] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Imm:0> +! CHECK-NEXT: <MCOperand Imm:0> + + st %r6, [%r7] +! CHECK: encoding: [0x93,0x1c,0x00,0x00] +! CHECK-NEXT: <MCInst #{{[0-9]+}} SW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:0> +! CHECK-NEXT: <MCOperand Imm:0> + + ld 0x123[%r7*], %r6 +! CHECK: encoding: [0x83,0x1d,0x01,0x23] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:291> +! CHECK-NEXT: <MCOperand Imm:128> + + ld [%r7--], %r6 +! CHECK: encoding: [0x83,0x1d,0xff,0xfc] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:-4> +! CHECK-NEXT: <MCOperand Imm:128> + + ld 0x123[%r7], %r6 +! CHECK: encoding: [0x83,0x1e,0x01,0x23] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:291> +! CHECK-NEXT: <MCOperand Imm:0> + + ld 0x123[*%r7], %r6 +! CHECK: encoding: [0x83,0x1f,0x01,0x23] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:291> +! CHECK-NEXT: <MCOperand Imm:64> + + ld [--%r7], %r6 +! CHECK: encoding: [0x83,0x1f,0xff,0xfc] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:-4> +! CHECK-NEXT: <MCOperand Imm:64> + + st %r6, [%r7++] +! CHECK: encoding: [0x93,0x1d,0x00,0x04] +! CHECK-NEXT: <MCInst #{{[0-9]+}} SW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:4> +! CHECK-NEXT: <MCOperand Imm:128> + + st.h %r6, [%r7++] +! CHECK: encoding: [0xf3,0x1f,0x24,0x02] +! CHECK-NEXT: <MCInst #{{[0-9]+}} STH_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:2> +! CHECK-NEXT: <MCOperand Imm:128>> + + ld.b [--%r7], %r6 +! CHECK: encoding: [0xf3,0x1f,0x4f,0xff] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDBs_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:-1> +! CHECK-NEXT: <MCOperand Imm:64>> + +! Largest RM value before SLS encoding is used + ld [0x7fff], %r7 +! CHECK: encoding: [0x83,0x82,0x7f,0xff] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Reg:7> +! CHECK-NEXT: <MCOperand Imm:32767> +! CHECK-NEXT: <MCOperand Imm:0> + + ld [0x8000], %r7 +! CHECK: encoding: [0xf3,0x80,0x80,0x00] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDADDR{{$}} +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Imm:32768> + +! Negative RM value + ld [0xfffffe8c], %pc +! CHECK: encoding: [0x81,0x02,0xfe,0x8c] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:2> +! CHECK-NEXT: <MCOperand Reg:7> +! CHECK-NEXT: <MCOperand Imm:-372> +! CHECK-NEXT: <MCOperand Imm:0> + + ld [-372], %pc +! CHECK: encoding: [0x81,0x02,0xfe,0x8c] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:2> +! CHECK-NEXT: <MCOperand Reg:7> +! CHECK-NEXT: <MCOperand Imm:-372> +! CHECK-NEXT: <MCOperand Imm:0> + +! RRM class + ld %r9[%r12*], %r20 +! CHECK: encoding: [0xaa,0x31,0x48,0x02] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RR{{$}} +! CHECK-NEXT: <MCOperand Reg:27> +! CHECK-NEXT: <MCOperand Reg:19> +! CHECK-NEXT: <MCOperand Reg:16> +! CHECK-NEXT: <MCOperand Imm:128> + + ld %r9[%r12], %r20 +! CHECK: encoding: [0xaa,0x32,0x48,0x02] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RR{{$}} +! CHECK-NEXT: <MCOperand Reg:27> +! CHECK-NEXT: <MCOperand Reg:19> +! CHECK-NEXT: <MCOperand Reg:16> +! CHECK-NEXT: <MCOperand Imm:0> + + ld [%r12 sub %r9], %r20 +! CHECK: encoding: [0xaa,0x32,0x4a,0x02] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RR{{$}} +! CHECK-NEXT: <MCOperand Reg:27> +! CHECK-NEXT: <MCOperand Reg:19> +! CHECK-NEXT: <MCOperand Reg:16> +! CHECK-NEXT: <MCOperand Imm:2> + + ld %r9[*%r12], %r20 +! CHECK: encoding: [0xaa,0x33,0x48,0x02] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDW_RR{{$}} +! CHECK-NEXT: <MCOperand Reg:27> +! CHECK-NEXT: <MCOperand Reg:19> +! CHECK-NEXT: <MCOperand Reg:16> +! CHECK-NEXT: <MCOperand Imm:64> + + st %r20, %r9[*%r12] +! CHECK: encoding: [0xba,0x33,0x48,0x02] +! CHECK-NEXT: <MCInst #{{[0-9]+}} SW_RR{{$}} +! CHECK-NEXT: <MCOperand Reg:27> +! CHECK-NEXT: <MCOperand Reg:19> +! CHECK-NEXT: <MCOperand Reg:16> +! CHECK-NEXT: <MCOperand Imm:64> + + ld.b [%r12 sub %r9], %r20 +! CHECK: encoding: [0xaa,0x32,0x4a,0x04] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDBs_RR{{$}} +! CHECK-NEXT: <MCOperand Reg:27> +! CHECK-NEXT: <MCOperand Reg:19> +! CHECK-NEXT: <MCOperand Reg:16> +! CHECK-NEXT: <MCOperand Imm:2> + + uld.h [%r12 sub %r9], %r20 +! CHECK: encoding: [0xaa,0x32,0x4a,0x01] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDHz_RR{{$}} +! CHECK-NEXT: <MCOperand Reg:27> +! CHECK-NEXT: <MCOperand Reg:19> +! CHECK-NEXT: <MCOperand Reg:16> +! CHECK-NEXT: <MCOperand Imm:2> + + +! SPLS class + st.b %r3, [%r6] +! CHECK: encoding: [0xf1,0x9b,0x60,0x00] +! CHECK-NEXT: <MCInst #{{[0-9]+}} STB_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:10> +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Imm:0> +! CHECK-NEXT: <MCOperand Imm:0> + + st.b %r3, 1[%r6*] +! CHECK: encoding: [0xf1,0x9b,0x64,0x01] +! CHECK-NEXT: <MCInst #{{[0-9]+}} STB_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:10> +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Imm:1> +! CHECK-NEXT: <MCOperand Imm:128> + + st.b %r3, 1[%r6] +! CHECK: encoding: [0xf1,0x9b,0x68,0x01] +! CHECK-NEXT: <MCInst #{{[0-9]+}} STB_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:10> +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Imm:1> +! CHECK-NEXT: <MCOperand Imm:0> + + st.b %r3, 1[*%r6] +! CHECK: encoding: [0xf1,0x9b,0x6c,0x01] +! CHECK-NEXT: <MCInst #{{[0-9]+}} STB_RI{{$}} +! CHECK-NEXT: <MCOperand Reg:10> +! CHECK-NEXT: <MCOperand Reg:13> +! CHECK-NEXT: <MCOperand Imm:1> +! CHECK-NEXT: <MCOperand Imm:64> + +! SLS class + st %r30, [0x1234] +! CHECK: encoding: [0xff,0x01,0x12,0x34] +! CHECK-NEXT: <MCInst #{{[0-9]+}} STADDR{{$}} +! CHECK-NEXT: <MCOperand Reg:37> +! CHECK-NEXT: <MCOperand Imm:4660> + + ld [0xfe8c], %pc +! CHECK: encoding: [0xf1,0x00,0xfe,0x8c] +! CHECK-NEXT: <MCInst #{{[0-9]+}} LDADDR{{$}} +! CHECK-NEXT: <MCOperand Reg:2> +! CHECK-NEXT: <MCOperand Imm:65164> + +! SLI class + mov hi(x), %r4 +! CHECK: encoding: [0x02,0x01,A,A] +! CHECK-NEXT: fixup A - offset: 0, value: hi(x), kind: FIXUP_LANAI_HI16{{$}} +! CHECK-NEXT: <MCInst #{{[0-9]+}} ADD_I_HI +! CHECK-NEXT: <MCOperand Reg:11> +! CHECK-NEXT: <MCOperand Reg:7> +! CHECK-NEXT: <MCOperand Expr:(hi(x))> + + mov hi(l+4), %r7 +! CHECK: encoding: [0x03,0x81,A,A] +! CHECK-NEXT: fixup A - offset: 0, value: (hi(l))+4, kind: FIXUP_LANAI_HI16{{$}} +! CHECK-NEXT: <MCInst #{{[0-9]+}} ADD_I_HI +! CHECK-NEXT: <MCOperand Reg:14> +! CHECK-NEXT: <MCOperand Reg:7> +! CHECK-NEXT: <MCOperand Expr:((hi(l))+4)> + diff --git a/test/MC/Lanai/v11.s b/test/MC/Lanai/v11.s new file mode 100644 index 000000000000..621c47de0235 --- /dev/null +++ b/test/MC/Lanai/v11.s @@ -0,0 +1,876 @@ +! RUN: llvm-mc -arch=lanai -show-encoding %s | FileCheck %s + +add %r17, 0, %r21 +! CHECK: 0x0a,0xc4,0x00,0x00 +add %r17, 0x00001234, %r21 +! CHECK: 0x0a,0xc4,0x12,0x34 +add %r17, 0x12340000, %r21 +! CHECK: 0x0a,0xc5,0x12,0x34 +add.f %r17, 0, %r21 +! CHECK: 0x0a,0xc6,0x00,0x00 +add.f %r17, 0x00001234, %r21 +! CHECK: 0x0a,0xc6,0x12,0x34 +add.f %r17, 0x12340000, %r21 +! CHECK: 0x0a,0xc7,0x12,0x34 +add %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x90,0x00 +add.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x90,0x00 +addc %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x91,0x00 +addc.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x91,0x00 +addc %r17, 0, %r21 +! CHECK: 0x1a,0xc4,0x00,0x00 +addc %r17, 0x00001234, %r21 +! CHECK: 0x1a,0xc4,0x12,0x34 +addc %r17, 0x12340000, %r21 +! CHECK: 0x1a,0xc5,0x12,0x34 +addc.f %r17, 0, %r21 +! CHECK: 0x1a,0xc6,0x00,0x00 +addc.f %r17, 0x00001234, %r21 +! CHECK: 0x1a,0xc6,0x12,0x34 +addc.f %r17, 0x12340000, %r21 +! CHECK: 0x1a,0xc7,0x12,0x34 +and %r17, 0xffff1234, %r21 +! CHECK: 0x4a,0xc4,0x12,0x34 +and %r17, 0x1234ffff, %r21 +! CHECK: 0x4a,0xc5,0x12,0x34 +and.f %r17, 0xffff1234, %r21 +! CHECK: 0x4a,0xc6,0x12,0x34 +and.f %r17, 0x1234ffff, %r21 +! CHECK: 0x4a,0xc7,0x12,0x34 +and %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x94,0x00 +and.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x94,0x00 +bt 0x123454 +! CHECK: 0xe0,0x12,0x34,0x54 +bf 0x123454 +! CHECK: 0xe0,0x12,0x34,0x55 +bhi 0x123454 +! CHECK: 0xe2,0x12,0x34,0x54 +bugt 0x123454 +! CHECK: 0xe2,0x12,0x34,0x54 +bls 0x123454 +! CHECK: 0xe2,0x12,0x34,0x55 +bule 0x123454 +! CHECK: 0xe2,0x12,0x34,0x55 +bcc 0x123454 +! CHECK: 0xe4,0x12,0x34,0x54 +bult 0x123454 +! CHECK: 0xe4,0x12,0x34,0x54 +bcs 0x123454 +! CHECK: 0xe4,0x12,0x34,0x55 +buge 0x123454 +! CHECK: 0xe4,0x12,0x34,0x55 +bne 0x123454 +! CHECK: 0xe6,0x12,0x34,0x54 +beq 0x123454 +! CHECK: 0xe6,0x12,0x34,0x55 +bvc 0x123454 +! CHECK: 0xe8,0x12,0x34,0x54 +bvs 0x123454 +! CHECK: 0xe8,0x12,0x34,0x55 +bpl 0x123454 +! CHECK: 0xea,0x12,0x34,0x54 +bmi 0x123454 +! CHECK: 0xea,0x12,0x34,0x55 +bge 0x123454 +! CHECK: 0xec,0x12,0x34,0x54 +blt 0x123454 +! CHECK: 0xec,0x12,0x34,0x55 +bgt 0x123454 +! CHECK: 0xee,0x12,0x34,0x54 +bt %r19 +! CHECK: 0xc1,0x00,0x9d,0x00 +bt.r 0x5678 +! CHECK: 0xe1,0x00,0x56,0x7a +bf.r 0x5678 +! CHECK: 0xe1,0x00,0x56,0x7b +bhi.r 0x5678 +! CHECK: 0xe3,0x00,0x56,0x7a +bugt.r 0x5678 +! CHECK: 0xe3,0x00,0x56,0x7a +bls.r 0x5678 +! CHECK: 0xe3,0x00,0x56,0x7b +bule.r 0x5678 +! CHECK: 0xe3,0x00,0x56,0x7b +bcc.r 0x5678 +! CHECK: 0xe5,0x00,0x56,0x7a +bult.r 0x5678 +! CHECK: 0xe5,0x00,0x56,0x7a +bcs.r 0x5678 +! CHECK: 0xe5,0x00,0x56,0x7b +buge.r 0x5678 +! CHECK: 0xe5,0x00,0x56,0x7b +bne.r 0x5678 +! CHECK: 0xe7,0x00,0x56,0x7a +beq.r 0x5678 +! CHECK: 0xe7,0x00,0x56,0x7b +bvc.r 0x5678 +! CHECK: 0xe9,0x00,0x56,0x7a +bvs.r 0x5678 +! CHECK: 0xe9,0x00,0x56,0x7b +bpl.r 0x5678 +! CHECK: 0xeb,0x00,0x56,0x7a +bmi.r 0x5678 +! CHECK: 0xeb,0x00,0x56,0x7b +bge.r 0x5678 +! CHECK: 0xed,0x00,0x56,0x7a +blt.r 0x5678 +! CHECK: 0xed,0x00,0x56,0x7b +bgt.r 0x5678 +! CHECK: 0xef,0x00,0x56,0x7a +ld -32768[%r17], %r21 +! CHECK: 0x8a,0xc6,0x80,0x00 +ld -1024[%r17], %r21 +! CHECK: 0x8a,0xc6,0xfc,0x00 +ld 0[%r17], %r21 +! CHECK: 0x8a,0xc4,0x00,0x00 +ld 1024[%r17], %r21 +! CHECK: 0x8a,0xc6,0x04,0x00 +ld 32767[%r17], %r21 +! CHECK: 0x8a,0xc6,0x7f,0xff +uld -32768[%r17], %r21 +! CHECK: 0x8a,0xc6,0x80,0x00 +uld -1024[%r17], %r21 +! CHECK: 0x8a,0xc6,0xfc,0x00 +uld 0[%r17], %r21 +! CHECK: 0x8a,0xc4,0x00,0x00 +uld 1024[%r17], %r21 +! CHECK: 0x8a,0xc6,0x04,0x00 +uld 32767[%r17], %r21 +! CHECK: 0x8a,0xc6,0x7f,0xff +ld %r18[%r17], %r21 +! CHECK: 0xaa,0xc6,0x90,0x02 +uld %r18[%r17], %r21 +! CHECK: 0xaa,0xc6,0x90,0x03 +ld.h -512[%r17], %r21 +! CHECK: 0xfa,0xc7,0x0a,0x00 +ld.h -13[%r17], %r21 +! CHECK: 0xfa,0xc7,0x0b,0xf3 +ld.h 18[%r17], %r21 +! CHECK: 0xfa,0xc7,0x08,0x12 +ld.h 511[%r17], %r21 +! CHECK: 0xfa,0xc7,0x09,0xff +ld.b -512[%r17], %r21 +! CHECK: 0xfa,0xc7,0x4a,0x00 +ld.b -13[%r17], %r21 +! CHECK: 0xfa,0xc7,0x4b,0xf3 +ld.b 18[%r17], %r21 +! CHECK: 0xfa,0xc7,0x48,0x12 +ld.b 511[%r17], %r21 +! CHECK: 0xfa,0xc7,0x49,0xff +uld.h -512[%r17], %r21 +! CHECK: 0xfa,0xc7,0x1a,0x00 +uld.h -13[%r17], %r21 +! CHECK: 0xfa,0xc7,0x1b,0xf3 +uld.h 18[%r17], %r21 +! CHECK: 0xfa,0xc7,0x18,0x12 +uld.h 511[%r17], %r21 +! CHECK: 0xfa,0xc7,0x19,0xff +uld.b -512[%r17], %r21 +! CHECK: 0xfa,0xc7,0x5a,0x00 +uld.b -13[%r17], %r21 +! CHECK: 0xfa,0xc7,0x5b,0xf3 +uld.b 18[%r17], %r21 +! CHECK: 0xfa,0xc7,0x58,0x12 +uld.b 511[%r17], %r21 +! CHECK: 0xfa,0xc7,0x59,0xff +ld -32768[*%r17], %r21 +! CHECK: 0x8a,0xc7,0x80,0x00 +ld -1024[*%r17], %r21 +! CHECK: 0x8a,0xc7,0xfc,0x00 +ld 0[*%r17], %r21 +! CHECK: 0x8a,0xc4,0x00,0x00 +ld 1024[*%r17], %r21 +! CHECK: 0x8a,0xc7,0x04,0x00 +ld 32767[*%r17], %r21 +! CHECK: 0x8a,0xc7,0x7f,0xff +uld -32768[*%r17], %r21 +! CHECK: 0x8a,0xc7,0x80,0x00 +uld -1024[*%r17], %r21 +! CHECK: 0x8a,0xc7,0xfc,0x00 +uld 0[*%r17], %r21 +! CHECK: 0x8a,0xc4,0x00,0x00 +uld 1024[*%r17], %r21 +! CHECK: 0x8a,0xc7,0x04,0x00 +uld 32767[*%r17], %r21 +! CHECK: 0x8a,0xc7,0x7f,0xff +ld [--%r17], %r21 +! CHECK: 0x8a,0xc7,0xff,0xfc +ld [++%r17], %r21 +! CHECK: 0x8a,0xc7,0x00,0x04 +ld.h [--%r17], %r21 +! CHECK: 0xfa,0xc7,0x0f,0xfe +ld.h [++%r17], %r21 +! CHECK: 0xfa,0xc7,0x0c,0x02 +uld.h [--%r17], %r21 +! CHECK: 0xfa,0xc7,0x1f,0xfe +uld.h [++%r17], %r21 +! CHECK: 0xfa,0xc7,0x1c,0x02 +ld.b [--%r17], %r21 +! CHECK: 0xfa,0xc7,0x4f,0xff +ld.b [++%r17], %r21 +! CHECK: 0xfa,0xc7,0x4c,0x01 +uld.b [--%r17], %r21 +! CHECK: 0xfa,0xc7,0x5f,0xff +uld.b [++%r17], %r21 +! CHECK: 0xfa,0xc7,0x5c,0x01 +ld %r18[*%r17], %r21 +! CHECK: 0xaa,0xc7,0x90,0x02 +uld %r18[*%r17], %r21 +! CHECK: 0xaa,0xc7,0x90,0x03 +ld.h -512[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x0e,0x00 +ld.h -13[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x0f,0xf3 +ld.h 18[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x0c,0x12 +ld.h 511[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x0d,0xff +ld.b -512[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x4e,0x00 +ld.b -13[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x4f,0xf3 +ld.b 18[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x4c,0x12 +ld.b 511[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x4d,0xff +uld.h -512[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x1e,0x00 +uld.h -13[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x1f,0xf3 +uld.h 18[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x1c,0x12 +uld.h 511[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x1d,0xff +uld.b -512[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x5e,0x00 +uld.b -13[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x5f,0xf3 +uld.b 18[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x5c,0x12 +uld.b 511[*%r17], %r21 +! CHECK: 0xfa,0xc7,0x5d,0xff +ld -32768[%r17*], %r21 +! CHECK: 0x8a,0xc5,0x80,0x00 +ld -1024[%r17*], %r21 +! CHECK: 0x8a,0xc5,0xfc,0x00 +ld 0[%r17*], %r21 +! CHECK: 0x8a,0xc4,0x00,0x00 +ld 1024[%r17*], %r21 +! CHECK: 0x8a,0xc5,0x04,0x00 +ld 32767[%r17*], %r21 +! CHECK: 0x8a,0xc5,0x7f,0xff +uld -32768[%r17*], %r21 +! CHECK: 0x8a,0xc5,0x80,0x00 +uld -1024[%r17*], %r21 +! CHECK: 0x8a,0xc5,0xfc,0x00 +uld 0[%r17*], %r21 +! CHECK: 0x8a,0xc4,0x00,0x00 +uld 1024[%r17*], %r21 +! CHECK: 0x8a,0xc5,0x04,0x00 +uld 32767[%r17*], %r21 +! CHECK: 0x8a,0xc5,0x7f,0xff +ld [%r17--], %r21 +! CHECK: 0x8a,0xc5,0xff,0xfc +ld [%r17++], %r21 +! CHECK: 0x8a,0xc5,0x00,0x04 +ld.h [%r17--], %r21 +! CHECK: 0xfa,0xc7,0x07,0xfe +ld.h [%r17++], %r21 +! CHECK: 0xfa,0xc7,0x04,0x02 +uld.h [%r17--], %r21 +! CHECK: 0xfa,0xc7,0x17,0xfe +uld.h [%r17++], %r21 +! CHECK: 0xfa,0xc7,0x14,0x02 +ld.b [%r17--], %r21 +! CHECK: 0xfa,0xc7,0x47,0xff +ld.b [%r17++], %r21 +! CHECK: 0xfa,0xc7,0x44,0x01 +uld.b [%r17--], %r21 +! CHECK: 0xfa,0xc7,0x57,0xff +uld.b [%r17++], %r21 +! CHECK: 0xfa,0xc7,0x54,0x01 +ld %r18[%r17*], %r21 +! CHECK: 0xaa,0xc5,0x90,0x02 +uld %r18[%r17*], %r21 +! CHECK: 0xaa,0xc5,0x90,0x03 +ld.h -512[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x06,0x00 +ld.h -13[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x07,0xf3 +ld.h 18[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x04,0x12 +ld.h 511[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x05,0xff +ld.b -512[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x46,0x00 +ld.b -13[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x47,0xf3 +ld.b 18[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x44,0x12 +ld.b 511[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x45,0xff +uld.h -512[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x16,0x00 +uld.h -13[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x17,0xf3 +uld.h 18[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x14,0x12 +uld.h 511[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x15,0xff +uld.b -512[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x56,0x00 +uld.b -13[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x57,0xf3 +uld.b 18[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x54,0x12 +uld.b 511[%r17*], %r21 +! CHECK: 0xfa,0xc7,0x55,0xff +ld [%r17 add %r18], %r21 +! CHECK: 0xaa,0xc6,0x90,0x02 +ld [%r17 addc %r18], %r21 +! CHECK: 0xaa,0xc6,0x91,0x02 +ld [%r17 sub %r18], %r21 +! CHECK: 0xaa,0xc6,0x92,0x02 +ld [%r17 subb %r18], %r21 +! CHECK: 0xaa,0xc6,0x93,0x02 +ld [%r17 and %r18], %r21 +! CHECK: 0xaa,0xc6,0x94,0x02 +ld [%r17 or %r18], %r21 +! CHECK: 0xaa,0xc6,0x95,0x02 +ld [%r17 xor %r18], %r21 +! CHECK: 0xaa,0xc6,0x96,0x02 +ld [%r17 sh %r18], %r21 +! CHECK: 0xaa,0xc6,0x97,0x82 +ld [%r17 sha %r18], %r21 +! CHECK: 0xaa,0xc6,0x97,0xc2 +ld [*%r17 add %r18], %r21 +! CHECK: 0xaa,0xc7,0x90,0x02 +ld [*%r17 addc %r18], %r21 +! CHECK: 0xaa,0xc7,0x91,0x02 +ld [*%r17 sub %r18], %r21 +! CHECK: 0xaa,0xc7,0x92,0x02 +ld [*%r17 subb %r18], %r21 +! CHECK: 0xaa,0xc7,0x93,0x02 +ld [*%r17 and %r18], %r21 +! CHECK: 0xaa,0xc7,0x94,0x02 +ld [*%r17 or %r18], %r21 +! CHECK: 0xaa,0xc7,0x95,0x02 +ld [*%r17 xor %r18], %r21 +! CHECK: 0xaa,0xc7,0x96,0x02 +ld [*%r17 sh %r18], %r21 +! CHECK: 0xaa,0xc7,0x97,0x82 +ld [*%r17 sha %r18], %r21 +! CHECK: 0xaa,0xc7,0x97,0xc2 +ld [%r17* add %r18], %r21 +! CHECK: 0xaa,0xc5,0x90,0x02 +ld [%r17* addc %r18], %r21 +! CHECK: 0xaa,0xc5,0x91,0x02 +ld [%r17* sub %r18], %r21 +! CHECK: 0xaa,0xc5,0x92,0x02 +ld [%r17* subb %r18], %r21 +! CHECK: 0xaa,0xc5,0x93,0x02 +ld [%r17* and %r18], %r21 +! CHECK: 0xaa,0xc5,0x94,0x02 +ld [%r17* or %r18], %r21 +! CHECK: 0xaa,0xc5,0x95,0x02 +ld [%r17* xor %r18], %r21 +! CHECK: 0xaa,0xc5,0x96,0x02 +ld [%r17* sh %r18], %r21 +! CHECK: 0xaa,0xc5,0x97,0x82 +ld [%r17* sha %r18], %r21 +! CHECK: 0xaa,0xc5,0x97,0xc2 +ld [0x12344], %r21 +! CHECK: 0xfa,0x84,0x23,0x44 +leadz %r17, %r21 +! CHECK: 0xda,0xc4,0x00,0x02 +mov 0, %r17 +! CHECK: 0x08,0x80,0x00,0x00 +mov 0x00001234, %r17 +! CHECK: 0x08,0x80,0x12,0x34 +mov 0x12340000, %r17 +! CHECK: 0x08,0x81,0x12,0x34 +mov 0xaaaa0000, %r17 +! CHECK: 0x08,0x81,0xaa,0xaa +mov %r18, %r17 +! CHECK: 0xc8,0xc8,0x00,0x00 +mov 0x12344, %r17 +! CHECK: 0xf8,0x86,0x23,0x44 +mov 0xffff1234, %r17 +! CHECK: 0x48,0x84,0x12,0x34 +mov 0x1234ffff, %r17 +! CHECK: 0x48,0x85,0x12,0x34 +nop +! CHECK: 0x00,0x00,0x00,0x01 +or %r17, 0, %r21 +! CHECK: 0x5a,0xc4,0x00,0x00 +or %r17, 0x00001234, %r21 +! CHECK: 0x5a,0xc4,0x12,0x34 +or %r17, 0x12340000, %r21 +! CHECK: 0x5a,0xc5,0x12,0x34 +or.f %r17, 0, %r21 +! CHECK: 0x5a,0xc6,0x00,0x00 +or.f %r17, 0x00001234, %r21 +! CHECK: 0x5a,0xc6,0x12,0x34 +or.f %r17, 0x12340000, %r21 +! CHECK: 0x5a,0xc7,0x12,0x34 +or %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x95,0x00 +or.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x95,0x00 +popc %r17, %r21 +! CHECK: 0xda,0xc4,0x00,0x01 +st %r21 +! CHECK: 0xe0,0x54,0x00,0x02 +shi %r21 +! CHECK: 0xe2,0x54,0x00,0x02 +sugt %r21 +! CHECK: 0xe2,0x54,0x00,0x02 +sls %r21 +! CHECK: 0xe2,0x54,0x00,0x03 +sule %r21 +! CHECK: 0xe2,0x54,0x00,0x03 +scc %r21 +! CHECK: 0xe4,0x54,0x00,0x02 +sult %r21 +! CHECK: 0xe4,0x54,0x00,0x02 +scs %r21 +! CHECK: 0xe4,0x54,0x00,0x03 +suge %r21 +! CHECK: 0xe4,0x54,0x00,0x03 +sne %r21 +! CHECK: 0xe6,0x54,0x00,0x02 +seq %r21 +! CHECK: 0xe6,0x54,0x00,0x03 +svc %r21 +! CHECK: 0xe8,0x54,0x00,0x02 +svs %r21 +! CHECK: 0xe8,0x54,0x00,0x03 +spl %r21 +! CHECK: 0xea,0x54,0x00,0x02 +smi %r21 +! CHECK: 0xea,0x54,0x00,0x03 +sge %r21 +! CHECK: 0xec,0x54,0x00,0x02 +slt %r21 +! CHECK: 0xec,0x54,0x00,0x03 +sgt %r21 +! CHECK: 0xee,0x54,0x00,0x02 +sh %r17, -31, %r21 +! CHECK: 0x7a,0xc4,0xff,0xe1 +sh %r17, -5, %r21 +! CHECK: 0x7a,0xc4,0xff,0xfb +sh %r17, 2, %r21 +! CHECK: 0x7a,0xc4,0x00,0x02 +sh %r17, 31, %r21 +! CHECK: 0x7a,0xc4,0x00,0x1f +sh.f %r17, -31, %r21 +! CHECK: 0x7a,0xc6,0xff,0xe1 +sh.f %r17, -5, %r21 +! CHECK: 0x7a,0xc6,0xff,0xfb +sh.f %r17, 2, %r21 +! CHECK: 0x7a,0xc6,0x00,0x02 +sh.f %r17, 31, %r21 +! CHECK: 0x7a,0xc6,0x00,0x1f +sh %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x97,0x80 +sh.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x97,0x80 +sha %r17, -31, %r21 +! CHECK: 0x7a,0xc5,0xff,0xe1 +sha %r17, -5, %r21 +! CHECK: 0x7a,0xc5,0xff,0xfb +sha %r17, 2, %r21 +! CHECK: 0x7a,0xc5,0x00,0x02 +sha %r17, 31, %r21 +! CHECK: 0x7a,0xc5,0x00,0x1f +sha.f %r17, -31, %r21 +! CHECK: 0x7a,0xc7,0xff,0xe1 +sha.f %r17, -5, %r21 +! CHECK: 0x7a,0xc7,0xff,0xfb +sha.f %r17, 2, %r21 +! CHECK: 0x7a,0xc7,0x00,0x02 +sha.f %r17, 31, %r21 +! CHECK: 0x7a,0xc7,0x00,0x1f +sha %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x97,0xc0 +sha.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x97,0xc0 +st %r17, -32768[%r19] +! CHECK: 0x98,0xce,0x80,0x00 +st %r17, -1024[%r19] +! CHECK: 0x98,0xce,0xfc,0x00 +st %r17, 0[%r19] +! CHECK: 0x98,0xcc,0x00,0x00 +st %r17, 1024[%r19] +! CHECK: 0x98,0xce,0x04,0x00 +st %r17, 32767[%r19] +! CHECK: 0x98,0xce,0x7f,0xff +st.h %r17, -512[%r19] +! CHECK: 0xf8,0xcf,0x2a,0x00 +st.h %r17, -13[%r19] +! CHECK: 0xf8,0xcf,0x2b,0xf3 +st.h %r17, 18[%r19] +! CHECK: 0xf8,0xcf,0x28,0x12 +st.h %r17, 511[%r19] +! CHECK: 0xf8,0xcf,0x29,0xff +st.b %r17, -512[%r19] +! CHECK: 0xf8,0xcf,0x6a,0x00 +st.b %r17, -13[%r19] +! CHECK: 0xf8,0xcf,0x6b,0xf3 +st.b %r17, 18[%r19] +! CHECK: 0xf8,0xcf,0x68,0x12 +st.b %r17, 511[%r19] +! CHECK: 0xf8,0xcf,0x69,0xff +st %r17, %r18[%r19] +! CHECK: 0xb8,0xce,0x90,0x02 +st.h %r17, %r18[%r19] +! CHECK: 0xb8,0xce,0x90,0x00 +st.b %r17, %r18[%r19] +! CHECK: 0xb8,0xce,0x90,0x04 +st %r17, -32768[*%r19] +! CHECK: 0x98,0xcf,0x80,0x00 +st %r17, -1024[*%r19] +! CHECK: 0x98,0xcf,0xfc,0x00 +st %r17, 0[*%r19] +! CHECK: 0x98,0xcc,0x00,0x00 +st %r17, 1024[*%r19] +! CHECK: 0x98,0xcf,0x04,0x00 +st %r17, 32767[*%r19] +! CHECK: 0x98,0xcf,0x7f,0xff +st.h %r17, -512[*%r19] +! CHECK: 0xf8,0xcf,0x2e,0x00 +st.h %r17, -13[*%r19] +! CHECK: 0xf8,0xcf,0x2f,0xf3 +st.h %r17, 18[*%r19] +! CHECK: 0xf8,0xcf,0x2c,0x12 +st.h %r17, 511[*%r19] +! CHECK: 0xf8,0xcf,0x2d,0xff +st.b %r17, -512[*%r19] +! CHECK: 0xf8,0xcf,0x6e,0x00 +st.b %r17, -13[*%r19] +! CHECK: 0xf8,0xcf,0x6f,0xf3 +st.b %r17, 18[*%r19] +! CHECK: 0xf8,0xcf,0x6c,0x12 +st.b %r17, 511[*%r19] +! CHECK: 0xf8,0xcf,0x6d,0xff +st %r17, [--%r19] +! CHECK: 0x98,0xcf,0xff,0xfc +st %r17, [++%r19] +! CHECK: 0x98,0xcf,0x00,0x04 +st.h %r17, [--%r19] +! CHECK: 0xf8,0xcf,0x2f,0xfe +st.h %r17, [++%r19] +! CHECK: 0xf8,0xcf,0x2c,0x02 +st.b %r17, [--%r19] +! CHECK: 0xf8,0xcf,0x6f,0xff +st.b %r17, [++%r19] +! CHECK: 0xf8,0xcf,0x6c,0x01 +st %r17, %r18[*%r19] +! CHECK: 0xb8,0xcf,0x90,0x02 +st.h %r17, %r18[*%r19] +! CHECK: 0xb8,0xcf,0x90,0x00 +st.b %r17, %r18[*%r19] +! CHECK: 0xb8,0xcf,0x90,0x04 +st %r17, -32768[%r19*] +! CHECK: 0x98,0xcd,0x80,0x00 +st %r17, -1024[%r19*] +! CHECK: 0x98,0xcd,0xfc,0x00 +st %r17, 0[%r19*] +! CHECK: 0x98,0xcc,0x00,0x00 +st %r17, 1024[%r19*] +! CHECK: 0x98,0xcd,0x04,0x00 +st %r17, 32767[%r19*] +! CHECK: 0x98,0xcd,0x7f,0xff +st.h %r17, -512[%r19*] +! CHECK: 0xf8,0xcf,0x26,0x00 +st.h %r17, -13[%r19*] +! CHECK: 0xf8,0xcf,0x27,0xf3 +st.h %r17, 18[%r19*] +! CHECK: 0xf8,0xcf,0x24,0x12 +st.h %r17, 511[%r19*] +! CHECK: 0xf8,0xcf,0x25,0xff +st.b %r17, -512[%r19*] +! CHECK: 0xf8,0xcf,0x66,0x00 +st.b %r17, -13[%r19*] +! CHECK: 0xf8,0xcf,0x67,0xf3 +st.b %r17, 18[%r19*] +! CHECK: 0xf8,0xcf,0x64,0x12 +st.b %r17, 511[%r19*] +! CHECK: 0xf8,0xcf,0x65,0xff +st %r17, [%r19--] +! CHECK: 0x98,0xcd,0xff,0xfc +st %r17, [%r19++] +! CHECK: 0x98,0xcd,0x00,0x04 +st.h %r17, [%r19--] +! CHECK: 0xf8,0xcf,0x27,0xfe +st.h %r17, [%r19++] +! CHECK: 0xf8,0xcf,0x24,0x02 +st.b %r17, [%r19--] +! CHECK: 0xf8,0xcf,0x67,0xff +st.b %r17, [%r19++] +! CHECK: 0xf8,0xcf,0x64,0x01 +st %r17, %r18[%r19*] +! CHECK: 0xb8,0xcd,0x90,0x02 +st.h %r17, %r18[%r19*] +! CHECK: 0xb8,0xcd,0x90,0x00 +st.b %r17, %r18[%r19*] +! CHECK: 0xb8,0xcd,0x90,0x04 +st %r21, [%r17 add %r18] +! CHECK: 0xba,0xc6,0x90,0x02 +st %r21, [%r17 addc %r18] +! CHECK: 0xba,0xc6,0x91,0x02 +st %r21, [%r17 sub %r18] +! CHECK: 0xba,0xc6,0x92,0x02 +st %r21, [%r17 subb %r18] +! CHECK: 0xba,0xc6,0x93,0x02 +st %r21, [%r17 and %r18] +! CHECK: 0xba,0xc6,0x94,0x02 +st %r21, [%r17 or %r18] +! CHECK: 0xba,0xc6,0x95,0x02 +st %r21, [%r17 xor %r18] +! CHECK: 0xba,0xc6,0x96,0x02 +st %r21, [%r17 sh %r18] +! CHECK: 0xba,0xc6,0x97,0x82 +st %r21, [%r17 sha %r18] +! CHECK: 0xba,0xc6,0x97,0xc2 +st.h %r21, [%r17 add %r18] +! CHECK: 0xba,0xc6,0x90,0x00 +st.h %r21, [%r17 addc %r18] +! CHECK: 0xba,0xc6,0x91,0x00 +st.h %r21, [%r17 sub %r18] +! CHECK: 0xba,0xc6,0x92,0x00 +st.h %r21, [%r17 subb %r18] +! CHECK: 0xba,0xc6,0x93,0x00 +st.h %r21, [%r17 and %r18] +! CHECK: 0xba,0xc6,0x94,0x00 +st.h %r21, [%r17 or %r18] +! CHECK: 0xba,0xc6,0x95,0x00 +st.h %r21, [%r17 xor %r18] +! CHECK: 0xba,0xc6,0x96,0x00 +st.h %r21, [%r17 sh %r18] +! CHECK: 0xba,0xc6,0x97,0x80 +st.h %r21, [%r17 sha %r18] +! CHECK: 0xba,0xc6,0x97,0xc0 +st.b %r21, [%r17 add %r18] +! CHECK: 0xba,0xc6,0x90,0x04 +st.b %r21, [%r17 addc %r18] +! CHECK: 0xba,0xc6,0x91,0x04 +st.b %r21, [%r17 sub %r18] +! CHECK: 0xba,0xc6,0x92,0x04 +st.b %r21, [%r17 subb %r18] +! CHECK: 0xba,0xc6,0x93,0x04 +st.b %r21, [%r17 and %r18] +! CHECK: 0xba,0xc6,0x94,0x04 +st.b %r21, [%r17 or %r18] +! CHECK: 0xba,0xc6,0x95,0x04 +st.b %r21, [%r17 xor %r18] +! CHECK: 0xba,0xc6,0x96,0x04 +st.b %r21, [%r17 sh %r18] +! CHECK: 0xba,0xc6,0x97,0x84 +st.b %r21, [%r17 sha %r18] +! CHECK: 0xba,0xc6,0x97,0xc4 +st %r21, [*%r17 add %r18] +! CHECK: 0xba,0xc7,0x90,0x02 +st %r21, [*%r17 addc %r18] +! CHECK: 0xba,0xc7,0x91,0x02 +st %r21, [*%r17 sub %r18] +! CHECK: 0xba,0xc7,0x92,0x02 +st %r21, [*%r17 subb %r18] +! CHECK: 0xba,0xc7,0x93,0x02 +st %r21, [*%r17 and %r18] +! CHECK: 0xba,0xc7,0x94,0x02 +st %r21, [*%r17 or %r18] +! CHECK: 0xba,0xc7,0x95,0x02 +st %r21, [*%r17 xor %r18] +! CHECK: 0xba,0xc7,0x96,0x02 +st %r21, [*%r17 sha %r18] +! CHECK: 0xba,0xc7,0x97,0xc2 +st.h %r21, [*%r17 add %r18] +! CHECK: 0xba,0xc7,0x90,0x00 +st.h %r21, [*%r17 addc %r18] +! CHECK: 0xba,0xc7,0x91,0x00 +st.h %r21, [*%r17 sub %r18] +! CHECK: 0xba,0xc7,0x92,0x00 +st.h %r21, [*%r17 subb %r18] +! CHECK: 0xba,0xc7,0x93,0x00 +st.h %r21, [*%r17 and %r18] +! CHECK: 0xba,0xc7,0x94,0x00 +st.h %r21, [*%r17 or %r18] +! CHECK: 0xba,0xc7,0x95,0x00 +st.h %r21, [*%r17 xor %r18] +! CHECK: 0xba,0xc7,0x96,0x00 +st.h %r21, [*%r17 sha %r18] +! CHECK: 0xba,0xc7,0x97,0xc0 +st.b %r21, [*%r17 add %r18] +! CHECK: 0xba,0xc7,0x90,0x04 +st.b %r21, [*%r17 addc %r18] +! CHECK: 0xba,0xc7,0x91,0x04 +st.b %r21, [*%r17 sub %r18] +! CHECK: 0xba,0xc7,0x92,0x04 +st.b %r21, [*%r17 subb %r18] +! CHECK: 0xba,0xc7,0x93,0x04 +st.b %r21, [*%r17 and %r18] +! CHECK: 0xba,0xc7,0x94,0x04 +st.b %r21, [*%r17 or %r18] +! CHECK: 0xba,0xc7,0x95,0x04 +st.b %r21, [*%r17 xor %r18] +! CHECK: 0xba,0xc7,0x96,0x04 +st.b %r21, [*%r17 sha %r18] +! CHECK: 0xba,0xc7,0x97,0xc4 +st %r21, [%r17* add %r18] +! CHECK: 0xba,0xc5,0x90,0x02 +st %r21, [%r17* addc %r18] +! CHECK: 0xba,0xc5,0x91,0x02 +st %r21, [%r17* sub %r18] +! CHECK: 0xba,0xc5,0x92,0x02 +st %r21, [%r17* subb %r18] +! CHECK: 0xba,0xc5,0x93,0x02 +st %r21, [%r17* and %r18] +! CHECK: 0xba,0xc5,0x94,0x02 +st %r21, [%r17* or %r18] +! CHECK: 0xba,0xc5,0x95,0x02 +st %r21, [%r17* xor %r18] +! CHECK: 0xba,0xc5,0x96,0x02 +st %r21, [%r17* sh %r18] +! CHECK: 0xba,0xc5,0x97,0x82 +st %r21, [%r17* sha %r18] +! CHECK: 0xba,0xc5,0x97,0xc2 +st.h %r21, [%r17* add %r18] +! CHECK: 0xba,0xc5,0x90,0x00 +st.h %r21, [%r17* addc %r18] +! CHECK: 0xba,0xc5,0x91,0x00 +st.h %r21, [%r17* sub %r18] +! CHECK: 0xba,0xc5,0x92,0x00 +st.h %r21, [%r17* subb %r18] +! CHECK: 0xba,0xc5,0x93,0x00 +st.h %r21, [%r17* and %r18] +! CHECK: 0xba,0xc5,0x94,0x00 +st.h %r21, [%r17* or %r18] +! CHECK: 0xba,0xc5,0x95,0x00 +st.h %r21, [%r17* xor %r18] +! CHECK: 0xba,0xc5,0x96,0x00 +st.h %r21, [%r17* sh %r18] +! CHECK: 0xba,0xc5,0x97,0x80 +st.h %r21, [%r17* sha %r18] +! CHECK: 0xba,0xc5,0x97,0xc0 +st.b %r21, [%r17* add %r18] +! CHECK: 0xba,0xc5,0x90,0x04 +st.b %r21, [%r17* addc %r18] +! CHECK: 0xba,0xc5,0x91,0x04 +st.b %r21, [%r17* sub %r18] +! CHECK: 0xba,0xc5,0x92,0x04 +st.b %r21, [%r17* subb %r18] +! CHECK: 0xba,0xc5,0x93,0x04 +st.b %r21, [%r17* and %r18] +! CHECK: 0xba,0xc5,0x94,0x04 +st.b %r21, [%r17* or %r18] +! CHECK: 0xba,0xc5,0x95,0x04 +st.b %r21, [%r17* xor %r18] +! CHECK: 0xba,0xc5,0x96,0x04 +st.b %r21, [%r17* sh %r18] +! CHECK: 0xba,0xc5,0x97,0x84 +st.b %r21, [%r17* sha %r18] +! CHECK: 0xba,0xc5,0x97,0xc4 +st %r21, [0x12344] +! CHECK: 0xfa,0x85,0x23,0x44 +sub %r17, 0, %r21 +! CHECK: 0x2a,0xc4,0x00,0x00 +sub %r17, 0x00001234, %r21 +! CHECK: 0x2a,0xc4,0x12,0x34 +sub %r17, 0x12340000, %r21 +! CHECK: 0x2a,0xc5,0x12,0x34 +sub.f %r17, 0, %r21 +! CHECK: 0x2a,0xc6,0x00,0x00 +sub.f %r17, 0x00001234, %r21 +! CHECK: 0x2a,0xc6,0x12,0x34 +sub.f %r17, 0x12340000, %r21 +! CHECK: 0x2a,0xc7,0x12,0x34 +sub %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x92,0x00 +sub.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x92,0x00 +subb %r17, 0, %r21 +! CHECK: 0x3a,0xc4,0x00,0x00 +subb %r17, 0x00001234, %r21 +! CHECK: 0x3a,0xc4,0x12,0x34 +subb %r17, 0x12340000, %r21 +! CHECK: 0x3a,0xc5,0x12,0x34 +subb.f %r17, 0, %r21 +! CHECK: 0x3a,0xc6,0x00,0x00 +subb.f %r17, 0x00001234, %r21 +! CHECK: 0x3a,0xc6,0x12,0x34 +subb.f %r17, 0x12340000, %r21 +! CHECK: 0x3a,0xc7,0x12,0x34 +subb %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x93,0x00 +subb.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x93,0x00 +xor %r17, 0, %r21 +! CHECK: 0x6a,0xc4,0x00,0x00 +xor %r17, 0x00001234, %r21 +! CHECK: 0x6a,0xc4,0x12,0x34 +xor %r17, 0x12340000, %r21 +! CHECK: 0x6a,0xc5,0x12,0x34 +xor.f %r17, 0, %r21 +! CHECK: 0x6a,0xc6,0x00,0x00 +xor.f %r17, 0x00001234, %r21 +! CHECK: 0x6a,0xc6,0x12,0x34 +xor.f %r17, 0x12340000, %r21 +! CHECK: 0x6a,0xc7,0x12,0x34 +xor %r17, %r18, %r21 +! CHECK: 0xca,0xc4,0x96,0x00 +xor.f %r17, %r18, %r21 +! CHECK: 0xca,0xc6,0x96,0x00 +sel.ne %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x03 +sel.gt %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x07 +xor.lt %r17, %r18, %r21 +! CHECK: 0xca,0xc5,0x96,0x06 +xor.f.eq %r17, %r18, %r21 +! CHECK: 0xca,0xc7,0x96,0x03 +add.ge %r13, %r14, %r18 +! CHECK: 0xc9,0x34,0x70,0x06 +spl %r19 +! CHECK: 0xea,0x4c,0x00,0x02 +bt 0x1234 +! CHECK: 0xe0,0x00,0x12,0x34 +sel.t %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x00 +sel.f %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x00 +sel.ugt %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x01 +sel.ule %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x01 +sel.ult %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x02 +sel.uge %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x02 +sel.ne %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x03 +sel.eq %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x03 +sel.vc %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x04 +sel.vs %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x04 +sel.pl %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x05 +sel.mi %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x05 +sel.ge %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x06 +sel.lt %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x06 +sel.gt %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x07 +sel.le %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x07 +trailz %r15, %r12 +! CHECK: 0xd6,0x3c,0x00,0x03 diff --git a/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll b/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll index b52a5abecab2..0cfb764a835a 100644 --- a/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll +++ b/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll @@ -28,8 +28,8 @@ ; CHECK: .long 5 ; CHECK-NOT: .long _localgotequiv-(_table+20) -; CHECK-NEXT: Ltmp1: -; CHECK-NEXT: .long _localfoo@GOT-Ltmp1 +; CHECK-NEXT: Ltmp0: +; CHECK-NEXT: .long _localfoo@GOT-Ltmp0 %struct.data { i32 4, %struct.anon { i32 5, i32 trunc (i64 sub (i64 ptrtoint (i32** @localgotequiv to i64), i64 ptrtoint (i32* getelementptr inbounds ([4 x %struct.data], [4 x %struct.data]* @table, i32 0, i64 1, i32 1, i32 1) to i64)) @@ -38,8 +38,8 @@ ; CHECK: .long 5 ; CHECK-NOT: _extgotequiv-(_table+32) -; CHECK-NEXT: Ltmp2: -; CHECK-NEXT: _extfoo@GOT-Ltmp2 +; CHECK-NEXT: Ltmp1: +; CHECK-NEXT: _extfoo@GOT-Ltmp1 %struct.data { i32 4, %struct.anon { i32 5, i32 trunc (i64 sub (i64 ptrtoint (i32** @extgotequiv to i64), i64 ptrtoint (i32* getelementptr inbounds ([4 x %struct.data], [4 x %struct.data]* @table, i32 0, i64 2, i32 1, i32 1) to i64)) @@ -49,7 +49,7 @@ ; supported on x86-64 but not on ARM64 ; CHECK: .long 5 -; CHECK-NEXT: .long (l_extgotequiv-(_table+44))+24 +; CHECK-NEXT: .long ((l_extgotequiv-_table)-44)+24 %struct.data { i32 4, %struct.anon { i32 5, i32 add (i32 trunc (i64 sub (i64 ptrtoint (i32** @extgotequiv to i64), i64 ptrtoint (i32* getelementptr inbounds ([4 x %struct.data], [4 x %struct.data]* @table, i32 0, i64 3, i32 1, i32 1) to i64)) @@ -60,8 +60,8 @@ ; Test multiple uses of GOT equivalents. ; CHECK-LABEL: _delta -; CHECK: Ltmp3: -; CHECK-NEXT: .long _extfoo@GOT-Ltmp3 +; CHECK: Ltmp2: +; CHECK-NEXT: .long _extfoo@GOT-Ltmp2 @delta = global i32 trunc (i64 sub (i64 ptrtoint (i32** @extgotequiv to i64), i64 ptrtoint (i32* @delta to i64)) to i32) diff --git a/test/MC/MachO/AArch64/data-in-code.s b/test/MC/MachO/AArch64/data-in-code.s new file mode 100644 index 000000000000..cf7d860a622f --- /dev/null +++ b/test/MC/MachO/AArch64/data-in-code.s @@ -0,0 +1,49 @@ +// RUN: llvm-mc -triple arm64-apple-darwin10 -filetype=obj -o - < %s | llvm-readobj --macho-data-in-code | FileCheck %s + .text +_foo: +.data_region + .long 10 +.end_data_region +.data_region jt32 + .long 1 +.end_data_region +.data_region jt16 + .short 2 +.end_data_region +.data_region jt8 + .byte 3 +.end_data_region + +// CHECK: File: <stdin> +// CHECK: Format: Mach-O arm64 +// CHECK: Arch: aarch64 +// CHECK: AddressSize: 64bit +// CHECK: DataInCode { +// CHECK: Data size: 32 +// CHECK: Data entries [ +// CHECK: Entry { +// CHECK: Index: 0 +// CHECK: Offset: 0 +// CHECK: Length: 4 +// CHECK: Kind: 1 +// CHECK: } +// CHECK: Entry { +// CHECK: Index: 1 +// CHECK: Offset: 4 +// CHECK: Length: 4 +// CHECK: Kind: 4 +// CHECK: } +// CHECK: Entry { +// CHECK: Index: 2 +// CHECK: Offset: 8 +// CHECK: Length: 2 +// CHECK: Kind: 3 +// CHECK: } +// CHECK: Entry { +// CHECK: Index: 3 +// CHECK: Offset: 10 +// CHECK: Length: 1 +// CHECK: Kind: 2 +// CHECK: } +// CHECK: ] +// CHECK: } diff --git a/test/MC/MachO/absolute.s b/test/MC/MachO/absolute.s index 36a0ae5ec5bb..26850a2d09ab 100644 --- a/test/MC/MachO/absolute.s +++ b/test/MC/MachO/absolute.s @@ -79,7 +79,8 @@ foo_equals2 = (_foo - _bar + 0xffff0000) // CHECK: Type: Section (0xE) // CHECK: Section: __text (0x1) // CHECK: RefType: UndefinedNonLazy (0x0) -// CHECK: Flags [ (0x20) +// CHECK: Flags [ (0x220) +// CHECK: AltEntry (0x200) // CHECK: NoDeadStrip (0x20) // CHECK: ] // CHECK: Value: 0xFFFF0001 @@ -99,7 +100,8 @@ foo_equals2 = (_foo - _bar + 0xffff0000) // CHECK: Type: Section (0xE) // CHECK: Section: __text (0x1) // CHECK: RefType: UndefinedNonLazy (0x0) -// CHECK: Flags [ (0x0) +// CHECK: Flags [ (0x200) +// CHECK: AltEntry (0x200) // CHECK: ] // CHECK: Value: 0xFFFF0001 // CHECK: } @@ -118,7 +120,8 @@ foo_equals2 = (_foo - _bar + 0xffff0000) // CHECK: Type: Section (0xE) // CHECK: Section: __text (0x1) // CHECK: RefType: UndefinedNonLazy (0x0) -// CHECK: Flags [ (0x20) +// CHECK: Flags [ (0x220) +// CHECK: AltEntry (0x200) // CHECK: NoDeadStrip (0x20) // CHECK: ] // CHECK: Value: 0xFFFF0001 diff --git a/test/MC/MachO/altentry.s b/test/MC/MachO/altentry.s new file mode 100644 index 000000000000..e63db2b0ca18 --- /dev/null +++ b/test/MC/MachO/altentry.s @@ -0,0 +1,77 @@ +// RUN: llvm-mc -triple x86_64-apple-darwin -filetype=obj %s -o - | llvm-readobj -t | FileCheck %s + +// CHECK: Symbol { +// CHECK: Name: _foo +// CHECK: Flags [ (0x0) +// CHECK: Value: 0x0 + +// CHECK: Symbol { +// CHECK: Name: _bar +// CHECK: Flags [ (0x0) +// CHECK: Value: 0x0 + +// CHECK: Symbol { +// CHECK: Name: _baz +// CHECK: Flags [ (0x200) +// CHECK: Value: 0x1 + +// CHECK: Symbol { +// CHECK: Name: _offsetsym0 +// CHECK: Flags [ (0x0) +// CHECK: Value: 0x8 + +// CHECK: Symbol { +// CHECK: Name: _offsetsym1 +// CHECK: Flags [ (0x200) +// CHECK: Value: 0xC + +// CHECK: Symbol { +// CHECK: Name: _offsetsym2 +// CHECK: Flags [ (0x200) +// CHECK: Value: 0x10 + +// CHECK: Symbol { +// CHECK: Name: _offsetsym3 +// CHECK: Flags [ (0x200) +// CHECK: Value: 0x20 + +// CHECK: Symbol { +// CHECK: Symbol { +// CHECK: Symbol { + + .section __TEXT,__text,regular,pure_instructions + +_foo: +_bar = _foo + nop +_baz = . + + .comm _g0,4,2 + + .section __DATA,__data + .globl _s0 + .align 3 +_s0: + .long 31 + .long 32 + .quad _g0 + + .globl _s1 + .align 3 +_s1: + .long 33 + .long 34 + .quad _g0 + + .globl _offsetsym0 + _offsetsym0 = _s0 + .globl _offsetsym1 + .alt_entry _offsetsym1 + _offsetsym1 = _s0+4 + .globl _offsetsym2 + .alt_entry _offsetsym2 + _offsetsym2 = _s0+8 + .globl _offsetsym3 + .alt_entry _offsetsym3 + _offsetsym3 = _s1+8 + .subsections_via_symbols diff --git a/test/MC/MachO/empty-twice.ll b/test/MC/MachO/empty-twice.ll index 6914c73a58d1..6ac6a0b5227a 100644 --- a/test/MC/MachO/empty-twice.ll +++ b/test/MC/MachO/empty-twice.ll @@ -6,7 +6,7 @@ !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!3, !4} -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: true) +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: true, emissionKind: FullDebug) !1 = !DIFile(filename: "<stdin>", directory: "/") !3 = !{i32 2, !"Dwarf Version", i32 4} !4 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/test/MC/MachO/undefined-directional.s b/test/MC/MachO/undefined-directional.s new file mode 100644 index 000000000000..80af9caf68c2 --- /dev/null +++ b/test/MC/MachO/undefined-directional.s @@ -0,0 +1,11 @@ +// RUN: not llvm-mc -triple x86_64-apple-macosx -filetype=obj -o /dev/null %s 2>&1 | FileCheck %s + +// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: directional label undefined + jmp 1b +// CHECK: [[@LINE+1]]:{{[0-9]+}}: error: directional label undefined + jmp 1f +# 10 "wibble.s" +// CHECK: wibble.s:11:{{[0-9]+}}: error: directional label undefined + jmp 2f + +# 42 "invalid.s" diff --git a/test/MC/MachO/variable-exprs.s b/test/MC/MachO/variable-exprs.s index 85f395fd3be8..5369622d8cfe 100644 --- a/test/MC/MachO/variable-exprs.s +++ b/test/MC/MachO/variable-exprs.s @@ -151,7 +151,7 @@ Lt0_x = Lt0_a - Lt0_b // CHECK-I386: Type: Section (0xE) // CHECK-I386: Section: __data (0x2) // CHECK-I386: RefType: UndefinedNonLazy (0x0) -// CHECK-I386: Flags [ (0x0) +// CHECK-I386: Flags [ (0x200) // CHECK-I386: ] // CHECK-I386: Value: 0x9 // CHECK-I386: } @@ -208,7 +208,7 @@ Lt0_x = Lt0_a - Lt0_b // CHECK-I386: Type: Undef (0x0) // CHECK-I386: Section: (0x0) // CHECK-I386: RefType: UndefinedNonLazy (0x0) -// CHECK-I386: Flags [ (0x0) +// CHECK-I386: Flags [ (0x200) // CHECK-I386: ] // CHECK-I386: Value: 0x0 // CHECK-I386: } @@ -360,7 +360,7 @@ Lt0_x = Lt0_a - Lt0_b // CHECK-X86_64: Type: Section (0xE) // CHECK-X86_64: Section: __data (0x2) // CHECK-X86_64: RefType: UndefinedNonLazy (0x0) -// CHECK-X86_64: Flags [ (0x0) +// CHECK-X86_64: Flags [ (0x200) // CHECK-X86_64: ] // CHECK-X86_64: Value: 0x9 // CHECK-X86_64: } @@ -417,7 +417,7 @@ Lt0_x = Lt0_a - Lt0_b // CHECK-X86_64: Type: Undef (0x0) // CHECK-X86_64: Section: (0x0) // CHECK-X86_64: RefType: UndefinedNonLazy (0x0) -// CHECK-X86_64: Flags [ (0x0) +// CHECK-X86_64: Flags [ (0x200) // CHECK-X86_64: ] // CHECK-X86_64: Value: 0x0 // CHECK-X86_64: } diff --git a/test/MC/MachO/x86-data-in-code.ll b/test/MC/MachO/x86-data-in-code.ll deleted file mode 100644 index b8d3a185cbd9..000000000000 --- a/test/MC/MachO/x86-data-in-code.ll +++ /dev/null @@ -1,107 +0,0 @@ -; RUN: llc -O0 -mtriple=x86_64-apple-darwin -filetype=obj -o - %s | llvm-readobj -macho-data-in-code | FileCheck %s - -; There should not be a data-in-code load command (type 0x29) for x86_64 -; jump tables, even though they are in the text section. -; CHECK-NOT: DataInCode { - -define void @foo(i32* %ptr) nounwind ssp { - %tmp = load i32, i32* %ptr, align 4 - switch i32 %tmp, label %default [ - i32 11, label %bb0 - i32 10, label %bb1 - i32 8, label %bb2 - i32 4, label %bb3 - i32 2, label %bb4 - i32 6, label %bb5 - i32 9, label %bb6 - i32 15, label %bb7 - i32 1, label %bb8 - i32 3, label %bb9 - i32 5, label %bb10 - i32 30, label %bb11 - i32 31, label %bb12 - i32 13, label %bb13 - i32 14, label %bb14 - i32 20, label %bb15 - i32 19, label %bb16 - i32 17, label %bb17 - i32 18, label %bb18 - i32 21, label %bb19 - i32 22, label %bb20 - i32 16, label %bb21 - i32 24, label %bb22 - i32 25, label %bb23 - i32 26, label %bb24 - i32 27, label %bb25 - i32 28, label %bb26 - i32 23, label %bb27 - i32 12, label %bb28 - ] - -default: - br label %exit -bb0: - br label %exit -bb1: - br label %exit -bb2: - br label %exit -bb3: - br label %exit -bb4: - br label %exit -bb5: - br label %exit -bb6: - br label %exit -bb7: - br label %exit -bb8: - br label %exit -bb9: - br label %exit -bb10: - br label %exit -bb11: - br label %exit -bb12: - br label %exit -bb13: - br label %exit -bb14: - br label %exit -bb15: - br label %exit -bb16: - br label %exit -bb17: - br label %exit -bb18: - br label %exit -bb19: - br label %exit -bb20: - br label %exit -bb21: - br label %exit -bb22: - br label %exit -bb23: - br label %exit -bb24: - br label %exit -bb25: - br label %exit -bb26: - br label %exit -bb27: - br label %exit -bb28: - br label %exit - - -exit: - - ret void -} - diff --git a/test/MC/MachO/x86-data-in-code.s b/test/MC/MachO/x86-data-in-code.s new file mode 100644 index 000000000000..e7b2406e5d09 --- /dev/null +++ b/test/MC/MachO/x86-data-in-code.s @@ -0,0 +1,47 @@ +// RUN: llvm-mc -triple x86_64-apple-darwin10 -filetype=obj -o - < %s | llvm-readobj --macho-data-in-code | FileCheck %s +// RUN: llvm-mc -triple i686-apple-darwin10 -filetype=obj -o - < %s | llvm-readobj --macho-data-in-code | FileCheck %s + + .text +_foo: +.data_region + .long 10 +.end_data_region +.data_region jt32 + .long 1 +.end_data_region +.data_region jt16 + .short 2 +.end_data_region +.data_region jt8 + .byte 3 +.end_data_region + +// CHECK: DataInCode { +// CHECK: Data size: 32 +// CHECK: Data entries [ +// CHECK: Entry { +// CHECK: Index: 0 +// CHECK: Offset: 0 +// CHECK: Length: 4 +// CHECK: Kind: 1 +// CHECK: } +// CHECK: Entry { +// CHECK: Index: 1 +// CHECK: Offset: 4 +// CHECK: Length: 4 +// CHECK: Kind: 4 +// CHECK: } +// CHECK: Entry { +// CHECK: Index: 2 +// CHECK: Offset: 8 +// CHECK: Length: 2 +// CHECK: Kind: 3 +// CHECK: } +// CHECK: Entry { +// CHECK: Index: 3 +// CHECK: Offset: 10 +// CHECK: Length: 1 +// CHECK: Kind: 2 +// CHECK: } +// CHECK: ] +// CHECK: } diff --git a/test/MC/MachO/x86_64-reloc-arithmetic.s b/test/MC/MachO/x86_64-reloc-arithmetic.s index de524791faa3..bce9dbdbe4ca 100644 --- a/test/MC/MachO/x86_64-reloc-arithmetic.s +++ b/test/MC/MachO/x86_64-reloc-arithmetic.s @@ -31,7 +31,8 @@ _baz: // CHECK-NEXT: Type: Section (0xE) // CHECK-NEXT: Section: __text (0x1) // CHECK-NEXT: RefType: UndefinedNonLazy (0x0) -// CHECK-NEXT: Flags [ (0x0) +// CHECK-NEXT: Flags [ (0x200) +// CHECK-NEXT: AltEntry (0x200) // CHECK-NEXT: ] // CHECK-NEXT: Value: 0x102 // CHECK-NEXT: } diff --git a/test/MC/Mips/cnmips/invalid.s b/test/MC/Mips/cnmips/invalid.s index 52e71102e46f..f2606d863e56 100644 --- a/test/MC/Mips/cnmips/invalid.s +++ b/test/MC/Mips/cnmips/invalid.s @@ -13,3 +13,11 @@ foo: bbit1 $19, 64, foo # CHECK: :[[@LINE]]:16: error: expected 6-bit unsigned immediate bbit132 $19, -1, foo # CHECK: :[[@LINE]]:18: error: expected 5-bit unsigned immediate bbit132 $19, 32, foo # CHECK: :[[@LINE]]:18: error: expected 5-bit unsigned immediate + ins $2, $3, -1, 1 # CHECK: :[[@LINE]]:17: error: expected 5-bit unsigned immediate + ins $2, $3, 32, 1 # CHECK: :[[@LINE]]:17: error: expected 5-bit unsigned immediate + ins $2, $3, 0, -1 # CHECK: :[[@LINE]]:20: error: expected immediate in range 1 .. 32 + ins $2, $3, 0, 33 # CHECK: :[[@LINE]]:20: error: expected immediate in range 1 .. 32 + seqi $2, $3, -1025 # CHECK: :[[@LINE]]:18: error: expected 10-bit signed immediate + seqi $2, $3, 1024 # CHECK: :[[@LINE]]:18: error: expected 10-bit signed immediate + snei $2, $3, -1025 # CHECK: :[[@LINE]]:18: error: expected 10-bit signed immediate + snei $2, $3, 1024 # CHECK: :[[@LINE]]:18: error: expected 10-bit signed immediate diff --git a/test/MC/Mips/cpload.s b/test/MC/Mips/cpload.s index 842e0c7937c0..3bbad60e578d 100644 --- a/test/MC/Mips/cpload.s +++ b/test/MC/Mips/cpload.s @@ -1,16 +1,13 @@ # RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 | FileCheck %s -check-prefix=ASM # -# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 -mattr=+o32 -filetype=obj -o -| \ -# RUN: llvm-objdump -d -r -arch=mips - | \ -# RUN: FileCheck %s -check-prefix=OBJ-O32 +# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 -filetype=obj -o -| \ +# RUN: llvm-objdump -d -r - | FileCheck %s -check-prefix=OBJ-O32 # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -target-abi n32 -filetype=obj -o -| \ -# RUN: llvm-objdump -d -r -arch=mips - | \ -# RUN: FileCheck %s -check-prefix=OBJ-N32 +# RUN: llvm-objdump -d -r - | FileCheck %s -check-prefix=OBJ-N32 -# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -mattr=+n64 -filetype=obj -o -| \ -# RUN: llvm-objdump -d -r -arch=mips - | \ -# RUN: FileCheck %s -check-prefix=OBJ-N64 +# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -filetype=obj -o -| \ +# RUN: llvm-objdump -d -r - | FileCheck %s -check-prefix=OBJ-N64 # ASM: .text # ASM: .option pic2 diff --git a/test/MC/Mips/cprestore-bad.s b/test/MC/Mips/cprestore-bad.s index d2fb037091d1..cfd62a4ed988 100644 --- a/test/MC/Mips/cprestore-bad.s +++ b/test/MC/Mips/cprestore-bad.s @@ -1,4 +1,4 @@ -# RUN: not llvm-mc %s -arch=mips -mcpu=mips32 -relocation-model=pic 2>%t1 +# RUN: not llvm-mc %s -arch=mips -mcpu=mips32 2>%t1 # RUN: FileCheck %s < %t1 .text diff --git a/test/MC/Mips/cprestore-noreorder-noat.s b/test/MC/Mips/cprestore-noreorder-noat.s new file mode 100644 index 000000000000..07c4dd2ea358 --- /dev/null +++ b/test/MC/Mips/cprestore-noreorder-noat.s @@ -0,0 +1,54 @@ +# RUN: not llvm-mc %s -arch=mips -mcpu=mips32 --position-independent -filetype=obj \ +# RUN: -o /dev/null 2>&1 | FileCheck %s -check-prefix=O32 + +# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 \ +# RUN: -filetype=obj -o /dev/null 2>&1 | FileCheck %s -allow-empty -check-prefix=N32 + +# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi=n32 \ +# RUN: -filetype=obj -o /dev/null 2>&1 | FileCheck %s -allow-empty -check-prefix=N64 + +# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi=n32 \ +# RUN: -filetype=obj -o - | llvm-objdump -d -r - | \ +# RUN: FileCheck %s -check-prefix=NO-STORE + +# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -filetype=obj -o - | \ +# RUN: llvm-objdump -d -r - | FileCheck %s -check-prefix=NO-STORE + + .text + .ent foo +foo: + .frame $sp, 0, $ra + .set noreorder + .set noat + + .cpload $25 + .cprestore 8 +# O32-NOT: error: pseudo-instruction requires $at, which is not available +# N32-NOT: error: pseudo-instruction requires $at, which is not available +# N64-NOT: error: pseudo-instruction requires $at, which is not available +# NO-STORE-NOT: sw $gp, 8($sp) + + jal $25 + jal $4, $25 + jal foo + + .end foo + + .ent bar +bar: + .frame $sp, 0, $ra + .set noreorder + .set noat + + .cpload $25 + .cprestore 65536 +# O32: :[[@LINE-1]]:3: error: pseudo-instruction requires $at, which is not available +# N32-NOT: error: pseudo-instruction requires $at, which is not available +# N64-NOT: error: pseudo-instruction requires $at, which is not available +# NO-STORE-NOT: sw $gp, + + jal $25 + jal $4, $25 + jal bar + + .end bar diff --git a/test/MC/Mips/cprestore-noreorder.s b/test/MC/Mips/cprestore-noreorder.s index 750c95a63f0c..cce43d333fae 100644 --- a/test/MC/Mips/cprestore-noreorder.s +++ b/test/MC/Mips/cprestore-noreorder.s @@ -1,21 +1,20 @@ -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -relocation-model=pic -show-encoding | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 --position-independent -show-encoding | \ # RUN: FileCheck %s -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -relocation-model=pic -filetype=obj -o -| \ -# RUN: llvm-objdump -d -r -arch=mips - | \ -# RUN: FileCheck %s -check-prefix=CHECK-FOR-STORE +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 --position-independent -filetype=obj -o -| \ +# RUN: llvm-objdump -d -r - | FileCheck %s -check-prefix=CHECK-FOR-STORE -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -mattr=+micromips -relocation-model=pic -show-encoding | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -mattr=+micromips --position-independent -show-encoding | \ # RUN: FileCheck %s -check-prefix=MICROMIPS -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -relocation-model=static -show-encoding | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -show-encoding | \ # RUN: FileCheck %s -check-prefix=NO-PIC -# RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 -relocation-model=pic -show-encoding | \ -# RUN: FileCheck %s -check-prefix=BAD-ABI -check-prefix=BAD-ABI-N32 +# RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 --position-independent -show-encoding | \ +# RUN: FileCheck %s -check-prefixes=BAD-ABI,BAD-ABI-N32 -# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 -relocation-model=pic -show-encoding | \ -# RUN: FileCheck %s -check-prefix=BAD-ABI -check-prefix=BAD-ABI-N64 +# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 --position-independent -show-encoding | \ +# RUN: FileCheck %s -check-prefixes=BAD-ABI,BAD-ABI-N64 .text .ent foo @@ -44,9 +43,9 @@ foo: # CHECK: lw $gp, 8($sp) # encoding: [0x8f,0xbc,0x00,0x08] # CHECK: lw $25, %got(foo)($gp) # encoding: [0x8f,0x99,A,A] -# CHECK: # fixup A - offset: 0, value: foo@GOT, kind: fixup_Mips_GOT_Local +# CHECK: # fixup A - offset: 0, value: %got(foo), kind: fixup_Mips_GOT # CHECK: addiu $25, $25, %lo(foo) # encoding: [0x27,0x39,A,A] -# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16 +# CHECK: # fixup A - offset: 0, value: %lo(foo), kind: fixup_Mips_LO16 # CHECK: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] # CHECK: lw $gp, 8($sp) # encoding: [0x8f,0xbc,0x00,0x08] @@ -62,9 +61,9 @@ foo: # MICROMIPS: lw $gp, 8($sp) # encoding: [0xff,0x9d,0x00,0x08] # MICROMIPS: lw $25, %got(foo)($gp) # encoding: [0xff,0x3c,A,A] -# MICROMIPS: # fixup A - offset: 0, value: foo@GOT, kind: fixup_MICROMIPS_GOT16 +# MICROMIPS: # fixup A - offset: 0, value: %got(foo), kind: fixup_MICROMIPS_GOT16 # MICROMIPS: addiu $25, $25, %lo(foo) # encoding: [0x33,0x39,A,A] -# MICROMIPS: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_MICROMIPS_LO16 +# MICROMIPS: # fixup A - offset: 0, value: %lo(foo), kind: fixup_MICROMIPS_LO16 # MICROMIPS: jalrs $ra, $25 # encoding: [0x03,0xf9,0x4f,0x3c] # MICROMIPS: nop # encoding: [0x0c,0x00] # MICROMIPS: lw $gp, 8($sp) # encoding: [0xff,0x9d,0x00,0x08] @@ -91,7 +90,7 @@ foo: # BAD-ABI-N32: lw $25, %got_disp(foo)($gp) # encoding: [0x8f,0x99,A,A] # BAD-ABI-N64: ld $25, %got_disp(foo)($gp) # encoding: [0xdf,0x99,A,A] -# BAD-ABI: # fixup A - offset: 0, value: foo@GOT_DISP, kind: fixup_Mips_GOT_DISP +# BAD-ABI: # fixup A - offset: 0, value: %got_disp(foo), kind: fixup_Mips_GOT_DISP # BAD-ABI: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # BAD-ABI-NOT: lw $gp, 8($sp) # encoding: [0x8f,0xbc,0x00,0x08] # BAD-ABI: .end foo diff --git a/test/MC/Mips/cprestore-reorder.s b/test/MC/Mips/cprestore-reorder.s index e037701ede0a..885977992978 100644 --- a/test/MC/Mips/cprestore-reorder.s +++ b/test/MC/Mips/cprestore-reorder.s @@ -1,21 +1,20 @@ -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -relocation-model=pic -show-encoding | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 --position-independent -show-encoding | \ # RUN: FileCheck %s -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -relocation-model=pic -filetype=obj -o -| \ -# RUN: llvm-objdump -d -r -arch=mips - | \ -# RUN: FileCheck %s -check-prefix=CHECK-FOR-STORE +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 --position-independent -filetype=obj -o -| \ +# RUN: llvm-objdump -d -r - | FileCheck %s -check-prefix=CHECK-FOR-STORE -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -mattr=+micromips -relocation-model=pic -show-encoding | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -mattr=+micromips --position-independent -show-encoding | \ # RUN: FileCheck %s -check-prefix=MICROMIPS -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -relocation-model=static -show-encoding | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -show-encoding | \ # RUN: FileCheck %s -check-prefix=NO-PIC -# RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 -relocation-model=pic -show-encoding | \ -# RUN: FileCheck %s -check-prefix=BAD-ABI -check-prefix=BAD-ABI-N32 +# RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 --position-independent -show-encoding | \ +# RUN: FileCheck %s -check-prefixes=BAD-ABI,BAD-ABI-N32 -# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 -relocation-model=pic -show-encoding | \ -# RUN: FileCheck %s -check-prefix=BAD-ABI -check-prefix=BAD-ABI-N64 +# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 --position-independent -show-encoding | \ +# RUN: FileCheck %s -check-prefixes=BAD-ABI,BAD-ABI-N64 .text .ent foo @@ -45,9 +44,9 @@ foo: # CHECK: lw $gp, 8($sp) # encoding: [0x8f,0xbc,0x00,0x08] # CHECK: lw $25, %got(foo)($gp) # encoding: [0x8f,0x99,A,A] -# CHECK: # fixup A - offset: 0, value: foo@GOT, kind: fixup_Mips_GOT_Local +# CHECK: # fixup A - offset: 0, value: %got(foo), kind: fixup_Mips_GOT # CHECK: addiu $25, $25, %lo(foo) # encoding: [0x27,0x39,A,A] -# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16 +# CHECK: # fixup A - offset: 0, value: %lo(foo), kind: fixup_Mips_LO16 # CHECK: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] # CHECK: lw $gp, 8($sp) # encoding: [0x8f,0xbc,0x00,0x08] @@ -63,9 +62,9 @@ foo: # MICROMIPS: lw $gp, 8($sp) # encoding: [0xff,0x9d,0x00,0x08] # MICROMIPS: lw $25, %got(foo)($gp) # encoding: [0xff,0x3c,A,A] -# MICROMIPS: # fixup A - offset: 0, value: foo@GOT, kind: fixup_MICROMIPS_GOT16 +# MICROMIPS: # fixup A - offset: 0, value: %got(foo), kind: fixup_MICROMIPS_GOT16 # MICROMIPS: addiu $25, $25, %lo(foo) # encoding: [0x33,0x39,A,A] -# MICROMIPS: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_MICROMIPS_LO16 +# MICROMIPS: # fixup A - offset: 0, value: %lo(foo), kind: fixup_MICROMIPS_LO16 # MICROMIPS: jalrs $ra, $25 # encoding: [0x03,0xf9,0x4f,0x3c] # MICROMIPS: nop # encoding: [0x0c,0x00] # MICROMIPS: lw $gp, 8($sp) # encoding: [0xff,0x9d,0x00,0x08] @@ -92,7 +91,7 @@ foo: # BAD-ABI-N32: lw $25, %got_disp(foo)($gp) # encoding: [0x8f,0x99,A,A] # BAD-ABI-N64: ld $25, %got_disp(foo)($gp) # encoding: [0xdf,0x99,A,A] -# BAD-ABI: # fixup A - offset: 0, value: foo@GOT_DISP, kind: fixup_Mips_GOT_DISP +# BAD-ABI: # fixup A - offset: 0, value: %got_disp(foo), kind: fixup_Mips_GOT_DISP # BAD-ABI: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # BAD-ABI-NOT: lw $gp, 8($sp) # encoding: [0x8f,0xbc,0x00,0x08] # BAD-ABI: .end foo diff --git a/test/MC/Mips/cprestore-warning-unused.s b/test/MC/Mips/cprestore-warning-unused.s index 41a5df715977..e4999b48fb99 100644 --- a/test/MC/Mips/cprestore-warning-unused.s +++ b/test/MC/Mips/cprestore-warning-unused.s @@ -1,4 +1,4 @@ -# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -relocation-model=pic 2>%t1 +# RUN: llvm-mc %s -arch=mips -mcpu=mips32 --position-independent 2>%t1 # RUN: FileCheck %s < %t1 .text diff --git a/test/MC/Mips/cpsetup.s b/test/MC/Mips/cpsetup.s index 95d84d95d851..c5d0f9b589ca 100644 --- a/test/MC/Mips/cpsetup.s +++ b/test/MC/Mips/cpsetup.s @@ -1,23 +1,22 @@ -# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi o32 -filetype=obj -o - %s | \ -# RUN: llvm-objdump -d -r -arch=mips64 - | \ -# RUN: FileCheck -check-prefix=ALL -check-prefix=O32 %s +# RUN: llvm-mc -triple mips64-unknown-linux -target-abi o32 -filetype=obj -o - %s | \ +# RUN: llvm-objdump -d -r - | FileCheck -check-prefixes=ALL,O32 %s # RUN: llvm-mc -triple mips64-unknown-unknown -target-abi o32 %s | \ -# RUN: FileCheck -check-prefix=ALL -check-prefix=ASM %s +# RUN: FileCheck -check-prefixes=ALL,ASM %s -# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi n32 -filetype=obj -o - %s | \ -# RUN: llvm-objdump -d -r -t -arch=mips64 - | \ -# RUN: FileCheck -check-prefix=ALL -check-prefix=NXX -check-prefix=N32 %s +# RUN: llvm-mc -triple mips64-unknown-linux -target-abi n32 -filetype=obj -o - %s | \ +# RUN: llvm-objdump -d -r - | \ +# RUN: FileCheck -check-prefixes=ALL,NXX,N32 %s # RUN: llvm-mc -triple mips64-unknown-unknown -target-abi n32 %s | \ -# RUN: FileCheck -check-prefix=ALL -check-prefix=ASM %s +# RUN: FileCheck -check-prefixes=ALL,ASM %s -# RUN: llvm-mc -triple mips64-unknown-unknown %s -filetype=obj -o - | \ -# RUN: llvm-objdump -d -r -t -arch=mips64 - | \ -# RUN: FileCheck -check-prefix=ALL -check-prefix=NXX -check-prefix=N64 %s +# RUN: llvm-mc -triple mips64-unknown-linux %s -filetype=obj -o - | \ +# RUN: llvm-objdump -d -r - | \ +# RUN: FileCheck -check-prefixes=ALL,NXX,N64 %s # RUN: llvm-mc -triple mips64-unknown-unknown %s | \ -# RUN: FileCheck -check-prefix=ALL -check-prefix=ASM %s +# RUN: FileCheck -check-prefixes=ALL,ASM %s .text .option pic2 @@ -31,16 +30,13 @@ t1: # O32-NOT: __cerror -# FIXME: Direct object emission for N32 is still under development. -# N32 doesn't allow 3 operations to be specified in the same relocation -# record like N64 does. - # NXX-NEXT: sd $gp, 8($sp) # NXX-NEXT: lui $gp, 0 -# NXX-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror +# N32-NEXT: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror # NXX-NEXT: addiu $gp, $gp, 0 -# NXX-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror -# N32-NEXT: addu $gp, $gp, $25 +# N32-NEXT: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror # N64-NEXT: daddu $gp, $gp, $25 # ASM-NEXT: .cpsetup $25, 8, __cerror @@ -62,16 +58,13 @@ t2: # O32-NOT: __cerror -# FIXME: Direct object emission for N32 is still under development. -# N32 doesn't allow 3 operations to be specified in the same relocation -# record like N64 does. - # NXX-NEXT: move $2, $gp # NXX-NEXT: lui $gp, 0 -# NXX-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror +# N32-NEXT: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror # NXX-NEXT: addiu $gp, $gp, 0 -# NXX-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror -# N32-NEXT: addu $gp, $gp, $25 +# N32-NEXT: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror # N64-NEXT: daddu $gp, $gp, $25 # ASM-NEXT: .cpsetup $25, $2, __cerror @@ -101,17 +94,13 @@ t3: # O32-NEXT: nop # O32-NEXT: sub $3, $3, $2 -# FIXME: Direct object emission for N32 is still under development. -# N32 doesn't allow 3 operations to be specified in the same relocation -# record like N64 does. - -# NXX: $tmp0: # NXX-NEXT: move $2, $gp # NXX-NEXT: lui $gp, 0 -# NXX-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 $tmp0 +# N32-NEXT: {{^ *0+}}38: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: {{^ *0+}}40: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 .text # NXX-NEXT: addiu $gp, $gp, 0 -# NXX-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 $tmp0 -# N32-NEXT: addu $gp, $gp, $25 +# N32-NEXT: {{^ *0+}}3c: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: {{^ *0+}}44: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 .text # N64-NEXT: daddu $gp, $gp, $25 # NXX-NEXT: nop # NXX-NEXT: sub $3, $3, $2 @@ -158,24 +147,46 @@ t5: # O32-NOT: __cerror -# FIXME: Direct object emission for N32 is still under development. -# N32 doesn't allow 3 operations to be specified in the same relocation -# record like N64 does. +# NXX-NEXT: sd $gp, 8($sp) +# NXX-NEXT: lui $gp, 0 +# N32-NEXT: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror +# NXX-NEXT: addiu $gp, $gp, 0 +# N32-NEXT: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror +# N64-NEXT: daddu $gp, $gp, $25 + +# ASM-NEXT: .cpsetup $25, 8, __cerror + +# ALL-NEXT: nop + +t1b: +IMM_8 = 8 + .cpsetup $25, IMM_8, __cerror + nop + .cpreturn + nop + +# ALL-LABEL: t1b: +# ASM-NEXT: IMM_8 = 8 + +# O32-NOT: __cerror # NXX-NEXT: sd $gp, 8($sp) # NXX-NEXT: lui $gp, 0 -# NXX-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror +# N32-NEXT: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror # NXX-NEXT: addiu $gp, $gp, 0 -# NXX-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror -# N32-NEXT: addu $gp, $gp, $25 +# N32-NEXT: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror # N64-NEXT: daddu $gp, $gp, $25 # ASM-NEXT: .cpsetup $25, 8, __cerror # ALL-NEXT: nop -# NXX-LABEL: SYMBOL TABLE: +# ASM-NEXT: .cpreturn +# NXX-NEXT: ld $gp, 8($sp) + +# ALL-NEXT: nop -# For .cpsetup with local labels, we need to check if $tmp0 is in the symbol -# table: -# NXX: .text 00000000 $tmp0 diff --git a/test/MC/Mips/directive-ent.s b/test/MC/Mips/directive-ent.s index b9b8bf902f6d..fa15b4eb9c83 100644 --- a/test/MC/Mips/directive-ent.s +++ b/test/MC/Mips/directive-ent.s @@ -5,14 +5,14 @@ # RUN: FileCheck -check-prefix=ASM %s # RUN: llvm-mc -filetype=obj -mcpu=mips32 -triple mips-unknown-unknown %s | \ # RUN: llvm-readobj -symbols | \ -# RUN: FileCheck -check-prefix=OBJ -check-prefix=OBJ-32 %s +# RUN: FileCheck -check-prefixes=OBJ,OBJ-32 %s # # RUN: llvm-mc -mcpu=mips32 -mattr=micromips -triple mips-unknown-unknown %s | \ # RUN: FileCheck -check-prefix=ASM %s # RUN: llvm-mc -filetype=obj -mcpu=mips32 -mattr=micromips \ # RUN: -triple mips-unknown-unknown %s | \ # RUN: llvm-readobj -symbols | \ -# RUN: FileCheck -check-prefix=OBJ -check-prefix=OBJ-MM %s +# RUN: FileCheck -check-prefixes=OBJ,OBJ-MM %s # .ent a a: diff --git a/test/MC/Mips/do_switch1.s b/test/MC/Mips/do_switch1.s index 331a4e25a829..69742e9091a5 100644 --- a/test/MC/Mips/do_switch1.s +++ b/test/MC/Mips/do_switch1.s @@ -2,7 +2,7 @@ // produced. This was not handled for direct object and an assertion // to occur. This is a variation on test case test/CodeGen/Mips/do_switch.ll -// RUN: llvm-mc < %s -filetype=obj -triple=mips-pc-linux -relocation-model=static +// RUN: llvm-mc < %s -filetype=obj -triple=mips-pc-linux .text .abicalls diff --git a/test/MC/Mips/do_switch2.s b/test/MC/Mips/do_switch2.s index 824054f7c874..0c8ad4ad8961 100644 --- a/test/MC/Mips/do_switch2.s +++ b/test/MC/Mips/do_switch2.s @@ -2,7 +2,7 @@ // produced. This was not handled for direct object and an assertion // to occur. This is a variation on test case test/CodeGen/Mips/do_switch.ll -// RUN: llvm-mc < %s -filetype=obj -triple=mips-pc-linux -relocation-model=pic +// RUN: llvm-mc < %s -filetype=obj -triple=mips-pc-linux .text .abicalls diff --git a/test/MC/Mips/do_switch3.s b/test/MC/Mips/do_switch3.s index c0d9dc62fe6e..7ed4f7c52194 100644 --- a/test/MC/Mips/do_switch3.s +++ b/test/MC/Mips/do_switch3.s @@ -2,7 +2,7 @@ // produced. This was not handled for direct object and an assertion // to occur. This is a variation on test case test/CodeGen/Mips/do_switch.ll -// RUN: llvm-mc < %s -filetype=obj -triple=mips64-pc-linux -relocation-model=pic -mcpu=mips64 -target-abi=n64 +// RUN: llvm-mc < %s -filetype=obj -triple=mips64-pc-linux -mcpu=mips64 -target-abi=n64 .text .abicalls diff --git a/test/MC/Mips/double-expand.s b/test/MC/Mips/double-expand.s new file mode 100644 index 000000000000..ac03a6fa835e --- /dev/null +++ b/test/MC/Mips/double-expand.s @@ -0,0 +1,26 @@ +# RUN: llvm-mc -triple=mipsel-unknown-linux < %s | FileCheck %s +# RUN: llvm-mc -triple=mipsel-unknown-linux < %s | \ +# RUN: llvm-mc -triple=mipsel-unknown-linux | FileCheck %s + + .text +branch: + bnez $2, foo + +# CHECK-LABEL: branch: +# CHECK: bnez $2, foo +# CHECK: nop +# CHECK-NOT: nop + +cprestore: + .option pic2 + .cprestore 16 + jal foo + +# CHECK-LABEL: cprestore: +# CHECK: .cprestore 16 +# CHECK: lw $25, %call16(foo)($gp) +# CHECK: jalr $25 +# CHECK: nop +# CHECK: lw $gp, 16($sp) +# CHECK-NOT: nop +# CHECK-NOT: lw diff --git a/test/MC/Mips/dsp/invalid.s b/test/MC/Mips/dsp/invalid.s index 8bd0906e67f8..1d50b829985c 100644 --- a/test/MC/Mips/dsp/invalid.s +++ b/test/MC/Mips/dsp/invalid.s @@ -1,25 +1,39 @@ # RUN: not llvm-mc %s -triple=mips-unknown-unknown -show-encoding -mattr=dsp 2>%t1 # RUN: FileCheck %s < %t1 + extp $2, $ac1, -1 # CHECK: :[[@LINE]]:18: error: expected 5-bit unsigned immediate + extp $2, $ac1, 32 # CHECK: :[[@LINE]]:18: error: expected 5-bit unsigned immediate + extpdp $2, $ac1, -1 # CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate + extpdp $2, $ac1, 32 # CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate + extr.w $2, $ac1, -1 # CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate + extr.w $2, $ac1, 32 # CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate + extr_r.w $2, $ac1, -1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + extr_r.w $2, $ac1, 32 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + extr_rs.w $2, $ac1, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + extr_rs.w $2, $ac1, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate shll.ph $3, $4, 16 # CHECK: :[[@LINE]]:19: error: expected 4-bit unsigned immediate shll.ph $3, $4, -1 # CHECK: :[[@LINE]]:19: error: expected 4-bit unsigned immediate shll_s.ph $3, $4, 16 # CHECK: :[[@LINE]]:21: error: expected 4-bit unsigned immediate shll_s.ph $3, $4, -1 # CHECK: :[[@LINE]]:21: error: expected 4-bit unsigned immediate shll.qb $3, $4, 8 # CHECK: :[[@LINE]]:19: error: expected 3-bit unsigned immediate shll.qb $3, $4, -1 # CHECK: :[[@LINE]]:19: error: expected 3-bit unsigned immediate - // FIXME: Following invalid tests are temporarely disabled, until operand check for uimm5 is added - shll_s.w $3, $4, 32 # -CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate - shll_s.w $3, $4, -1 # -CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate + shll_s.w $3, $4, 32 # CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate + shll_s.w $3, $4, -1 # CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate shra.ph $3, $4, 16 # CHECK: :[[@LINE]]:19: error: expected 4-bit unsigned immediate shra.ph $3, $4, -1 # CHECK: :[[@LINE]]:19: error: expected 4-bit unsigned immediate shra_r.ph $3, $4, 16 # CHECK: :[[@LINE]]:21: error: expected 4-bit unsigned immediate shra_r.ph $3, $4, -1 # CHECK: :[[@LINE]]:21: error: expected 4-bit unsigned immediate - // FIXME: Following invalid tests are temporarely disabled, until operand check for uimm5 is added - shra_r.w $3, $4, 32 # -CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate - shra_r.w $3, $4, -1 # -CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate + shra_r.w $3, $4, 32 # CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate + shra_r.w $3, $4, -1 # CHECK: :[[@LINE]]:20: error: expected 5-bit unsigned immediate shrl.qb $3, $4, 8 # CHECK: :[[@LINE]]:19: error: expected 3-bit unsigned immediate shrl.qb $3, $4, -1 # CHECK: :[[@LINE]]:19: error: expected 3-bit unsigned immediate shilo $ac1, 64 # CHECK: :[[@LINE]]:15: error: expected 6-bit signed immediate shilo $ac1, -64 # CHECK: :[[@LINE]]:15: error: expected 6-bit signed immediate - wrdsp $5, 1024 # CHECK: :[[@LINE]]:13: error: expected 10-bit unsigned immediate + repl.qb $2, -1 # CHECK: :[[@LINE]]:15: error: expected 8-bit unsigned immediate + repl.qb $2, 256 # CHECK: :[[@LINE]]:15: error: expected 8-bit unsigned immediate + repl.ph $2, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + repl.ph $2, 1024 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + rddsp $2, -1 # CHECK: :[[@LINE]]:13: error: expected 10-bit unsigned immediate + rddsp $2, 1024 # CHECK: :[[@LINE]]:13: error: expected 10-bit unsigned immediate wrdsp $5, -1 # CHECK: :[[@LINE]]:13: error: expected 10-bit unsigned immediate + wrdsp $5, 1024 # CHECK: :[[@LINE]]:13: error: expected 10-bit unsigned immediate diff --git a/test/MC/Mips/elf_eflags.s b/test/MC/Mips/elf_eflags.s index 708894fee802..244b07db25fa 100644 --- a/test/MC/Mips/elf_eflags.s +++ b/test/MC/Mips/elf_eflags.s @@ -1,26 +1,26 @@ # These *MUST* match the output of 'gcc -c' compiled with the same triple and # corresponding options (-mcpu=mips32 -> -mips32 for example). -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R6 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 -target-abi n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R6 %s # MIPSEL-MIPS64R6: Flags [ (0xA0000406) -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R6-NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 -target-abi n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R6-NAN2008 %s # MIPSEL-MIPS64R6-NAN2008: Flags [ (0xA0000406) -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -target-abi n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -target-abi n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -target-abi n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s # MIPSEL-MIPS64R2: Flags [ (0x80000006) -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -target-abi n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -target-abi n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -target-abi n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s # MIPSEL-MIPS64R2-NAN2008: Flags [ (0x80000406) -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64 -target-abi n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64 %s # MIPSEL-MIPS64: Flags [ (0x60000006) -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64-NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64 -target-abi n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64-NAN2008 %s # MIPSEL-MIPS64-NAN2008: Flags [ (0x60000406) # RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r6 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R6 %s @@ -125,3 +125,6 @@ # RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-NAN2008 %s # MIPS64EL-MIPS64-NAN2008: Flags [ (0x60000406) + +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=octeon -target-abi n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-OCTEON %s +# MIPSEL-OCTEON: Flags [ (0x808B0006) diff --git a/test/MC/Mips/elf_eflags_micromips.s b/test/MC/Mips/elf_eflags_micromips.s index 9b7de12d6e79..623f5a732911 100644 --- a/test/MC/Mips/elf_eflags_micromips.s +++ b/test/MC/Mips/elf_eflags_micromips.s @@ -1,7 +1,12 @@ -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 \ +# RUN: -mattr=+micromips < /dev/null -o -| llvm-readobj -h | FileCheck \ +# RUN: -check-prefix=NO-MM %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o - \ +# RUN: | llvm-readobj -h | FileCheck %s # This *MUST* match the output of 'gcc -c' compiled with the same triple. # CHECK: Flags [ (0x52001004) +# NO-MM: Flags [ (0x50001004) .set micromips f: diff --git a/test/MC/Mips/elf_eflags_micromips2.s b/test/MC/Mips/elf_eflags_micromips2.s new file mode 100644 index 000000000000..d44cf7f37a72 --- /dev/null +++ b/test/MC/Mips/elf_eflags_micromips2.s @@ -0,0 +1,11 @@ +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o - \ +# RUN: | llvm-readobj -h | FileCheck %s + +# This *MUST* match the output of 'gcc -c' compiled with the same triple. +# The microMIPS flag is not set if no microMIPS code was emitted. +# CHECK: Flags [ (0x50001004) + + nop + .set micromips + .set nomicromips + nop diff --git a/test/MC/Mips/elf_st_other.s b/test/MC/Mips/elf_st_other.s index 579707b6be38..a53801729cdf 100644 --- a/test/MC/Mips/elf_st_other.s +++ b/test/MC/Mips/elf_st_other.s @@ -21,6 +21,6 @@ f2: // CHECK-LABEL: Name: d1 // CHECK: Other: 0 // CHECK-LABEL: Name: f1 -// CHECK: Other: 128 +// CHECK: Other [ (0x80) // CHECK-LABEL: Name: f2 // CHECK: Other: 0 diff --git a/test/MC/Mips/eva/invalid-noeva-wrong-error.s b/test/MC/Mips/eva/invalid-noeva-wrong-error.s index 77b25645fe20..4b725135ef14 100644 --- a/test/MC/Mips/eva/invalid-noeva-wrong-error.s +++ b/test/MC/Mips/eva/invalid-noeva-wrong-error.s @@ -19,51 +19,51 @@ # RUN: FileCheck %s < %t1 .set noat - cachee 31, 255($7) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - cachee 0, -256($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - cachee 5, -140($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lbe $10,-256($25) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lbe $13,255($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lbe $11,146($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lbue $13,-256($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lbue $13,255($v0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lbue $13,-190($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lhe $13,-256($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lhe $12,255($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lhe $13,81($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lhue $s2,-256($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lhue $s2,255($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lhue $s6,-168($v0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lle $v0,-256($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lle $v1,255($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lle $v1,-71($s6) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwe $15,255($a2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwe $13,-256($a2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwe $15,-200($a1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s6,255($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s7,-256($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s7,-176($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,255($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,-256($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,-176($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - prefe 14, -256($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - prefe 11, 255($3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - prefe 14, -37($3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sbe $s1,255($11) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sbe $s1,-256($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sbe $s3,0($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sce $9,255($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sce $12,-256($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sce $13,-31($s7) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - she $14,255($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - she $14,-256($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - she $9,235($11) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swe $ra,255($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swe $ra,-256($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swe $ra,-53($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $9,255($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $10,-256($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $8,131($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s4,255($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s4,-256($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s2,86($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + cachee 31, 255($7) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + cachee 0, -256($4) # CHECK: :[[@LINE]]:22: error: expected memory with 9-bit signed offset + cachee 5, -140($4) # CHECK: :[[@LINE]]:22: error: expected memory with 9-bit signed offset + lbe $10,-256($25) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lbe $13,255($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lbe $11,146($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lbue $13,-256($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lbue $13,255($v0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lbue $13,-190($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhe $13,-256($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhe $12,255($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhe $13,81($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhue $s2,-256($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhue $s2,255($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhue $s6,-168($v0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lle $v0,-256($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lle $v1,255($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lle $v1,-71($s6) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwe $15,255($a2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwe $13,-256($a2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwe $15,-200($a1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwle $s6,255($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwle $s7,-256($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwle $s7,-176($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,255($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,-256($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,-176($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + prefe 14, -256($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + prefe 11, 255($3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + prefe 14, -37($3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sbe $s1,255($11) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sbe $s1,-256($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sbe $s3,0($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sce $9,255($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sce $12,-256($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sce $13,-31($s7) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + she $14,255($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + she $14,-256($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + she $9,235($11) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swe $ra,255($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swe $ra,-256($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swe $ra,-53($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $9,255($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $10,-256($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $8,131($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s4,255($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s4,-256($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s2,86($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset diff --git a/test/MC/Mips/eva/invalid.s b/test/MC/Mips/eva/invalid.s index 2ef4eaaab08d..406d940c8a92 100644 --- a/test/MC/Mips/eva/invalid.s +++ b/test/MC/Mips/eva/invalid.s @@ -9,3 +9,27 @@ cachee 32, 255($7) # CHECK: :[[@LINE]]:12: error: expected 5-bit unsigned immediate prefe -1, 255($7) # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate prefe 32, 255($7) # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + lle $33, 8($5) # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + lle $4, 8($33) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + lle $4, 512($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + lle $4, -513($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + lwe $33, 8($5) # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + lwe $4, 8($33) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + lwe $4, 512($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + lwe $4, -513($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + sbe $33, 8($5) # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + sbe $4, 8($33) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + sbe $4, 512($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + sbe $4, -513($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + sce $33, 8($5) # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + sce $4, 8($33) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + sce $4, 512($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + sce $4, -513($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + she $33, 8($5) # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + she $4, 8($33) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + she $4, 512($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + she $4, -513($5) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + swe $33, 8($4) # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + swe $5, 8($34) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + swe $5, 512($4) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + swe $5, -513($4) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset diff --git a/test/MC/Mips/eva/invalid_R6.s b/test/MC/Mips/eva/invalid_R6.s index 81c322845a63..b3242e6ffd72 100644 --- a/test/MC/Mips/eva/invalid_R6.s +++ b/test/MC/Mips/eva/invalid_R6.s @@ -6,15 +6,39 @@ # RUN: FileCheck %s < %t1 .set noat - lwle $s6,255($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s7,-256($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s7,-176($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,255($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,-256($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,-176($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $9,255($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $10,-256($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $8,131($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s4,255($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s4,-256($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s2,86($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lwle $s6,255($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwle $s7,-256($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwle $s7,-176($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,255($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,-256($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,-176($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $9,255($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $10,-256($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $8,131($s5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s4,255($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s4,-256($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s2,86($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lle $33, 8($5) # CHECK: :[[@LINE]]:19: error: invalid operand for instruction + lle $4, 8($33) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + lle $4, 512($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + lle $4, -513($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + lwe $33, 8($5) # CHECK: :[[@LINE]]:19: error: invalid operand for instruction + lwe $4, 8($33) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + lwe $4, 512($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + lwe $4, -513($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + sbe $33, 8($5) # CHECK: :[[@LINE]]:19: error: invalid operand for instruction + sbe $4, 8($33) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + sbe $4, 512($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + sbe $4, -513($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + sce $33, 8($5) # CHECK: :[[@LINE]]:19: error: invalid operand for instruction + sce $4, 8($33) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + sce $4, 512($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + sce $4, -513($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + she $33, 8($5) # CHECK: :[[@LINE]]:19: error: invalid operand for instruction + she $4, 8($33) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + she $4, 512($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + she $4, -513($5) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + swe $33, 8($4) # CHECK: :[[@LINE]]:19: error: invalid operand for instruction + swe $5, 8($34) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + swe $5, 512($4) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset + swe $5, -513($4) # CHECK: :[[@LINE]]:23: error: expected memory with 9-bit signed offset diff --git a/test/MC/Mips/expansion-jal-sym-pic.s b/test/MC/Mips/expansion-jal-sym-pic.s index 23a4396276f7..f2ceca0f6726 100644 --- a/test/MC/Mips/expansion-jal-sym-pic.s +++ b/test/MC/Mips/expansion-jal-sym-pic.s @@ -1,20 +1,20 @@ # RUN: llvm-mc %s -arch=mips -mcpu=mips32 -show-encoding |\ -# RUN: FileCheck %s -check-prefix=ALL -check-prefix=NORMAL -check-prefix=O32 +# RUN: FileCheck %s -check-prefixes=ALL,NORMAL,O32 # RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 -show-encoding |\ -# RUN: FileCheck %s -check-prefix=ALL -check-prefix=NORMAL -check-prefix=N32 +# RUN: FileCheck %s -check-prefixes=ALL,NORMAL,N32 # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 -show-encoding |\ -# RUN: FileCheck %s -check-prefix=ALL -check-prefix=NORMAL -check-prefix=N64 +# RUN: FileCheck %s -check-prefixes=ALL,NORMAL,N64 # RUN: llvm-mc %s -arch=mips -mcpu=mips32 -mattr=micromips -show-encoding |\ -# RUN: FileCheck %s -check-prefix=ALL -check-prefix=MICROMIPS -check-prefix=O32-MICROMIPS +# RUN: FileCheck %s -check-prefixes=ALL,MICROMIPS,O32-MICROMIPS # RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 -mattr=micromips -show-encoding |\ -# RUN: FileCheck %s -check-prefix=ALL -check-prefix=MICROMIPS -check-prefix=N32-MICROMIPS +# RUN: FileCheck %s -check-prefixes=ALL,MICROMIPS,N32-MICROMIPS # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 -mattr=micromips -show-encoding |\ -# RUN: FileCheck %s -check-prefix=ALL -check-prefix=MICROMIPS -check-prefix=N64-MICROMIPS +# RUN: FileCheck %s -check-prefixes=ALL,MICROMIPS,N64-MICROMIPS .weak weak_label @@ -51,26 +51,26 @@ local_label: # Expanding "jal local_label": # O32: lw $25, %got(local_label)($gp) # encoding: [0x8f,0x99,A,A] -# O32: # fixup A - offset: 0, value: local_label@GOT, kind: fixup_Mips_GOT_Local +# O32: # fixup A - offset: 0, value: %got(local_label), kind: fixup_Mips_GOT # O32: addiu $25, $25, %lo(local_label) # encoding: [0x27,0x39,A,A] -# O32: # fixup A - offset: 0, value: local_label@ABS_LO, kind: fixup_Mips_LO16 +# O32: # fixup A - offset: 0, value: %lo(local_label), kind: fixup_Mips_LO16 # N32: lw $25, %got_disp(local_label)($gp) # encoding: [0x8f,0x99,A,A] -# N32: # fixup A - offset: 0, value: local_label@GOT_DISP, kind: fixup_Mips_GOT_DISP +# N32: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP # N64: ld $25, %got_disp(local_label)($gp) # encoding: [0xdf,0x99,A,A] -# N64: # fixup A - offset: 0, value: local_label@GOT_DISP, kind: fixup_Mips_GOT_DISP +# N64: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_Mips_GOT_DISP # O32-MICROMIPS: lw $25, %got(local_label)($gp) # encoding: [0xff,0x3c,A,A] -# O32-MICROMIPS: # fixup A - offset: 0, value: local_label@GOT, kind: fixup_MICROMIPS_GOT16 +# O32-MICROMIPS: # fixup A - offset: 0, value: %got(local_label), kind: fixup_MICROMIPS_GOT16 # O32-MICROMIPS: addiu $25, $25, %lo(local_label) # encoding: [0x33,0x39,A,A] -# O32-MICROMIPS: # fixup A - offset: 0, value: local_label@ABS_LO, kind: fixup_MICROMIPS_LO16 +# O32-MICROMIPS: # fixup A - offset: 0, value: %lo(local_label), kind: fixup_MICROMIPS_LO16 # N32-MICROMIPS: lw $25, %got_disp(local_label)($gp) # encoding: [0xff,0x3c,A,A] -# N32-MICROMIPS: # fixup A - offset: 0, value: local_label@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP +# N32-MICROMIPS: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_MICROMIPS_GOT_DISP # N64-MICROMIPS: ld $25, %got_disp(local_label)($gp) # encoding: [0xdf,0x99,A,A] -# N64-MICROMIPS: # fixup A - offset: 0, value: local_label@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP +# N64-MICROMIPS: # fixup A - offset: 0, value: %got_disp(local_label), kind: fixup_MICROMIPS_GOT_DISP # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c] @@ -79,22 +79,22 @@ local_label: # Expanding "jal weak_label": # O32: lw $25, %call16(weak_label)($gp) # encoding: [0x8f,0x99,A,A] -# O32: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_Mips_CALL16 +# O32: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_Mips_CALL16 # N32: lw $25, %call16(weak_label)($gp) # encoding: [0x8f,0x99,A,A] -# N32: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_Mips_CALL16 +# N32: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_Mips_CALL16 # N64: ld $25, %call16(weak_label)($gp) # encoding: [0xdf,0x99,A,A] -# N64: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_Mips_CALL16 +# N64: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_Mips_CALL16 # O32-MICROMIPS: lw $25, %call16(weak_label)($gp) # encoding: [0xff,0x3c,A,A] -# O32-MICROMIPS: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16 +# O32-MICROMIPS: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_MICROMIPS_CALL16 # N32-MICROMIPS: lw $25, %call16(weak_label)($gp) # encoding: [0xff,0x3c,A,A] -# N32-MICROMIPS: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16 +# N32-MICROMIPS: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_MICROMIPS_CALL16 # N64-MICROMIPS: ld $25, %call16(weak_label)($gp) # encoding: [0xdf,0x99,A,A] -# N64-MICROMIPS: # fixup A - offset: 0, value: weak_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16 +# N64-MICROMIPS: # fixup A - offset: 0, value: %call16(weak_label), kind: fixup_MICROMIPS_CALL16 # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c] @@ -103,22 +103,22 @@ local_label: # Expanding "jal global_label": # O32: lw $25, %call16(global_label)($gp) # encoding: [0x8f,0x99,A,A] -# O32: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_Mips_CALL16 +# O32: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_Mips_CALL16 # N32: lw $25, %call16(global_label)($gp) # encoding: [0x8f,0x99,A,A] -# N32: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_Mips_CALL16 +# N32: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_Mips_CALL16 # N64: ld $25, %call16(global_label)($gp) # encoding: [0xdf,0x99,A,A] -# N64: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_Mips_CALL16 +# N64: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_Mips_CALL16 # O32-MICROMIPS: lw $25, %call16(global_label)($gp) # encoding: [0xff,0x3c,A,A] -# O32-MICROMIPS: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16 +# O32-MICROMIPS: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_MICROMIPS_CALL16 # N32-MICROMIPS: lw $25, %call16(global_label)($gp) # encoding: [0xff,0x3c,A,A] -# N32-MICROMIPS: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16 +# N32-MICROMIPS: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_MICROMIPS_CALL16 # N64-MICROMIPS: ld $25, %call16(global_label)($gp) # encoding: [0xdf,0x99,A,A] -# N64-MICROMIPS: # fixup A - offset: 0, value: global_label@GOT_CALL, kind: fixup_MICROMIPS_CALL16 +# N64-MICROMIPS: # fixup A - offset: 0, value: %call16(global_label), kind: fixup_MICROMIPS_CALL16 # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c] @@ -129,26 +129,26 @@ local_label: # it is created when generating an ELF object file. # Expanding "jal .text": # O32-FIXME: lw $25, %got(.text)($gp) # encoding: [0x8f,0x99,A,A] -# O32-FIXME: # fixup A - offset: 0, value: .text@GOT, kind: fixup_Mips_GOT_Local +# O32-FIXME: # fixup A - offset: 0, value: %got(.text), kind: fixup_Mips_GOT # O32-FIXME: addiu $25, $25, %lo(.text) # encoding: [0x27,0x39,A,A] -# O32-FIXME: # fixup A - offset: 0, value: .text@ABS_LO, kind: fixup_Mips_LO16 +# O32-FIXME: # fixup A - offset: 0, value: %lo(.text), kind: fixup_Mips_LO16 # N32-FIXME: lw $25, %got_disp(.text)($gp) # encoding: [0x8f,0x99,A,A] -# N32-FIXME: # fixup A - offset: 0, value: .text@GOT_DISP, kind: fixup_Mips_GOT_DISP +# N32-FIXME: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP # N64-FIXME: ld $25, %got_disp(.text)($gp) # encoding: [0xdf,0x99,A,A] -# N64-FIXME: # fixup A - offset: 0, value: .text@GOT_DISP, kind: fixup_Mips_GOT_DISP +# N64-FIXME: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_Mips_GOT_DISP # O32-MICROMIPS-FIXME: lw $25, %got(.text)($gp) # encoding: [0xff,0x3c,A,A] -# O32-MICROMIPS-FIXME: # fixup A - offset: 0, value: .text@GOT, kind: fixup_MICROMIPS_GOT16 +# O32-MICROMIPS-FIXME: # fixup A - offset: 0, value: %got(.text), kind: fixup_MICROMIPS_GOT16 # O32-MICROMIPS-FIXME: addiu $25, $25, %lo(.text) # encoding: [0x33,0x39,A,A] -# O32-MICROMIPS-FIXME: # fixup A - offset: 0, value: .text@ABS_LO, kind: fixup_MICROMIPS_LO16 +# O32-MICROMIPS-FIXME: # fixup A - offset: 0, value: %lo(.text), kind: fixup_MICROMIPS_LO16 # N32-MICROMIPS-FIXME: lw $25, %got_disp(.text)($gp) # encoding: [0xff,0x3c,A,A] -# N32-MICROMIPS-FIXME: # fixup A - offset: 0, value: .text@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP +# N32-MICROMIPS-FIXME: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_MICROMIPS_GOT_DISP # N64-MICROMIPS-FIXME: ld $25, %got_disp(.text)($gp) # encoding: [0xdf,0x99,A,A] -# N64-MICROMIPS-FIXME: # fixup A - offset: 0, value: .text@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP +# N64-MICROMIPS-FIXME: # fixup A - offset: 0, value: %got_disp(.text), kind: fixup_MICROMIPS_GOT_DISP # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c] @@ -157,26 +157,26 @@ local_label: # Expanding "jal 1f": # O32: lw $25, %got($tmp0)($gp) # encoding: [0x8f,0x99,A,A] -# O32: # fixup A - offset: 0, value: ($tmp0)@GOT, kind: fixup_Mips_GOT_Local +# O32: # fixup A - offset: 0, value: %got($tmp0), kind: fixup_Mips_GOT # O32: addiu $25, $25, %lo($tmp0) # encoding: [0x27,0x39,A,A] -# O32: # fixup A - offset: 0, value: ($tmp0)@ABS_LO, kind: fixup_Mips_LO16 +# O32: # fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16 # N32: lw $25, %got_disp($tmp0)($gp) # encoding: [0x8f,0x99,A,A] -# N32: # fixup A - offset: 0, value: ($tmp0)@GOT_DISP, kind: fixup_Mips_GOT_DISP +# N32: # fixup A - offset: 0, value: %got_disp($tmp0), kind: fixup_Mips_GOT_DISP # N64: ld $25, %got_disp($tmp0)($gp) # encoding: [0xdf,0x99,A,A] -# N64: # fixup A - offset: 0, value: ($tmp0)@GOT_DISP, kind: fixup_Mips_GOT_DISP +# N64: # fixup A - offset: 0, value: %got_disp($tmp0), kind: fixup_Mips_GOT_DISP # O32-MICROMIPS: lw $25, %got($tmp0)($gp) # encoding: [0xff,0x3c,A,A] -# O32-MICROMIPS: # fixup A - offset: 0, value: ($tmp0)@GOT, kind: fixup_MICROMIPS_GOT16 +# O32-MICROMIPS: # fixup A - offset: 0, value: %got($tmp0), kind: fixup_MICROMIPS_GOT16 # O32-MICROMIPS: addiu $25, $25, %lo($tmp0) # encoding: [0x33,0x39,A,A] -# O32-MICROMIPS: # fixup A - offset: 0, value: ($tmp0)@ABS_LO, kind: fixup_MICROMIPS_LO16 +# O32-MICROMIPS: # fixup A - offset: 0, value: %lo($tmp0), kind: fixup_MICROMIPS_LO16 # N32-MICROMIPS: lw $25, %got_disp($tmp0)($gp) # encoding: [0xff,0x3c,A,A] -# N32-MICROMIPS: # fixup A - offset: 0, value: ($tmp0)@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP +# N32-MICROMIPS: # fixup A - offset: 0, value: %got_disp($tmp0), kind: fixup_MICROMIPS_GOT_DISP # N64-MICROMIPS: ld $25, %got_disp($tmp0)($gp) # encoding: [0xdf,0x99,A,A] -# N64-MICROMIPS: # fixup A - offset: 0, value: ($tmp0)@GOT_DISP, kind: fixup_MICROMIPS_GOT_DISP +# N64-MICROMIPS: # fixup A - offset: 0, value: %got_disp($tmp0), kind: fixup_MICROMIPS_GOT_DISP # NORMAL: jalr $25 # encoding: [0x03,0x20,0xf8,0x09] # MICROMIPS: jalr $ra, $25 # encoding: [0x03,0xf9,0x0f,0x3c] diff --git a/test/MC/Mips/expr1.s b/test/MC/Mips/expr1.s index 4af61636355f..a6ecff5d212c 100644 --- a/test/MC/Mips/expr1.s +++ b/test/MC/Mips/expr1.s @@ -8,38 +8,38 @@ # 32R2-EL: .globl foo # 32R2-EL: foo: # 32R2-EL: lw $4, %lo(foo)($4) # encoding: [A,A,0x84,0x8c] -# 32R2-EL: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16 +# 32R2-EL: # fixup A - offset: 0, value: %lo(foo), kind: fixup_Mips_LO16 # 32R2-EL: lw $4, 56($4) # encoding: [0x38,0x00,0x84,0x8c] -# 32R2-EL: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c] -# 32R2-EL: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16 -# 32R2-EL: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c] -# 32R2-EL: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16 -# 32R2-EL: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c] -# 32R2-EL: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16 +# 32R2-EL: lw $4, %lo(8+foo)($4) # encoding: [A,A,0x84,0x8c] +# 32R2-EL: # fixup A - offset: 0, value: %lo(8+foo), kind: fixup_Mips_LO16 +# 32R2-EL: lw $4, %lo(8+foo)($4) # encoding: [A,A,0x84,0x8c] +# 32R2-EL: # fixup A - offset: 0, value: %lo(8+foo), kind: fixup_Mips_LO16 +# 32R2-EL: lw $4, %lo(8+foo)($4) # encoding: [A,A,0x84,0x8c] +# 32R2-EL: # fixup A - offset: 0, value: %lo(8+foo), kind: fixup_Mips_LO16 # 32R2-EL: lw $4, 10($4) # encoding: [0x0a,0x00,0x84,0x8c] # 32R2-EL: lw $4, 15($4) # encoding: [0x0f,0x00,0x84,0x8c] # 32R2-EL: lw $4, 21($4) # encoding: [0x15,0x00,0x84,0x8c] # 32R2-EL: lw $4, 28($4) # encoding: [0x1c,0x00,0x84,0x8c] -# 32R2-EL: lw $4, 6($4) # encoding: [0x06,0x00,0x84,0x8c] +# 32R2-EL: lw $4, %lo(65542)($4) # encoding: [0x06,0x00,0x84,0x8c] # 32R2-EL: .space 64 # MM-32R2-EL: .text # MM-32R2-EL: .globl foo # MM-32R2-EL: foo: -# MM-32R2-EL: lw $4, %lo(foo)($4) # encoding: [0x84'A',0xfc'A',0x00,0x00] -# MM-32R2-EL: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_MICROMIPS_LO16 -# MM-32R2-EL: lw $4, 56($4) # encoding: [0x84,0xfc,0x38,0x00] -# MM-32R2-EL: lw $4, %lo(foo+8)($4) # encoding: [0x84'A',0xfc'A',0x08,0x00] -# MM-32R2-EL: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_MICROMIPS_LO16 -# MM-32R2-EL: lw $4, %lo(foo+8)($4) # encoding: [0x84'A',0xfc'A',0x08,0x00] -# MM-32R2-EL: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_MICROMIPS_LO16 -# MM-32R2-EL: lw $4, %lo(foo+8)($4) # encoding: [0x84'A',0xfc'A',0x08,0x00] -# MM-32R2-EL: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_MICROMIPS_LO16 -# MM-32R2-EL: lw $4, 10($4) # encoding: [0x84,0xfc,0x0a,0x00] -# MM-32R2-EL: lw $4, 15($4) # encoding: [0x84,0xfc,0x0f,0x00] -# MM-32R2-EL: lw $4, 21($4) # encoding: [0x84,0xfc,0x15,0x00] -# MM-32R2-EL: lw $4, 28($4) # encoding: [0x84,0xfc,0x1c,0x00] -# MM-32R2-EL: lw $4, 6($4) # encoding: [0x84,0xfc,0x06,0x00] +# MM-32R2-EL: lw $4, %lo(foo)($4) # encoding: [0x84'A',0xfc'A',0x00,0x00] +# MM-32R2-EL: # fixup A - offset: 0, value: %lo(foo), kind: fixup_MICROMIPS_LO16 +# MM-32R2-EL: lw $4, 56($4) # encoding: [0x84,0xfc,0x38,0x00] +# MM-32R2-EL: lw $4, %lo(8+foo)($4) # encoding: [0x84'A',0xfc'A',0x00,0x00] +# MM-32R2-EL: # fixup A - offset: 0, value: %lo(8+foo), kind: fixup_MICROMIPS_LO16 +# MM-32R2-EL: lw $4, %lo(8+foo)($4) # encoding: [0x84'A',0xfc'A',0x00,0x00] +# MM-32R2-EL: # fixup A - offset: 0, value: %lo(8+foo), kind: fixup_MICROMIPS_LO16 +# MM-32R2-EL: lw $4, %lo(8+foo)($4) # encoding: [0x84'A',0xfc'A',0x00,0x00] +# MM-32R2-EL: # fixup A - offset: 0, value: %lo(8+foo), kind: fixup_MICROMIPS_LO16 +# MM-32R2-EL: lw $4, 10($4) # encoding: [0x84,0xfc,0x0a,0x00] +# MM-32R2-EL: lw $4, 15($4) # encoding: [0x84,0xfc,0x0f,0x00] +# MM-32R2-EL: lw $4, 21($4) # encoding: [0x84,0xfc,0x15,0x00] +# MM-32R2-EL: lw $4, 28($4) # encoding: [0x84,0xfc,0x1c,0x00] +# MM-32R2-EL: lw $4, %lo(65542)($4) # encoding: [0x84,0xfc,0x06,0x00] # MM-32R2-EL: .space 64 .globl foo diff --git a/test/MC/Mips/got-rel-expr.s b/test/MC/Mips/got-rel-expr.s new file mode 100644 index 000000000000..8e77658c24ad --- /dev/null +++ b/test/MC/Mips/got-rel-expr.s @@ -0,0 +1,20 @@ +# Check that llvm-mc accepts arithmetic expression +# as an argument of the %got relocation. + +# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s \ +# RUN: | llvm-objdump -d -r - | FileCheck %s + + .text +foo: + lw $t0,%got($loc+0x10004)($gp) +# CHECK: 0: 8f 88 00 01 lw $8, 1($gp) +# CHECK: 00000000: R_MIPS_GOT16 .data + addi $t0,$t0,%lo($loc+0x10004) +# CHECK: 4: 21 08 00 04 addi $8, $8, 4 +# CHECK: 00000004: R_MIPS_LO16 .data + + .data +$loc: + .word 0 + .space 0x10000 + .word 0 diff --git a/test/MC/Mips/hex-immediates.s b/test/MC/Mips/hex-immediates.s new file mode 100644 index 000000000000..7bf6f71266e5 --- /dev/null +++ b/test/MC/Mips/hex-immediates.s @@ -0,0 +1,11 @@ +# RUN: llvm-mc -filetype=obj %s -triple=mips-unknown-linux \ +# RUN: | llvm-objdump -d --print-imm-hex - | FileCheck %s + +# CHECK: jal 0x20 +# CHECK: addiu $sp, $sp, -0x20 +# CHECK: sw $2, 0x10($fp) + +jal 32 +addiu $sp, $sp, -32 +sw $2, 16($fp) +lui $2, 2 diff --git a/test/MC/Mips/higher-highest-addressing.s b/test/MC/Mips/higher-highest-addressing.s index 2973a6400ae2..790b0a06892d 100644 --- a/test/MC/Mips/higher-highest-addressing.s +++ b/test/MC/Mips/higher-highest-addressing.s @@ -1,8 +1,8 @@ # RUN: llvm-mc -filetype=obj -triple=mips64el-unknown-linux -mcpu=mips64r2 %s \ -# RUN: | llvm-objdump -disassemble -triple mips64el - | FileCheck %s +# RUN: | llvm-objdump -disassemble - | FileCheck %s # RUN: llvm-mc -filetype=obj -triple=mips64el-unknown-linux -mcpu=mips64r2 %s \ -# RUN: | llvm-readobj -r | FileCheck %s -check-prefix=CHECK-REL +# RUN: | llvm-readobj -r | FileCheck %s -check-prefix=CHECK-REL # Test that R_MIPS_HIGHER and R_MIPS_HIGHEST relocations are created. By using diff --git a/test/MC/Mips/init-order-bug.ll b/test/MC/Mips/init-order-bug.ll new file mode 100644 index 000000000000..5e9726247870 --- /dev/null +++ b/test/MC/Mips/init-order-bug.ll @@ -0,0 +1,12 @@ +; RUN: llc -mtriple=mipsel-linux-gnu -relocation-model=pic -filetype=asm < %s | \ +; RUN: llvm-mc -triple=mipsel-linux-gnu --position-independent -filetype=obj | \ +; RUN: llvm-objdump -d - | FileCheck %s +; RUN: llc -mtriple=mipsel-linux-gnu -relocation-model=pic -filetype=obj < %s | \ +; RUN: llvm-objdump -d - | FileCheck %s + +define void @foo() { + call void asm sideeffect "\09.cprestore 512", "~{$1}"() + ret void +} + +; CHECK: sw $gp, 512($sp) diff --git a/test/MC/Mips/insn-directive.s b/test/MC/Mips/insn-directive.s index 760a27399bfb..f8cc1d6812d8 100644 --- a/test/MC/Mips/insn-directive.s +++ b/test/MC/Mips/insn-directive.s @@ -73,10 +73,10 @@ bar: # OBJ: Other: 0 # OBJ: Name: f_mm_insn_data -# OBJ: Other: 128 +# OBJ: Other [ (0x80) # OBJ: Name: f_mm_insn_instr -# OBJ: Other: 128 +# OBJ: Other [ (0x80) # OBJ: Name: f_normal_insn_data # OBJ: Other: 0 @@ -85,10 +85,10 @@ bar: # OBJ: Other: 0 # OBJ: Name: o_mm_insn_data -# OBJ: Other: 128 +# OBJ: Other [ (0x80) # OBJ: Name: o_mm_insn_instr -# OBJ: Other: 128 +# OBJ: Other [ (0x80) # OBJ: Name: o_normal_insn_data # OBJ: Other: 0 diff --git a/test/MC/Mips/instalias-imm-expanding.s b/test/MC/Mips/instalias-imm-expanding.s index b3667ef8bf81..9759dabdc087 100644 --- a/test/MC/Mips/instalias-imm-expanding.s +++ b/test/MC/Mips/instalias-imm-expanding.s @@ -22,8 +22,7 @@ text_label: # CHECK: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c] # CHECK: add $4, $4, $1 # encoding: [0x20,0x20,0x81,0x00] add $4, 0xFFFFFFFF -# CHECK: addiu $1, $zero, -1 # encoding: [0xff,0xff,0x01,0x24] -# CHECK: add $4, $4, $1 # encoding: [0x20,0x20,0x81,0x00] +# CHECK: addi $4, $4, -1 # encoding: [0xff,0xff,0x84,0x20] add $4, $5, -0x80000000 # CHECK: lui $4, 32768 # encoding: [0x00,0x80,0x04,0x3c] @@ -43,8 +42,7 @@ text_label: # CHECK: lui $4, 1 # encoding: [0x01,0x00,0x04,0x3c] # CHECK: add $4, $4, $5 # encoding: [0x20,0x20,0x85,0x00] add $4, $5, 0xFFFFFFFF -# CHECK: addiu $4, $zero, -1 # encoding: [0xff,0xff,0x04,0x24] -# CHECK: add $4, $4, $5 # encoding: [0x20,0x20,0x85,0x00] +# CHECK: addi $4, $5, -1 # encoding: [0xff,0xff,0xa4,0x20] addu $4, -0x80000000 # CHECK: lui $1, 32768 # encoding: [0x00,0x80,0x01,0x3c] @@ -64,8 +62,7 @@ text_label: # CHECK: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c] # CHECK: addu $4, $4, $1 # encoding: [0x21,0x20,0x81,0x00] addu $4, 0xFFFFFFFF -# CHECK: addiu $1, $zero, -1 # encoding: [0xff,0xff,0x01,0x24] -# CHECK: addu $4, $4, $1 # encoding: [0x21,0x20,0x81,0x00] +# CHECK: addiu $4, $4, -1 # encoding: [0xff,0xff,0x84,0x24] addu $4, $5, -0x80000000 # CHECK: lui $4, 32768 # encoding: [0x00,0x80,0x04,0x3c] @@ -85,8 +82,7 @@ text_label: # CHECK: lui $4, 1 # encoding: [0x01,0x00,0x04,0x3c] # CHECK: addu $4, $4, $5 # encoding: [0x21,0x20,0x85,0x00] addu $4, $5, 0xFFFFFFFF -# CHECK: addiu $4, $zero, -1 # encoding: [0xff,0xff,0x04,0x24] -# CHECK: addu $4, $4, $5 # encoding: [0x21,0x20,0x85,0x00] +# CHECK: addiu $4, $5, -1 # encoding: [0xff,0xff,0xa4,0x24] and $4, -0x80000000 # CHECK: lui $1, 32768 # encoding: [0x00,0x80,0x01,0x3c] @@ -208,8 +204,7 @@ text_label: # CHECK: lui $4, 1 # encoding: [0x01,0x00,0x04,0x3c] # CHECK: slt $4, $4, $5 # encoding: [0x2a,0x20,0x85,0x00] slt $4, $5, 0xFFFFFFFF -# CHECK: addiu $4, $zero, -1 # encoding: [0xff,0xff,0x04,0x24] -# CHECK: slt $4, $4, $5 # encoding: [0x2a,0x20,0x85,0x00] +# CHECK: slti $4, $5, -1 # encoding: [0xff,0xff,0xa4,0x28] sltu $4, $5, -0x80000000 # CHECK: lui $4, 32768 # encoding: [0x00,0x80,0x04,0x3c] @@ -228,8 +223,7 @@ text_label: # CHECK: lui $4, 1 # encoding: [0x01,0x00,0x04,0x3c] # CHECK: sltu $4, $4, $5 # encoding: [0x2b,0x20,0x85,0x00] sltu $4, $5, 0xFFFFFFFF -# CHECK: addiu $4, $zero, -1 # encoding: [0xff,0xff,0x04,0x24] -# CHECK: sltu $4, $4, $5 # encoding: [0x2b,0x20,0x85,0x00] +# CHECK: sltiu $4, $5, -1 # encoding: [0xff,0xff,0xa4,0x2c] xor $4, -0x80000000 # CHECK: lui $1, 32768 # encoding: [0x00,0x80,0x01,0x3c] diff --git a/test/MC/Mips/instr-analysis.s b/test/MC/Mips/instr-analysis.s new file mode 100644 index 000000000000..58abfd0f4723 --- /dev/null +++ b/test/MC/Mips/instr-analysis.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o - \ +# RUN: | llvm-objdump -d - | FileCheck %s + +# CHECK: foo: +# CHECK-NEXT: 0: 0c 00 00 02 jal 8 <loc1> +# CHECK-NEXT: 4: 00 00 00 00 nop +# +# CHECK: loc1: +# CHECK-NEXT: 8: 0c 00 00 06 jal 24 <loc3> +# CHECK-NEXT: c: 00 00 00 00 nop +# +# CHECK: loc2: +# CHECK-NEXT: 10: 10 00 ff fd b -8 <loc1> +# CHECK-NEXT: 14: 00 00 00 00 nop +# +# CHECK: loc3: +# CHECK-NEXT: 18: 10 43 ff fd beq $2, $3, -8 <loc2> +# CHECK-NEXT: 1c: 00 00 00 00 nop +# CHECK-NEXT: 20: 04 11 ff f9 bal -24 <loc1> +# CHECK-NEXT: 24: 00 00 00 00 nop +# CHECK-NEXT: 28: 08 00 00 04 j 16 <loc2> + + .text + .globl foo + .ent foo +foo: + jal loc1 +loc1: + jal loc3 +loc2: + b loc1 +loc3: + beq $2, $3, loc2 + bal loc1 + j loc2 + .end foo diff --git a/test/MC/Mips/macro-abs.s b/test/MC/Mips/macro-abs.s new file mode 100644 index 000000000000..2fa7b48901cd --- /dev/null +++ b/test/MC/Mips/macro-abs.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc -triple mips-unknown-linux -show-encoding %s | FileCheck %s + +.text +# CHECK: .text + abs $4, $4 +# CHECK: bgez $4, 8 # encoding: [0x04,0x81,0x00,0x02] +# CHECK: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK: neg $4, $4 # encoding: [0x00,0x04,0x20,0x22] + abs $4, $5 +# CHECK: bgez $5, 8 # encoding: [0x04,0xa1,0x00,0x02] +# CHECK: move $4, $5 # encoding: [0x00,0xa0,0x20,0x21] +# CHECK: neg $4, $5 # encoding: [0x00,0x05,0x20,0x22] diff --git a/test/MC/Mips/macro-ddiv-bad.s b/test/MC/Mips/macro-ddiv-bad.s index 350a0fbaeda6..1abcab66142f 100644 --- a/test/MC/Mips/macro-ddiv-bad.s +++ b/test/MC/Mips/macro-ddiv-bad.s @@ -1,18 +1,18 @@ # RUN: not llvm-mc %s -arch=mips -mcpu=mips32r6 2>&1 | \ -# RUN: FileCheck %s --check-prefix=R6 +# RUN: FileCheck %s --check-prefix=MIPS32-OR-R6 +# RUN: not llvm-mc %s -arch=mips -mcpu=mips32r2 2>&1 | \ +# RUN: FileCheck %s --check-prefix=MIPS32-OR-R6 # RUN: not llvm-mc %s -arch=mips64 -mcpu=mips64r6 2>&1 | \ -# RUN: FileCheck %s --check-prefix=R6 -# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 2>&1 | \ -# RUN: FileCheck %s --check-prefix=NOT-R6 +# RUN: FileCheck %s --check-prefix=MIPS32-OR-R6 # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 2>&1 | \ -# RUN: FileCheck %s --check-prefix=NOT-R6 +# RUN: FileCheck %s --check-prefix=MIPS64-NOT-R6 .text - ddiv $25, $11 - # R6: :[[@LINE-1]]:3: error: instruction not supported on mips32r6 or mips64r6 + ddivu $25, $11 + # MIPS32-OR-R6: :[[@LINE-1]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled - ddiv $25, $0 - # NOT-R6: :[[@LINE-1]]:3: warning: division by zero + ddivu $25, $0 + # MIPS64-NOT-R6: :[[@LINE-1]]:3: warning: division by zero - ddiv $0,$0 - # NOT-R6: :[[@LINE-1]]:3: warning: dividing zero by zero + ddivu $0,$0 + # MIPS64-NOT-R6: :[[@LINE-1]]:3: warning: dividing zero by zero diff --git a/test/MC/Mips/macro-ddiv.s b/test/MC/Mips/macro-ddiv.s index 99bc5450d015..d36e6998d603 100644 --- a/test/MC/Mips/macro-ddiv.s +++ b/test/MC/Mips/macro-ddiv.s @@ -48,6 +48,28 @@ ddiv $0,$0 # CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] + ddiv $4,$5,$6 +# CHECK-NOTRAP: bne $6, $zero, 8 # encoding: [0x14,0xc0,0x00,0x02] +# CHECK-NOTRAP: ddiv $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1e] +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] +# CHECK-NOTRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] +# CHECK-NOTRAP: bne $6, $1, 20 # encoding: [0x14,0xc1,0x00,0x05] +# CHECK-NOTRAP: addiu $1, $zero, 1 # encoding: [0x24,0x01,0x00,0x01] +# CHECK-NOTRAP: dsll32 $1, $1, 31 # encoding: [0x00,0x01,0x0f,0xfc] +# CHECK-NOTRAP: bne $5, $1, 8 # encoding: [0x14,0xa1,0x00,0x02] +# CHECK-NOTRAP: sll $zero, $zero, 0 # encoding: [0x00,0x00,0x00,0x00] +# CHECK-NOTRAP: break 6 # encoding: [0x00,0x06,0x00,0x0d] +# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + ddiv $4,$5,$0 +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] + + ddiv $4,$0,$0 +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] + + ddiv $0, $4, $5 +# CHECK-NOTRAP: ddiv $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1e] + ddiv $25,$11 # CHECK-TRAP: teq $11, $zero, 7 # encoding: [0x01,0x60,0x01,0xf4] # CHECK-TRAP: ddiv $zero, $25, $11 # encoding: [0x03,0x2b,0x00,0x1e] @@ -83,3 +105,22 @@ ddiv $0,$0 # CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] + + ddiv $4,$5,$6 +# CHECK-TRAP: teq $6, $zero, 7 # encoding: [0x00,0xc0,0x01,0xf4] +# CHECK-TRAP: ddiv $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1e] +# CHECK-TRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] +# CHECK-TRAP: bne $6, $1, 12 # encoding: [0x14,0xc1,0x00,0x03] +# CHECK-TRAP: addiu $1, $zero, 1 # encoding: [0x24,0x01,0x00,0x01] +# CHECK-TRAP: dsll32 $1, $1, 31 # encoding: [0x00,0x01,0x0f,0xfc] +# CHECK-TRAP: teq $5, $1, 6 # encoding: [0x00,0xa1,0x01,0xb4] +# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + ddiv $4,$5,$0 +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] + + ddiv $4,$0,$0 +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] + + ddiv $0, $4, $5 +# CHECK-TRAP: ddiv $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1e] diff --git a/test/MC/Mips/macro-ddivu-bad.s b/test/MC/Mips/macro-ddivu-bad.s index 7a6c7e0bd528..1abcab66142f 100644 --- a/test/MC/Mips/macro-ddivu-bad.s +++ b/test/MC/Mips/macro-ddivu-bad.s @@ -1,18 +1,18 @@ # RUN: not llvm-mc %s -arch=mips -mcpu=mips32r6 2>&1 | \ -# RUN: FileCheck %s --check-prefix=R6 +# RUN: FileCheck %s --check-prefix=MIPS32-OR-R6 +# RUN: not llvm-mc %s -arch=mips -mcpu=mips32r2 2>&1 | \ +# RUN: FileCheck %s --check-prefix=MIPS32-OR-R6 # RUN: not llvm-mc %s -arch=mips64 -mcpu=mips64r6 2>&1 | \ -# RUN: FileCheck %s --check-prefix=R6 -# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 2>&1 | \ -# RUN: FileCheck %s --check-prefix=NOT-R6 +# RUN: FileCheck %s --check-prefix=MIPS32-OR-R6 # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 2>&1 | \ -# RUN: FileCheck %s --check-prefix=NOT-R6 +# RUN: FileCheck %s --check-prefix=MIPS64-NOT-R6 .text ddivu $25, $11 - # R6: :[[@LINE-1]]:3: error: instruction not supported on mips32r6 or mips64r6 + # MIPS32-OR-R6: :[[@LINE-1]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled ddivu $25, $0 - # NOT-R6: :[[@LINE-1]]:3: warning: division by zero + # MIPS64-NOT-R6: :[[@LINE-1]]:3: warning: division by zero ddivu $0,$0 - # NOT-R6: :[[@LINE-1]]:3: warning: dividing zero by zero + # MIPS64-NOT-R6: :[[@LINE-1]]:3: warning: dividing zero by zero diff --git a/test/MC/Mips/macro-ddivu.s b/test/MC/Mips/macro-ddivu.s index 72d923802785..ff7e8c46d0be 100644 --- a/test/MC/Mips/macro-ddivu.s +++ b/test/MC/Mips/macro-ddivu.s @@ -33,6 +33,27 @@ # CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] # CHECK-NOTRAP: mflo $zero # encoding: [0x00,0x00,0x00,0x12] + ddivu $4,$5,$6 +# CHECK-NOTRAP: bne $6, $zero, 8 # encoding: [0x14,0xc0,0x00,0x02] +# CHECK-NOTRAP: ddivu $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1f] +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] +# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + ddivu $4,$5,$0 +# CHECK-NOTRAP: bne $zero, $zero, 8 # encoding: [0x14,0x00,0x00,0x02] +# CHECK-NOTRAP: ddivu $zero, $5, $zero # encoding: [0x00,0xa0,0x00,0x1f] +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] +# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + ddivu $4,$0,$0 +# CHECK-NOTRAP: bne $zero, $zero, 8 # encoding: [0x14,0x00,0x00,0x02] +# CHECK-NOTRAP: ddivu $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1f] +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] +# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + ddivu $0, $4, $5 +# CHECK-NOTRAP: ddivu $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1f] + ddivu $25, $11 # CHECK-TRAP: teq $11, $zero, 7 # encoding: [0x01,0x60,0x01,0xf4] # CHECK-TRAP: ddivu $zero, $25, $11 # encoding: [0x03,0x2b,0x00,0x1f] @@ -57,3 +78,21 @@ # CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] # CHECK-TRAP: ddivu $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1f] # CHECK-TRAP: mflo $zero # encoding: [0x00,0x00,0x00,0x12] + + ddivu $4,$5,$6 +# CHECK-TRAP: teq $6, $zero, 7 # encoding: [0x00,0xc0,0x01,0xf4] +# CHECK-TRAP: ddivu $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1f] +# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + ddivu $4,$5,$0 +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] +# CHECK-TRAP: ddivu $zero, $5, $zero # encoding: [0x00,0xa0,0x00,0x1f] +# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + ddivu $4,$0,$0 +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] +# CHECK-TRAP: ddivu $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1f] +# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + ddivu $0, $4, $5 +# CHECK-TRAP: ddivu $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1f] diff --git a/test/MC/Mips/macro-div-bad.s b/test/MC/Mips/macro-div-bad.s index 086e8b441885..20ad39087a14 100644 --- a/test/MC/Mips/macro-div-bad.s +++ b/test/MC/Mips/macro-div-bad.s @@ -9,7 +9,7 @@ .text div $25, $11 - # R6: :[[@LINE-1]]:3: error: instruction not supported on mips32r6 or mips64r6 + # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled div $25, $0 # NOT-R6: :[[@LINE-1]]:3: warning: division by zero diff --git a/test/MC/Mips/macro-div.s b/test/MC/Mips/macro-div.s index 9efd6e19db15..3ac763e17d7c 100644 --- a/test/MC/Mips/macro-div.s +++ b/test/MC/Mips/macro-div.s @@ -36,6 +36,27 @@ div $0,$0 # CHECK-NOTRAP: div $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1a] + div $4,$5,$6 +# CHECK-NOTRAP: bnez $6, 8 # encoding: [0x14,0xc0,0x00,0x02] +# CHECK-NOTRAP: div $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1a] +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] +# CHECK-NOTRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] +# CHECK-NOTRAP: bne $6, $1, 16 # encoding: [0x14,0xc1,0x00,0x04] +# CHECK-NOTRAP: lui $1, 32768 # encoding: [0x3c,0x01,0x80,0x00] +# CHECK-NOTRAP: bne $5, $1, 8 # encoding: [0x14,0xa1,0x00,0x02] +# CHECK-NOTRAP: nop # encoding: [0x00,0x00,0x00,0x00] +# CHECK-NOTRAP: break 6 # encoding: [0x00,0x06,0x00,0x0d] +# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + div $4,$5,$0 +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] + + div $4,$0,$0 +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] + + div $0, $4, $5 +# CHECK-NOTRAP: div $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1a] + div $25, $11 # CHECK-TRAP: teq $11, $zero, 7 # encoding: [0x01,0x60,0x01,0xf4] # CHECK-TRAP: div $zero, $25, $11 # encoding: [0x03,0x2b,0x00,0x1a] @@ -62,3 +83,21 @@ div $0,$0 # CHECK-TRAP: div $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1a] + + div $4,$5,$6 +# CHECK-TRAP: teq $6, $zero, 7 # encoding: [0x00,0xc0,0x01,0xf4] +# CHECK-TRAP: div $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1a] +# CHECK-TRAP: addiu $1, $zero, -1 # encoding: [0x24,0x01,0xff,0xff] +# CHECK-TRAP: bne $6, $1, 8 # encoding: [0x14,0xc1,0x00,0x02] +# CHECK-TRAP: lui $1, 32768 # encoding: [0x3c,0x01,0x80,0x00] +# CHECK-TRAP: teq $5, $1, 6 # encoding: [0x00,0xa1,0x01,0xb4] +# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + div $4,$5,$0 +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] + + div $4,$0,$0 +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] + + div $0, $4, $5 +# CHECK-TRAP: div $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1a]
\ No newline at end of file diff --git a/test/MC/Mips/macro-divu-bad.s b/test/MC/Mips/macro-divu-bad.s index 45cef1f81820..6eeaa614ff86 100644 --- a/test/MC/Mips/macro-divu-bad.s +++ b/test/MC/Mips/macro-divu-bad.s @@ -9,7 +9,7 @@ .text divu $25, $11 - # R6: :[[@LINE-1]]:3: error: instruction not supported on mips32r6 or mips64r6 + # R6: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled divu $25, $0 # NOT-R6: :[[@LINE-1]]:3: warning: division by zero diff --git a/test/MC/Mips/macro-divu.s b/test/MC/Mips/macro-divu.s index 95630d34bd16..d8137d5ba733 100644 --- a/test/MC/Mips/macro-divu.s +++ b/test/MC/Mips/macro-divu.s @@ -27,23 +27,62 @@ divu $0,$0 # CHECK-NOTRAP: divu $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1b] - divu $25, $11 -# CHECK-TRAP: teq $11, $zero, 7 # encoding: [0x01,0x60,0x01,0xf4] -# CHECK-TRAP: divu $zero, $25, $11 # encoding: [0x03,0x2b,0x00,0x1b] -# CHECK-TRAP: mflo $25 # encoding: [0x00,0x00,0xc8,0x12] + divu $4,$5,$6 +# CHECK-NOTRAP: bnez $6, 8 # encoding: [0x14,0xc0,0x00,0x02] +# CHECK-NOTRAP: divu $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1b] +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] +# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] - divu $24,$12 -# CHECK-TRAP: teq $12, $zero, 7 # encoding: [0x01,0x80,0x01,0xf4] -# CHECK-TRAP: divu $zero, $24, $12 # encoding: [0x03,0x0c,0x00,0x1b] -# CHECK-TRAP: mflo $24 # encoding: [0x00,0x00,0xc0,0x12] + divu $4,$5,$0 +# CHECK-NOTRAP: bnez $zero, 8 # encoding: [0x14,0x00,0x00,0x02] +# CHECK-NOTRAP: divu $zero, $5, $zero # encoding: [0x00,0xa0,0x00,0x1b] +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] +# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + divu $4,$0,$0 +# CHECK-NOTRAP: bnez $zero, 8 # encoding: [0x14,0x00,0x00,0x02] +# CHECK-NOTRAP: divu $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1b] +# CHECK-NOTRAP: break 7 # encoding: [0x00,0x07,0x00,0x0d] +# CHECK-NOTRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + divu $0, $4, $5 +# CHECK-NOTRAP: divu $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1b] + + divu $25, $11 +# CHECK-TRAP: teq $11, $zero, 7 # encoding: [0x01,0x60,0x01,0xf4] +# CHECK-TRAP: divu $zero, $25, $11 # encoding: [0x03,0x2b,0x00,0x1b] +# CHECK-TRAP: mflo $25 # encoding: [0x00,0x00,0xc8,0x12] + + divu $24,$12 +# CHECK-TRAP: teq $12, $zero, 7 # encoding: [0x01,0x80,0x01,0xf4] +# CHECK-TRAP: divu $zero, $24, $12 # encoding: [0x03,0x0c,0x00,0x1b] +# CHECK-TRAP: mflo $24 # encoding: [0x00,0x00,0xc0,0x12] divu $25,$0 -# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] -# CHECK-TRAP: divu $zero, $25, $zero # encoding: [0x03,0x20,0x00,0x1b] -# CHECK-TRAP: mflo $25 # encoding: [0x00,0x00,0xc8,0x12] +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] +# CHECK-TRAP: divu $zero, $25, $zero # encoding: [0x03,0x20,0x00,0x1b] +# CHECK-TRAP: mflo $25 # encoding: [0x00,0x00,0xc8,0x12] divu $0,$9 -# CHECK-TRAP: divu $zero, $zero, $9 # encoding: [0x00,0x09,0x00,0x1b] +# CHECK-TRAP: divu $zero, $zero, $9 # encoding: [0x00,0x09,0x00,0x1b] divu $0,$0 -# CHECK-TRAP: divu $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1b] +# CHECK-TRAP: divu $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1b] + + divu $4,$5,$6 +# CHECK-TRAP: teq $6, $zero, 7 # encoding: [0x00,0xc0,0x01,0xf4] +# CHECK-TRAP: divu $zero, $5, $6 # encoding: [0x00,0xa6,0x00,0x1b] +# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + divu $4,$5,$0 +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] +# CHECK-TRAP: divu $zero, $5, $zero # encoding: [0x00,0xa0,0x00,0x1b] +# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + divu $4,$0,$0 +# CHECK-TRAP: teq $zero, $zero, 7 # encoding: [0x00,0x00,0x01,0xf4] +# CHECK-TRAP: divu $zero, $zero, $zero # encoding: [0x00,0x00,0x00,0x1b] +# CHECK-TRAP: mflo $4 # encoding: [0x00,0x00,0x20,0x12] + + divu $0, $4, $5 +# CHECK-TRAP: divu $zero, $4, $5 # encoding: [0x00,0x85,0x00,0x1b]
\ No newline at end of file diff --git a/test/MC/Mips/macro-dla-32bit.s b/test/MC/Mips/macro-dla-32bit.s new file mode 100644 index 000000000000..2fd6abfe42f4 --- /dev/null +++ b/test/MC/Mips/macro-dla-32bit.s @@ -0,0 +1,228 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | \ +# RUN: FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 | \ +# RUN: FileCheck %s + +.set mips64r2 + +dla $5, 0x00000001 # CHECK: addiu $5, $zero, 1 # encoding: [0x24,0x05,0x00,0x01] +dla $5, 0x00000002 # CHECK: addiu $5, $zero, 2 # encoding: [0x24,0x05,0x00,0x02] +dla $5, 0x00004000 # CHECK: addiu $5, $zero, 16384 # encoding: [0x24,0x05,0x40,0x00] +dla $5, 0x00008000 # CHECK: ori $5, $zero, 32768 # encoding: [0x34,0x05,0x80,0x00] +dla $5, 0xffffffff # CHECK: addiu $5, $zero, -1 # encoding: [0x24,0x05,0xff,0xff] +dla $5, 0xfffffffe # CHECK: addiu $5, $zero, -2 # encoding: [0x24,0x05,0xff,0xfe] +dla $5, 0xffffc000 # CHECK: addiu $5, $zero, -16384 # encoding: [0x24,0x05,0xc0,0x00] +dla $5, 0xffff8000 # CHECK: addiu $5, $zero, -32768 # encoding: [0x24,0x05,0x80,0x00] + +dla $5, 0x00010000 # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] +dla $5, 0x00020000 # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] +dla $5, 0x40000000 # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] +dla $5, 0x80000000 # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] +dla $5, 0xffff0000 # CHECK: lui $5, 65535 # encoding: [0x3c,0x05,0xff,0xff] +dla $5, 0xfffe0000 # CHECK: lui $5, 65534 # encoding: [0x3c,0x05,0xff,0xfe] +dla $5, 0xc0000000 # CHECK: lui $5, 49152 # encoding: [0x3c,0x05,0xc0,0x00] +dla $5, 0x80000000 # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + +dla $5, 0x00010001 # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: ori $5, $5, 1 # encoding: [0x34,0xa5,0x00,0x01] +dla $5, 0x00020001 # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: ori $5, $5, 1 # encoding: [0x34,0xa5,0x00,0x01] +dla $5, 0x40000001 # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: ori $5, $5, 1 # encoding: [0x34,0xa5,0x00,0x01] +dla $5, 0x80000001 # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 1 # encoding: [0x34,0xa5,0x00,0x01] +dla $5, 0x00010002 # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: ori $5, $5, 2 # encoding: [0x34,0xa5,0x00,0x02] +dla $5, 0x00020002 # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: ori $5, $5, 2 # encoding: [0x34,0xa5,0x00,0x02] +dla $5, 0x40000002 # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: ori $5, $5, 2 # encoding: [0x34,0xa5,0x00,0x02] +dla $5, 0x80000002 # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 2 # encoding: [0x34,0xa5,0x00,0x02] +dla $5, 0x00014000 # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] +dla $5, 0x00024000 # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] +dla $5, 0x40004000 # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] +dla $5, 0x80004000 # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] +dla $5, 0x00018000 # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] +dla $5, 0x00028000 # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] +dla $5, 0x40008000 # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] +dla $5, 0x80008000 # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] +dla $5, 0xffff4000 # CHECK: lui $5, 65535 # encoding: [0x3c,0x05,0xff,0xff] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] +dla $5, 0xfffe8000 # CHECK: lui $5, 65534 # encoding: [0x3c,0x05,0xff,0xfe] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] +dla $5, 0xc0008000 # CHECK: lui $5, 49152 # encoding: [0x3c,0x05,0xc0,0x00] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] +dla $5, 0x80008000 # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] + +dla $5, 0x00000001($6) # CHECK: addiu $5, $6, 1 # encoding: [0x24,0xc5,0x00,0x01] +dla $5, 0x00000002($6) # CHECK: addiu $5, $6, 2 # encoding: [0x24,0xc5,0x00,0x02] +dla $5, 0x00004000($6) # CHECK: addiu $5, $6, 16384 # encoding: [0x24,0xc5,0x40,0x00] +dla $5, 0x00008000($6) # CHECK: ori $5, $zero, 32768 # encoding: [0x34,0x05,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0xffffffff($6) # CHECK: addiu $5, $6, -1 # encoding: [0x24,0xc5,0xff,0xff] +dla $5, 0xfffffffe($6) # CHECK: addiu $5, $6, -2 # encoding: [0x24,0xc5,0xff,0xfe] +dla $5, 0xffffc000($6) # CHECK: addiu $5, $6, -16384 # encoding: [0x24,0xc5,0xc0,0x00] +dla $5, 0xffff8000($6) # CHECK: addiu $5, $6, -32768 # encoding: [0x24,0xc5,0x80,0x00] + +dla $5, 0x00010000($6) # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x00020000($6) # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x40000000($6) # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x80000000($6) # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0xffff0000($6) # CHECK: lui $5, 65535 # encoding: [0x3c,0x05,0xff,0xff] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0xfffe0000($6) # CHECK: lui $5, 65534 # encoding: [0x3c,0x05,0xff,0xfe] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0xc0000000($6) # CHECK: lui $5, 49152 # encoding: [0x3c,0x05,0xc0,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x80000000($6) # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] + +dla $5, 0x00010001($6) # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: ori $5, $5, 1 # encoding: [0x34,0xa5,0x00,0x01] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x00020001($6) # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: ori $5, $5, 1 # encoding: [0x34,0xa5,0x00,0x01] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x40000001($6) # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: ori $5, $5, 1 # encoding: [0x34,0xa5,0x00,0x01] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x80000001($6) # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 1 # encoding: [0x34,0xa5,0x00,0x01] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x00010002($6) # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: ori $5, $5, 2 # encoding: [0x34,0xa5,0x00,0x02] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x00020002($6) # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: ori $5, $5, 2 # encoding: [0x34,0xa5,0x00,0x02] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x40000002($6) # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: ori $5, $5, 2 # encoding: [0x34,0xa5,0x00,0x02] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x80000002($6) # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 2 # encoding: [0x34,0xa5,0x00,0x02] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x00014000($6) # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x00024000($6) # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x40004000($6) # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x80004000($6) # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x00018000($6) # CHECK: lui $5, 1 # encoding: [0x3c,0x05,0x00,0x01] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x00028000($6) # CHECK: lui $5, 2 # encoding: [0x3c,0x05,0x00,0x02] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x40008000($6) # CHECK: lui $5, 16384 # encoding: [0x3c,0x05,0x40,0x00] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x80008000($6) # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0xffff4000($6) # CHECK: lui $5, 65535 # encoding: [0x3c,0x05,0xff,0xff] + # CHECK: ori $5, $5, 16384 # encoding: [0x34,0xa5,0x40,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0xfffe8000($6) # CHECK: lui $5, 65534 # encoding: [0x3c,0x05,0xff,0xfe] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0xc0008000($6) # CHECK: lui $5, 49152 # encoding: [0x3c,0x05,0xc0,0x00] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +dla $5, 0x80008000($6) # CHECK: lui $5, 32768 # encoding: [0x3c,0x05,0x80,0x00] + # CHECK: ori $5, $5, 32768 # encoding: [0x34,0xa5,0x80,0x00] + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +# There are no further interesting immediates. + +symbol: # CHECK-LABEL: symbol: +.extern extern_sym +.option pic0 # CHECK-LABEL: .option pic0 +dla $5, extern_sym + +# CHECK: lui $5, %hi(extern_sym) # encoding: [0x3c,0x05,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym), kind: fixup_Mips_HI16 +# CHECK: addiu $5, $5, %lo(extern_sym) # encoding: [0x24,0xa5,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym), kind: fixup_Mips_LO16 + +dla $5, extern_sym($8) + +# CHECK: lui $5, %hi(extern_sym) # encoding: [0x3c,0x05,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym), kind: fixup_Mips_HI16 +# CHECK: addiu $5, $5, %lo(extern_sym) # encoding: [0x24,0xa5,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym), kind: fixup_Mips_LO16 +# CHECK: addu $5, $5, $8 # encoding: [0x00,0xa8,0x28,0x21] + +dla $5, extern_sym($5) + +# CHECK: lui $1, %hi(extern_sym) # encoding: [0x3c,0x01,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym), kind: fixup_Mips_HI16 +# CHECK: addiu $1, $1, %lo(extern_sym) # encoding: [0x24,0x21,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym), kind: fixup_Mips_LO16 +# CHECK: addu $5, $1, $5 # encoding: [0x00,0x25,0x28,0x21] + +dla $5, extern_sym+8 + +# CHECK: lui $5, %hi(extern_sym+8) # encoding: [0x3c,0x05,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym+8), kind: fixup_Mips_HI16 +# CHECK: addiu $5, $5, %lo(extern_sym+8) # encoding: [0x24,0xa5,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym+8), kind: fixup_Mips_LO16 + +dla $5, extern_sym+8($8) + +# CHECK: lui $5, %hi(extern_sym+8) # encoding: [0x3c,0x05,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym+8), kind: fixup_Mips_HI16 +# CHECK: addiu $5, $5, %lo(extern_sym+8) # encoding: [0x24,0xa5,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym+8), kind: fixup_Mips_LO16 +# CHECK: addu $5, $5, $8 # encoding: [0x00,0xa8,0x28,0x21] + +dla $5, extern_sym-8($5) + +# CHECK: lui $1, %hi(extern_sym-8) # encoding: [0x3c,0x01,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym-8), kind: fixup_Mips_HI16 +# CHECK: addiu $1, $1, %lo(extern_sym-8) # encoding: [0x24,0x21,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym-8), kind: fixup_Mips_LO16 +# CHECK: addu $5, $1, $5 # encoding: [0x00,0x25,0x28,0x21] + +dla $5, extern_sym-8 + +# CHECK: lui $5, %hi(extern_sym-8) # encoding: [0x3c,0x05,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym-8), kind: fixup_Mips_HI16 +# CHECK: addiu $5, $5, %lo(extern_sym-8) # encoding: [0x24,0xa5,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym-8), kind: fixup_Mips_LO16 + +dla $5, extern_sym-8($8) + +# CHECK: lui $5, %hi(extern_sym-8) # encoding: [0x3c,0x05,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym-8), kind: fixup_Mips_HI16 +# CHECK: addiu $5, $5, %lo(extern_sym-8) # encoding: [0x24,0xa5,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym-8), kind: fixup_Mips_LO16 +# CHECK: addu $5, $5, $8 # encoding: [0x00,0xa8,0x28,0x21] + +dla $5, extern_sym-8($5) + +# CHECK: lui $1, %hi(extern_sym-8) # encoding: [0x3c,0x01,A,A] +# CHECK: # fixup A - offset: 0, value: %hi(extern_sym-8), kind: fixup_Mips_HI16 +# CHECK: addiu $1, $1, %lo(extern_sym-8) # encoding: [0x24,0x21,A,A] +# CHECK: # fixup A - offset: 0, value: %lo(extern_sym-8), kind: fixup_Mips_LO16 +# CHECK: addu $5, $1, $5 # encoding: [0x00,0x25,0x28,0x21] + +.option pic2 diff --git a/test/MC/Mips/macro-la-pic.s b/test/MC/Mips/macro-la-pic.s new file mode 100644 index 000000000000..5516518ba61b --- /dev/null +++ b/test/MC/Mips/macro-la-pic.s @@ -0,0 +1,54 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | \ +# RUN: FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 | \ +# RUN: FileCheck %s +# N32 should be acceptable too but it currently errors out. +# N64 should be acceptable too but we cannot convert la to dla yet. + +.option pic2 +la $5, symbol # CHECK: lw $5, %got(symbol)($gp) # encoding: [0x8f,0x85,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT +la $5, symbol($6) # CHECK: lw $5, %got(symbol)($gp) # encoding: [0x8f,0x85,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +la $6, symbol($6) # CHECK: lw $1, %got(symbol)($gp) # encoding: [0x8f,0x81,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT + # CHECK: addu $6, $1, $6 # encoding: [0x00,0x26,0x30,0x21] +la $5, symbol+8 # CHECK: lw $5, %got(symbol+8)($gp) # encoding: [0x8f,0x85,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol+8), kind: fixup_Mips_GOT +la $5, symbol+8($6) # CHECK: lw $5, %got(symbol+8)($gp) # encoding: [0x8f,0x85,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol+8), kind: fixup_Mips_GOT + # CHECK: addu $5, $5, $6 # encoding: [0x00,0xa6,0x28,0x21] +la $6, symbol+8($6) # CHECK: lw $1, %got(symbol+8)($gp) # encoding: [0x8f,0x81,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol+8), kind: fixup_Mips_GOT + # CHECK: addiu $1, $1, 8 # encoding: [0x24,0x21,0x00,0x08] + # CHECK: addu $6, $1, $6 # encoding: [0x00,0x26,0x30,0x21] +la $5, 1f # CHECK: lw $5, %got($tmp0)($gp) # encoding: [0x8f,0x85,A,A] + # CHECK: # fixup A - offset: 0, value: %got($tmp0), kind: fixup_Mips_GOT + # CHECK: addiu $5, $5, %lo($tmp0) # encoding: [0x24,0xa5,A,A] + # CHECK: # fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16 +1: + +# PIC expansions involving $25 are special. +la $25, symbol # CHECK: lw $25, %call16(symbol)($gp) # encoding: [0x8f,0x99,A,A] + # CHECK: # fixup A - offset: 0, value: %call16(symbol), kind: fixup_Mips_CALL16 +la $25, symbol($6) # CHECK: lw $25, %got(symbol)($gp) # encoding: [0x8f,0x99,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT + # CHECK: addu $25, $25, $6 # encoding: [0x03,0x26,0xc8,0x21] +la $25, symbol($25) # CHECK: lw $1, %got(symbol)($gp) # encoding: [0x8f,0x81,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT + # CHECK: addu $25, $1, $25 # encoding: [0x00,0x39,0xc8,0x21] +la $25, symbol+8 # CHECK: lw $25, %got(symbol+8)($gp) # encoding: [0x8f,0x99,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol+8), kind: fixup_Mips_GOT +la $25, symbol+8($6) # CHECK: lw $25, %got(symbol+8)($gp) # encoding: [0x8f,0x99,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol+8), kind: fixup_Mips_GOT + # CHECK: addu $25, $25, $6 # encoding: [0x03,0x26,0xc8,0x21] +la $25, symbol+8($25) # CHECK: lw $1, %got(symbol+8)($gp) # encoding: [0x8f,0x81,A,A] + # CHECK: # fixup A - offset: 0, value: %got(symbol+8), kind: fixup_Mips_GOT + # CHECK: addiu $1, $1, 8 # encoding: [0x24,0x21,0x00,0x08] + # CHECK: addu $25, $1, $25 # encoding: [0x00,0x39,0xc8,0x21] +la $25, 1f # CHECK: lw $25, %got($tmp1)($gp) # encoding: [0x8f,0x99,A,A] + # CHECK: # fixup A - offset: 0, value: %got($tmp1), kind: fixup_Mips_GOT + # CHECK: addiu $25, $25, %lo($tmp1) # encoding: [0x27,0x39,A,A] + # CHECK: # fixup A - offset: 0, value: %lo($tmp1), kind: fixup_Mips_LO16 +1: diff --git a/test/MC/Mips/macro-la.s b/test/MC/Mips/macro-la.s index 3428cd78cb84..cca4805054f0 100644 --- a/test/MC/Mips/macro-la.s +++ b/test/MC/Mips/macro-la.s @@ -272,8 +272,8 @@ la $6, symbol+8($6) # CHECK: lui $1, %hi(symbol+8) # encoding: [0x3c,0x0 # CHECK: addiu $1, $1, %lo(symbol+8) # encoding: [0x24,0x21,A,A] # CHECK: # fixup A - offset: 0, value: %lo(symbol+8), kind: fixup_Mips_LO16 # CHECK: addu $6, $1, $6 # encoding: [0x00,0x26,0x30,0x21] -la $5, 1f # CHECK: lui $5, %hi(($tmp0)) # encoding: [0x3c,0x05,A,A] - # CHECK: # fixup A - offset: 0, value: %hi(($tmp0)), kind: fixup_Mips_HI16 - # CHECK: addiu $5, $5, %lo(($tmp0)) # encoding: [0x24,0xa5,A,A] - # CHECK: # fixup A - offset: 0, value: %lo(($tmp0)), kind: fixup_Mips_LO16 +la $5, 1f # CHECK: lui $5, %hi($tmp0) # encoding: [0x3c,0x05,A,A] + # CHECK: # fixup A - offset: 0, value: %hi($tmp0), kind: fixup_Mips_HI16 + # CHECK: addiu $5, $5, %lo($tmp0) # encoding: [0x24,0xa5,A,A] + # CHECK: # fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16 1: diff --git a/test/MC/Mips/micromips-alias.s b/test/MC/Mips/micromips-alias.s index 256b3b68aa61..c955dd9974ad 100644 --- a/test/MC/Mips/micromips-alias.s +++ b/test/MC/Mips/micromips-alias.s @@ -3,7 +3,7 @@ # Symbol bar must be marked as micromips. # CHECK: Name: bar -# CHECK: Other: 128 +# CHECK: Other [ (0x80) .align 2 .type f,@function .set nomips16 @@ -16,7 +16,7 @@ f: bar = f # CHECK: Name: foo -# CHECK: Other: 128 +# CHECK: Other [ (0x80) .type o,@object .set micromips o: diff --git a/test/MC/Mips/micromips-alu-instructions.s b/test/MC/Mips/micromips-alu-instructions.s index aeab09e78fa9..0f37c9ab6b9a 100644 --- a/test/MC/Mips/micromips-alu-instructions.s +++ b/test/MC/Mips/micromips-alu-instructions.s @@ -41,6 +41,12 @@ # CHECK-EL: addiupc $2, 20 # encoding: [0x00,0x79,0x05,0x00] # CHECK-EL: addiupc $7, 16777212 # encoding: [0xbf,0x7b,0xff,0xff] # CHECK-EL: addiupc $7, -16777216 # encoding: [0xc0,0x7b,0x00,0x00] +# CHECK-EL: andi $3, $3, 5 # encoding: [0x63,0xd0,0x05,0x00] +# CHECK-EL: ori $3, $4, 5 # encoding: [0x64,0x50,0x05,0x00] +# CHECK-EL: ori $3, $3, 5 # encoding: [0x63,0x50,0x05,0x00] +# CHECK-EL: xori $3, $3, 5 # encoding: [0x63,0x70,0x05,0x00] +# CHECK-EL: not $3, $4 # encoding: [0x04,0x00,0xd0,0x1a] + #------------------------------------------------------------------------------ # Big endian #------------------------------------------------------------------------------ @@ -78,6 +84,12 @@ # CHECK-EB: addiupc $2, 20 # encoding: [0x79,0x00,0x00,0x05] # CHECK-EB: addiupc $7, 16777212 # encoding: [0x7b,0xbf,0xff,0xff] # CHECK-EB: addiupc $7, -16777216 # encoding: [0x7b,0xc0,0x00,0x00] +# CHECK-EB: andi $3, $3, 5 # encoding: [0xd0,0x63,0x00,0x05] +# CHECK-EB: ori $3, $4, 5 # encoding: [0x50,0x64,0x00,0x05] +# CHECK-EB: ori $3, $3, 5 # encoding: [0x50,0x63,0x00,0x05] +# CHECK-EB: xori $3, $3, 5 # encoding: [0x70,0x63,0x00,0x05] +# CHECK-EB: not $3, $4 # encoding: [0x00,0x04,0x1a,0xd0] + add $9, $6, $7 add $9, $6, 17767 addu $9, $6, -15001 @@ -113,3 +125,8 @@ addiupc $2, 20 addiupc $7, 16777212 addiupc $7, -16777216 + and $3, 5 + or $3, $4, 5 + or $3, 5 + xor $3, 5 + not $3, $4 diff --git a/test/MC/Mips/micromips-dsp/invalid.s b/test/MC/Mips/micromips-dsp/invalid.s index 55a6f8e28737..8e6fedbf0b94 100644 --- a/test/MC/Mips/micromips-dsp/invalid.s +++ b/test/MC/Mips/micromips-dsp/invalid.s @@ -21,3 +21,5 @@ shrl.qb $3, $4, -1 # CHECK: :[[@LINE]]:19: error: expected 3-bit unsigned immediate shilo $ac1, 64 # CHECK: :[[@LINE]]:15: error: expected 6-bit signed immediate shilo $ac1, -64 # CHECK: :[[@LINE]]:15: error: expected 6-bit signed immediate + # bposge32 is microMIPS DSP instruction but it is removed in Release 6 + bposge32 342 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/micromips-dsp/valid-micromips32r3.s b/test/MC/Mips/micromips-dsp/valid-micromips32r3.s new file mode 100644 index 000000000000..3c8501d3c374 --- /dev/null +++ b/test/MC/Mips/micromips-dsp/valid-micromips32r3.s @@ -0,0 +1,4 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r3 -mattr=micromips -mattr=+dsp | FileCheck %s + + .set noat + bposge32 342 # CHECK: bposge32 342 # encoding: [0x43,0x60,0x00,0xab] diff --git a/test/MC/Mips/micromips-dsp/valid.s b/test/MC/Mips/micromips-dsp/valid.s index c147a6d850ac..d1f5d0f3ae8d 100644 --- a/test/MC/Mips/micromips-dsp/valid.s +++ b/test/MC/Mips/micromips-dsp/valid.s @@ -103,3 +103,15 @@ wrdsp $5 # CHECK: wrdsp $5 # encoding: [0x00,0xa7,0xd6,0x7c] wrdsp $5, 2 # CHECK: wrdsp $5, 2 # encoding: [0x00,0xa0,0x96,0x7c] wrdsp $5, 31 # CHECK: wrdsp $5 # encoding: [0x00,0xa7,0xd6,0x7c] + modsub $4, $5, $6 # CHECK: modsub $4, $5, $6 # encoding: [0x00,0xc5,0x22,0x95] + mulsaq_s.w.ph $ac0, $3, $2 # CHECK: mulsaq_s.w.ph $ac0, $3, $2 # encoding: [0x00,0x43,0x3c,0xbc] + bitrev $2, $3 # CHECK: bitrev $2, $3 # encoding: [0x00,0x43,0x31,0x3c] + cmp.eq.ph $2, $3 # CHECK: cmp.eq.ph $2, $3 # encoding: [0x00,0x62,0x00,0x05] + cmp.le.ph $2, $3 # CHECK: cmp.le.ph $2, $3 # encoding: [0x00,0x62,0x00,0x85] + cmp.lt.ph $2, $3 # CHECK: cmp.lt.ph $2, $3 # encoding: [0x00,0x62,0x00,0x45] + cmpgu.eq.qb $1, $2, $3 # CHECK: cmpgu.eq.qb $1, $2, $3 # encoding: [0x58,0x62,0x08,0xc5] + cmpgu.lt.qb $1, $2, $3 # CHECK: cmpgu.lt.qb $1, $2, $3 # encoding: [0x58,0x62,0x09,0x05] + cmpgu.le.qb $1, $2, $3 # CHECK: cmpgu.le.qb $1, $2, $3 # encoding: [0x58,0x62,0x09,0x45] + cmpu.eq.qb $1, $2 # CHECK: cmpu.eq.qb $1, $2 # encoding: [0x00,0x41,0x02,0x45] + cmpu.lt.qb $1, $2 # CHECK: cmpu.lt.qb $1, $2 # encoding: [0x00,0x41,0x02,0x85] + cmpu.le.qb $1, $2 # CHECK: cmpu.le.qb $1, $2 # encoding: [0x00,0x41,0x02,0xc5] diff --git a/test/MC/Mips/micromips-dspr2/invalid.s b/test/MC/Mips/micromips-dspr2/invalid.s index 5ea203d981c1..e98e5ff2436f 100644 --- a/test/MC/Mips/micromips-dspr2/invalid.s +++ b/test/MC/Mips/micromips-dspr2/invalid.s @@ -1,9 +1,19 @@ # RUN: not llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 -mattr=micromips -mattr=+dspr2 2>%t1 # RUN: FileCheck %s < %t1 + balign $2, $3, -1 # CHECK: :[[@LINE]]:18: error: expected 2-bit unsigned immediate + balign $2, $3, 4 # CHECK: :[[@LINE]]:18: error: expected 2-bit unsigned immediate shra.qb $3, $4, 8 # CHECK: :[[@LINE]]:19: error: expected 3-bit unsigned immediate shra.qb $3, $4, -1 # CHECK: :[[@LINE]]:19: error: expected 3-bit unsigned immediate shra_r.qb $3, $4, 8 # CHECK: :[[@LINE]]:21: error: expected 3-bit unsigned immediate shra_r.qb $3, $4, -1 # CHECK: :[[@LINE]]:21: error: expected 3-bit unsigned immediate shrl.ph $3, $4, 16 # CHECK: :[[@LINE]]:19: error: expected 4-bit unsigned immediate shrl.ph $3, $4, -1 # CHECK: :[[@LINE]]:19: error: expected 4-bit unsigned immediate + append $3, $4, 32 # CHECK: :[[@LINE]]:18: error: expected 5-bit unsigned immediate + append $3, $4, -1 # CHECK: :[[@LINE]]:18: error: expected 5-bit unsigned immediate + mulsa.w.ph $8, $3, $2 # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + mulsa.w.ph $31, $3, $2 # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + mulsaq_s.w.ph $8, $3, $2 # CHECK: :[[@LINE]]:17: error: invalid operand for instruction + mulsaq_s.w.ph $31, $3, $2 # CHECK: :[[@LINE]]:17: error: invalid operand for instruction + # bposge32 is microMIPS DSP instruction but it is removed in Release 6 + bposge32 342 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/micromips-dspr2/valid.s b/test/MC/Mips/micromips-dspr2/valid.s index b1d09cbc84c7..19c91fe7e14c 100644 --- a/test/MC/Mips/micromips-dspr2/valid.s +++ b/test/MC/Mips/micromips-dspr2/valid.s @@ -125,3 +125,19 @@ wrdsp $5 # CHECK: wrdsp $5 # encoding: [0x00,0xa7,0xd6,0x7c] wrdsp $5, 2 # CHECK: wrdsp $5, 2 # encoding: [0x00,0xa0,0x96,0x7c] wrdsp $5, 31 # CHECK: wrdsp $5 # encoding: [0x00,0xa7,0xd6,0x7c] + append $3, $4, 5 # CHECK: append $3, $4, 5 # encoding: [0x00,0x64,0x2a,0x15] + mulsa.w.ph $ac0, $3, $2 # CHECK: mulsa.w.ph $ac0, $3, $2 # encoding: [0x00,0x43,0x2c,0xbc] + balign $2, $3, 3 # CHECK: balign $2, $3, 3 # encoding: [0x00,0x43,0xc8,0xbc] + bitrev $2, $3 # CHECK: bitrev $2, $3 # encoding: [0x00,0x43,0x31,0x3c] + cmp.eq.ph $2, $3 # CHECK: cmp.eq.ph $2, $3 # encoding: [0x00,0x62,0x00,0x05] + cmp.le.ph $2, $3 # CHECK: cmp.le.ph $2, $3 # encoding: [0x00,0x62,0x00,0x85] + cmp.lt.ph $2, $3 # CHECK: cmp.lt.ph $2, $3 # encoding: [0x00,0x62,0x00,0x45] + cmpgdu.eq.qb $1, $2, $3 # CHECK: cmpgdu.eq.qb $1, $2, $3 # encoding: [0x00,0x62,0x09,0x85] + cmpgdu.lt.qb $1, $2, $3 # CHECK: cmpgdu.lt.qb $1, $2, $3 # encoding: [0x00,0x62,0x09,0xc5] + cmpgdu.le.qb $1, $2, $3 # CHECK: cmpgdu.le.qb $1, $2, $3 # encoding: [0x00,0x62,0x0a,0x05] + cmpgu.eq.qb $1, $2, $3 # CHECK: cmpgu.eq.qb $1, $2, $3 # encoding: [0x58,0x62,0x08,0xc5] + cmpgu.lt.qb $1, $2, $3 # CHECK: cmpgu.lt.qb $1, $2, $3 # encoding: [0x58,0x62,0x09,0x05] + cmpgu.le.qb $1, $2, $3 # CHECK: cmpgu.le.qb $1, $2, $3 # encoding: [0x58,0x62,0x09,0x45] + cmpu.eq.qb $1, $2 # CHECK: cmpu.eq.qb $1, $2 # encoding: [0x00,0x41,0x02,0x45] + cmpu.lt.qb $1, $2 # CHECK: cmpu.lt.qb $1, $2 # encoding: [0x00,0x41,0x02,0x85] + cmpu.le.qb $1, $2 # CHECK: cmpu.le.qb $1, $2 # encoding: [0x00,0x41,0x02,0xc5] diff --git a/test/MC/Mips/micromips-dspr3/valid.s b/test/MC/Mips/micromips-dspr3/valid.s new file mode 100644 index 000000000000..613be05bc73f --- /dev/null +++ b/test/MC/Mips/micromips-dspr3/valid.s @@ -0,0 +1,4 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 -mattr=micromips -mattr=+dspr3 | FileCheck %s + + .set noat + bposge32c 342 # CHECK: bposge32c 342 # encoding: [0x43,0x20,0x00,0xab] diff --git a/test/MC/Mips/micromips-el-fixup-data.s b/test/MC/Mips/micromips-el-fixup-data.s index 47538356bf37..aa85838339fc 100644 --- a/test/MC/Mips/micromips-el-fixup-data.s +++ b/test/MC/Mips/micromips-el-fixup-data.s @@ -1,6 +1,6 @@ # RUN: llvm-mc %s -triple=mipsel-unknown-linux -mcpu=mips32r2 \ # RUN: -mattr=+micromips 2>&1 -filetype=obj > %t.o -# RUN: llvm-objdump %t.o -triple mipsel -mattr=+micromips -d | FileCheck %s +# RUN: llvm-objdump %t.o -d | FileCheck %s # Check that fixup data is written in the microMIPS specific little endian # byte order. diff --git a/test/MC/Mips/micromips-expansions.s b/test/MC/Mips/micromips-expansions.s index 48c73f34e7e8..3f02ddd2040c 100644 --- a/test/MC/Mips/micromips-expansions.s +++ b/test/MC/Mips/micromips-expansions.s @@ -18,28 +18,28 @@ # CHECK: addu $7, $7, $8 # encoding: [0x07,0x01,0x50,0x39] # CHECK: lui $10, %hi(symbol) # encoding: [0xaa'A',0x41'A',0x00,0x00] # CHECK: # fixup A - offset: 0, -# CHECK: value: symbol@ABS_HI, +# CHECK: value: %hi(symbol), # CHECK: kind: fixup_MICROMIPS_HI16 # CHECK: addu $10, $10, $4 # encoding: [0x8a,0x00,0x50,0x51] # CHECK: lw $10, %lo(symbol)($10) # encoding: [0x4a'A',0xfd'A',0x00,0x00] # CHECK: # fixup A - offset: 0, -# CHECK: value: symbol@ABS_LO, +# CHECK: value: %lo(symbol), # CHECK: kind: fixup_MICROMIPS_LO16 # CHECK: lui $1, %hi(symbol) # encoding: [0xa1'A',0x41'A',0x00,0x00] # CHECK: # fixup A - offset: 0, -# CHECK: value: symbol@ABS_HI, +# CHECK: value: %hi(symbol), # CHECK: kind: fixup_MICROMIPS_HI16 # CHECK: addu $1, $1, $9 # encoding: [0x21,0x01,0x50,0x09] # CHECK: sw $10, %lo(symbol)($1) # encoding: [0x41'A',0xf9'A',0x00,0x00] # CHECK: # fixup A - offset: 0, -# CHECK: value: symbol@ABS_LO, +# CHECK: value: %lo(symbol), # CHECK: kind: fixup_MICROMIPS_LO16 # CHECK: lui $10, 10 # encoding: [0xaa,0x41,0x0a,0x00] # CHECK: addu $10, $10, $4 # encoding: [0x8a,0x00,0x50,0x51] # CHECK: lw $10, 123($10) # encoding: [0x4a,0xfd,0x7b,0x00] # CHECK: lui $1, 2 # encoding: [0xa1,0x41,0x02,0x00] # CHECK: addu $1, $1, $9 # encoding: [0x21,0x01,0x50,0x09] -# CHECK: sw $10, 57920($1) # encoding: [0x41,0xf9,0x40,0xe2] +# CHECK: sw $10, -7616($1) # encoding: [0x41,0xf9,0x40,0xe2] li $5,123 li $6,-2345 diff --git a/test/MC/Mips/micromips-func-addr.s b/test/MC/Mips/micromips-func-addr.s index e2a4d23d35ff..0cd49352f306 100644 --- a/test/MC/Mips/micromips-func-addr.s +++ b/test/MC/Mips/micromips-func-addr.s @@ -1,6 +1,6 @@ # RUN: llvm-mc %s -filetype=obj -triple=mipsel-unknown-linux \ # RUN: -mattr=micromips | llvm-readobj -r \ -# RUN: | FileCheck %s -check-prefix=CHECK +# RUN: | FileCheck %s # CHECK: Relocations [ # CHECK: 0x0 R_MIPS_32 bar 0x0 # CHECK: 0x4 R_MIPS_32 L1 0x0 diff --git a/test/MC/Mips/micromips-invalid.s b/test/MC/Mips/micromips-invalid.s index 7d34e79cf714..8494aa23650e 100644 --- a/test/MC/Mips/micromips-invalid.s +++ b/test/MC/Mips/micromips-invalid.s @@ -1,10 +1,9 @@ # RUN: not llvm-mc %s -triple=mipsel -show-encoding -mattr=micromips 2>%t1 # RUN: FileCheck %s < %t1 - addiur1sp $7, 260 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range - addiur1sp $7, 241 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: misaligned immediate operand value - addiur1sp $8, 240 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - addius5 $7, 9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range + addiur1sp $7, 260 # CHECK: :[[@LINE]]:17: error: expected both 8-bit unsigned immediate and multiple of 4 + addiur1sp $7, 241 # CHECK: :[[@LINE]]:17: error: expected both 8-bit unsigned immediate and multiple of 4 + addiur1sp $8, 240 # CHECK: :[[@LINE]]:13: error: invalid operand for instruction addiusp 1032 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range addu16 $6, $14, $4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction subu16 $5, $16, $9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction @@ -18,8 +17,6 @@ srl16 $4, $9, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction sll16 $3, $16, 9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range srl16 $4, $5, 15 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range - li16 $8, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - li16 $4, -2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range addiur2 $9, $7, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction addiur2 $6, $7, 10 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range lwm16 $5, $6, $ra, 8($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: $16 or $31 expected @@ -91,3 +88,4 @@ jraddiusp 33 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected both 7-bit unsigned immediate and multiple of 4 jraddiusp 125 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected both 7-bit unsigned immediate and multiple of 4 jraddiusp 132 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected both 7-bit unsigned immediate and multiple of 4 + lwu $32, 4096($32) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction diff --git a/test/MC/Mips/micromips-label-test-sections.s b/test/MC/Mips/micromips-label-test-sections.s index 569b64c6f98a..e24f6a4d17c8 100644 --- a/test/MC/Mips/micromips-label-test-sections.s +++ b/test/MC/Mips/micromips-label-test-sections.s @@ -14,7 +14,9 @@ h: # CHECK: Name: f # CHECK: Binding: Local # CHECK: Type: None -# CHECK: Other: 128 +# CHECK: Other [ (0x80) +# CHECK: STO_MIPS_MICROMIPS +# CHECK: ] # CHECK: Section: .text # CHECK: } # CHECK: Symbol { @@ -28,7 +30,9 @@ h: # CHECK: Name: h # CHECK: Binding: Local # CHECK: Type: None -# CHECK: Other: 128 +# CHECK: Other [ (0x80) +# CHECK: STO_MIPS_MICROMIPS +# CHECK: ] # CHECK: Section: .text # CHECK: } # CHECK: ] diff --git a/test/MC/Mips/micromips-label-test.s b/test/MC/Mips/micromips-label-test.s index cc1566b9e678..39c905c06dbe 100644 --- a/test/MC/Mips/micromips-label-test.s +++ b/test/MC/Mips/micromips-label-test.s @@ -26,7 +26,9 @@ j: # CHECK: Name: g # CHECK: Binding: Local # CHECK: Type: None -# CHECK: Other: 128 +# CHECK: Other [ (0x80) +# CHECK: STO_MIPS_MICROMIPS +# CHECK: ] # CHECK: Section: .text # CHECK: } # CHECK: Symbol { @@ -40,7 +42,9 @@ j: # CHECK: Name: i # CHECK: Binding: Local # CHECK: Type: None -# CHECK: Other: 128 +# CHECK: Other [ (0x80) +# CHECK: STO_MIPS_MICROMIPS +# CHECK: ] # CHECK: Section: .text # CHECK: } # CHECK: Symbol { diff --git a/test/MC/Mips/micromips-relocations.s b/test/MC/Mips/micromips-relocations.s index 1633845444f2..a8734a06ca89 100644 --- a/test/MC/Mips/micromips-relocations.s +++ b/test/MC/Mips/micromips-relocations.s @@ -10,71 +10,71 @@ # CHECK-FIXUP: lui $2, %hi(_gp_disp) # CHECK-FIXUP: # encoding: [0xa2'A',0x41'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: _gp_disp@ABS_HI, +# CHECK-FIXUP: value: %hi(_gp_disp), # CHECK-FIXUP: kind: fixup_MICROMIPS_HI16 # CHECK-FIXUP: addiu $2, $2, %lo(_gp_disp) # CHECK-FIXUP: # encoding: [0x42'A',0x30'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: _gp_disp@ABS_LO, +# CHECK-FIXUP: value: %lo(_gp_disp), # CHECK-FIXUP: kind: fixup_MICROMIPS_LO16 # CHECK-FIXUP: lw $25, %call16(strchr)($gp) # CHECK-FIXUP: # encoding: [0x3c'A',0xff'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: strchr@GOT_CALL, +# CHECK-FIXUP: value: %call16(strchr), # CHECK-FIXUP: kind: fixup_MICROMIPS_CALL16 # CHECK-FIXUP: lw $3, %got(loop_1)($2) # CHECK-FIXUP: # encoding: [0x62'A',0xfc'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: loop_1@GOT, +# CHECK-FIXUP: value: %got(loop_1), # CHECK-FIXUP: kind: fixup_MICROMIPS_GOT16 # CHECK-FIXUP: lui $2, %dtprel_hi(_gp_disp) # CHECK-FIXUP: # encoding: [0xa2'A',0x41'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: _gp_disp@DTPREL_HI, +# CHECK-FIXUP: value: %dtprel_hi(_gp_disp), # CHECK-FIXUP: kind: fixup_MICROMIPS_TLS_DTPREL_HI16 # CHECK-FIXUP: addiu $2, $2, %dtprel_lo(_gp_disp) # CHECK-FIXUP: # encoding: [0x42'A',0x30'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: _gp_disp@DTPREL_LO, +# CHECK-FIXUP: value: %dtprel_lo(_gp_disp), # CHECK-FIXUP: kind: fixup_MICROMIPS_TLS_DTPREL_LO16 # CHECK-FIXUP: lw $3, %got(loop_1)($2) # CHECK-FIXUP: # encoding: [0x62'A',0xfc'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: loop_1@GOT, +# CHECK-FIXUP: value: %got(loop_1), # CHECK-FIXUP: kind: fixup_MICROMIPS_GOT16 # CHECK-FIXUP: lw $4, %got_disp(loop_2)($3) # CHECK-FIXUP: # encoding: [0x83'A',0xfc'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: loop_2@GOT_DISP, +# CHECK-FIXUP: value: %got_disp(loop_2), # CHECK-FIXUP: kind: fixup_MICROMIPS_GOT_DISP # CHECK-FIXUP: lw $5, %got_page(loop_3)($4) # CHECK-FIXUP: # encoding: [0xa4'A',0xfc'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: loop_3@GOT_PAGE, +# CHECK-FIXUP: value: %got_page(loop_3), # CHECK-FIXUP: kind: fixup_MICROMIPS_GOT_PAGE # CHECK-FIXUP: lw $6, %got_ofst(loop_4)($5) # CHECK-FIXUP: # encoding: [0xc5'A',0xfc'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: loop_4@GOT_OFST, +# CHECK-FIXUP: value: %got_ofst(loop_4), # CHECK-FIXUP: kind: fixup_MICROMIPS_GOT_OFST # CHECK-FIXUP: lui $2, %tprel_hi(_gp_disp) # CHECK-FIXUP: # encoding: [0xa2'A',0x41'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: _gp_disp@TPREL_HI, +# CHECK-FIXUP: value: %tprel_hi(_gp_disp), # CHECK-FIXUP: kind: fixup_MICROMIPS_TLS_TPREL_HI16 # CHECK-FIXUP: addiu $2, $2, %tprel_lo(_gp_disp) # CHECK-FIXUP: # encoding: [0x42'A',0x30'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: _gp_disp@TPREL_LO, +# CHECK-FIXUP: value: %tprel_lo(_gp_disp), # CHECK-FIXUP: kind: fixup_MICROMIPS_TLS_TPREL_LO16 # CHECK-FIXUP: addiu $4, $gp, %tlsgd(a) # CHECK-FIXUP: # encoding: [0x9c'A',0x30'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: a@TLSGD, kind: fixup_MICROMIPS_TLS_GD +# CHECK-FIXUP: value: %tlsgd(a), kind: fixup_MICROMIPS_TLS_GD # CHECK-FIXUP: addiu $4, $gp, %tlsldm(f.i) # CHECK-FIXUP: # encoding: [0x9c'A',0x30'A',0x00,0x00] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: f.i@TLSLDM, kind: fixup_MICROMIPS_TLS_LDM +# CHECK-FIXUP: value: %tlsldm(f.i), kind: fixup_MICROMIPS_TLS_LDM #------------------------------------------------------------------------------ # Check that the appropriate relocations were created. #------------------------------------------------------------------------------ diff --git a/test/MC/Mips/micromips-shift-instructions.s b/test/MC/Mips/micromips-shift-instructions.s index bbb71ac72082..52b71e22aacd 100644 --- a/test/MC/Mips/micromips-shift-instructions.s +++ b/test/MC/Mips/micromips-shift-instructions.s @@ -15,6 +15,15 @@ # CHECK-EL: srlv $2, $3, $5 # encoding: [0x65,0x00,0x50,0x10] # CHECK-EL: rotr $9, $6, 7 # encoding: [0x26,0x01,0xc0,0x38] # CHECK-EL: rotrv $9, $6, $7 # encoding: [0xc7,0x00,0xd0,0x48] +# CHECK-EL: sllv $2, $3, $5 # encoding: [0x65,0x00,0x10,0x10] +# CHECK-EL: srav $2, $3, $5 # encoding: [0x65,0x00,0x90,0x10] +# CHECK-EL: srlv $2, $3, $5 # encoding: [0x65,0x00,0x50,0x10] +# CHECK-EL: sllv $2, $2, $3 # encoding: [0x43,0x00,0x10,0x10] +# CHECK-EL: srav $2, $2, $3 # encoding: [0x43,0x00,0x90,0x10] +# CHECK-EL: srlv $2, $2, $3 # encoding: [0x43,0x00,0x50,0x10] +# CHECK-EL: sll $3, $3, 7 # encoding: [0x63,0x00,0x00,0x38] +# CHECK-EL: sra $3, $3, 7 # encoding: [0x63,0x00,0x80,0x38] +# CHECK-EL: srl $3, $3, 7 # encoding: [0x63,0x00,0x40,0x38] #------------------------------------------------------------------------------ # Big endian #------------------------------------------------------------------------------ @@ -26,6 +35,15 @@ # CHECK-EB: srlv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x50] # CHECK-EB: rotr $9, $6, 7 # encoding: [0x01,0x26,0x38,0xc0] # CHECK-EB: rotrv $9, $6, $7 # encoding: [0x00,0xc7,0x48,0xd0] +# CHECK-EB: sllv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x10] +# CHECK-EB: srav $2, $3, $5 # encoding: [0x00,0x65,0x10,0x90] +# CHECK-EB: srlv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x50] +# CHECK-EB: sllv $2, $2, $3 # encoding: [0x00,0x43,0x10,0x10] +# CHECK-EB: srav $2, $2, $3 # encoding: [0x00,0x43,0x10,0x90] +# CHECK-EB: srlv $2, $2, $3 # encoding: [0x00,0x43,0x10,0x50] +# CHECK-EB: sll $3, $3, 7 # encoding: [0x00,0x63,0x38,0x00] +# CHECK-EB: sra $3, $3, 7 # encoding: [0x00,0x63,0x38,0x80] +# CHECK-EB: srl $3, $3, 7 # encoding: [0x00,0x63,0x38,0x40] sll $4, $3, 7 sllv $2, $3, $5 sra $4, $3, 7 @@ -34,3 +52,12 @@ srlv $2, $3, $5 rotr $9, $6, 7 rotrv $9, $6, $7 + sll $2, $3, $5 + sra $2, $3, $5 + srl $2, $3, $5 + sll $2, $3 + sra $2, $3 + srl $2, $3 + sll $3, 7 + sra $3, 7 + srl $3, 7 diff --git a/test/MC/Mips/micromips/invalid-wrong-error.s b/test/MC/Mips/micromips/invalid-wrong-error.s new file mode 100644 index 000000000000..8d39498bf90d --- /dev/null +++ b/test/MC/Mips/micromips/invalid-wrong-error.s @@ -0,0 +1,13 @@ +# Instructions that are correctly rejected but emit a wrong or misleading error. +# RUN: not llvm-mc %s -triple=mips -show-encoding -mattr=micromips 2>%t1 +# RUN: FileCheck %s < %t1 + + # The 20-bit immediate supported by the standard encodings cause us to emit + # the diagnostic for the 20-bit form. This isn't exactly wrong but it is + # misleading. Ideally, we'd emit every way to achieve a valid match instead + # of picking only one. + sdbbp -1 # CHECK: :[[@LINE]]:9: error: expected 20-bit unsigned immediate + sdbbp 1024 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + syscall -1 # CHECK: :[[@LINE]]:11: error: expected 20-bit unsigned immediate + syscall $4 # CHECK: :[[@LINE]]:11: error: expected 20-bit unsigned immediate + syscall 1024 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/micromips/invalid.s b/test/MC/Mips/micromips/invalid.s index b091062fdccf..47882fb05584 100644 --- a/test/MC/Mips/micromips/invalid.s +++ b/test/MC/Mips/micromips/invalid.s @@ -1,6 +1,11 @@ # RUN: not llvm-mc %s -triple=mips -show-encoding -mattr=micromips 2>%t1 # RUN: FileCheck %s < %t1 + addiur1sp $7, 260 # CHECK: :[[@LINE]]:17: error: expected both 8-bit unsigned immediate and multiple of 4 + addiur1sp $7, 241 # CHECK: :[[@LINE]]:17: error: expected both 8-bit unsigned immediate and multiple of 4 + addiur1sp $8, 240 # CHECK: :[[@LINE]]:13: error: invalid operand for instruction + addius5 $2, -9 # CHECK: :[[@LINE]]:15: error: expected 4-bit signed immediate + addius5 $2, 8 # CHECK: :[[@LINE]]:15: error: expected 4-bit signed immediate break -1 # CHECK: :[[@LINE]]:9: error: expected 10-bit unsigned immediate break 1024 # CHECK: :[[@LINE]]:9: error: expected 10-bit unsigned immediate break -1, 5 # CHECK: :[[@LINE]]:9: error: expected 10-bit unsigned immediate @@ -11,6 +16,8 @@ break16 16 # CHECK: :[[@LINE]]:11: error: expected 4-bit unsigned immediate cache -1, 255($7) # CHECK: :[[@LINE]]:9: error: expected 5-bit unsigned immediate cache 32, 255($7) # CHECK: :[[@LINE]]:9: error: expected 5-bit unsigned immediate + cachee 0, -513($7) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset + cachee 0, 512($7) # CHECK: :[[@LINE]]:13: error: expected memory with 9-bit signed offset # FIXME: Check '0 < pos + size <= 32' constraint on ext ext $2, $3, -1, 31 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate ext $2, $3, 32, 31 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate @@ -18,13 +25,25 @@ ext $2, $3, 1, 33 # CHECK: :[[@LINE]]:18: error: expected immediate in range 1 .. 32 ins $2, $3, -1, 31 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate ins $2, $3, 32, 31 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + ins $2, $3, -1, 1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + ins $2, $3, 32, 1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + ins $2, $3, 0, -1 # CHECK: :[[@LINE]]:18: error: expected immediate in range 1 .. 32 + ins $2, $3, 0, 33 # CHECK: :[[@LINE]]:18: error: expected immediate in range 1 .. 32 jraddiusp -1 # CHECK: :[[@LINE]]:13: error: expected both 7-bit unsigned immediate and multiple of 4 jraddiusp -4 # CHECK: :[[@LINE]]:13: error: expected both 7-bit unsigned immediate and multiple of 4 jraddiusp 125 # CHECK: :[[@LINE]]:13: error: expected both 7-bit unsigned immediate and multiple of 4 jraddiusp 128 # CHECK: :[[@LINE]]:13: error: expected both 7-bit unsigned immediate and multiple of 4 + li16 $4, -2 # CHECK: :[[@LINE]]:12: error: expected immediate in range -1 .. 126 + li16 $4, 127 # CHECK: :[[@LINE]]:12: error: expected immediate in range -1 .. 126 pref -1, 255($7) # CHECK: :[[@LINE]]:8: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:8: error: expected 5-bit unsigned immediate + prefe 0, -513($7) # CHECK: :[[@LINE]]:12: error: expected memory with 9-bit signed offset + prefe 0, 512($7) # CHECK: :[[@LINE]]:12: error: expected memory with 9-bit signed offset + rotr $2, -1 # CHECK: :[[@LINE]]:12: error: expected 5-bit unsigned immediate + rotr $2, 32 # CHECK: :[[@LINE]]:12: error: expected 5-bit unsigned immediate + rotr $2, $3, -1 # CHECK: :[[@LINE]]:16: error: expected 5-bit unsigned immediate rotr $2, $3, 32 # CHECK: :[[@LINE]]:16: error: expected 5-bit unsigned immediate + rotrv $9, $6, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction sdbbp16 -1 # CHECK: :[[@LINE]]:11: error: expected 4-bit unsigned immediate sdbbp16 16 # CHECK: :[[@LINE]]:11: error: expected 4-bit unsigned immediate sll $2, $3, -1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate @@ -33,3 +52,79 @@ sra $2, $3, 32 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate srl $2, $3, -1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate srl $2, $3, 32 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sync -1 # CHECK: :[[@LINE]]:8: error: expected 5-bit unsigned immediate + sync 32 # CHECK: :[[@LINE]]:8: error: expected 5-bit unsigned immediate + swe $2, -513($gp) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + swe $2, 512($gp) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + swe $33, 8($gp) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + swe $2, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sll $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sll $3, 32 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sra $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sra $3, 32 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + srl $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + lle $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lle $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lle $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lle $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lwe $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + sbe $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + sce $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + she $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lh $33, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhe $34, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhu $35, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhue $36, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lh $2, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, 8($33) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, 8($35) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, 8($37) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lh $2, -65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lh $2, 65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhe $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, -65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhu $4, 65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhue $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwp $31, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + # FIXME: This ought to point at the $34 but memory is treated as one operand. + lwp $16, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + lwp $16, 4096($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + lwp $16, 8($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + swp $31, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swp $16, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + swp $16, 4096($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + andi $3, $4, -1 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + andi $3, $4, 65536 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + andi $3, -1 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + andi $3, 65536 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + ori $3, $4, -1 # CHECK: :[[@LINE]]:15: error: expected 16-bit unsigned immediate + ori $3, $4, 65536 # CHECK: :[[@LINE]]:15: error: expected 16-bit unsigned immediate + ori $3, -1 # CHECK: :[[@LINE]]:11: error: expected 16-bit unsigned immediate + ori $3, 65536 # CHECK: :[[@LINE]]:11: error: expected 16-bit unsigned immediate + xori $3, $4, -1 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + xori $3, $4, 65536 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + xori $3, -1 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + xori $3, 65536 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + not $3, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + lb $32, 8($5) # CHECK: :[[@LINE]]:6: error: invalid operand for instruction + lb $4, -32769($5) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lb $4, 32768($5) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lb $4, 8($32) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lbu $32, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lbu $4, -32769($5) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + lbu $4, 32768($5) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + lbu $4, 8($32) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset diff --git a/test/MC/Mips/micromips32r6/invalid-wrong-error.s b/test/MC/Mips/micromips32r6/invalid-wrong-error.s new file mode 100644 index 000000000000..823d3f9a77bc --- /dev/null +++ b/test/MC/Mips/micromips32r6/invalid-wrong-error.s @@ -0,0 +1,44 @@ +# Instructions that are correctly rejected but emit a wrong or misleading error. +# RUN: not llvm-mc %s -triple=mips -show-encoding -mcpu=mips32r6 -mattr=micromips 2>%t1 +# RUN: FileCheck %s < %t1 + + + # The 10-bit immediate supported by the standard encodings cause us to emit + # the diagnostic for the 10-bit form. This isn't exactly wrong but it is + # misleading. Ideally, we'd emit every way to achieve a valid match instead + # of picking only one. + teq $8, $9, $2 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + teq $8, $9, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + teq $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tge $8, $9, $2 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tge $8, $9, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tge $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tgeu $8, $9, $2 # CHECK: :[[@LINE]]:16: error: expected 10-bit unsigned immediate + tgeu $8, $9, -1 # CHECK: :[[@LINE]]:16: error: expected 10-bit unsigned immediate + tgeu $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tlt $8, $9, $2 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tlt $8, $9, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tlt $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tltu $8, $9, $2 # CHECK: :[[@LINE]]:16: error: expected 10-bit unsigned immediate + tltu $8, $9, -1 # CHECK: :[[@LINE]]:16: error: expected 10-bit unsigned immediate + tltu $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tne $8, $9, $2 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tne $8, $9, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tne $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + syscall -1 # CHECK: :[[@LINE]]:11: error: expected 20-bit unsigned immediate + syscall $4 # CHECK: :[[@LINE]]:11: error: expected 20-bit unsigned immediate + syscall 1024 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + ldc2 $1, -2049($12) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + ldc2 $1, 2048($12) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + ldc2 $1, 1023($32) # CHECK: :[[@LINE]]:12: error: expected memory with 16-bit signed offset + lwc2 $1, -2049($4) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + lwc2 $1, 2048($4) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + lwc2 $1, 16($32) # CHECK: :[[@LINE]]:12: error: expected memory with 16-bit signed offset + sdc2 $1, -2049($16) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + sdc2 $1, 2048($16) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + sdc2 $1, 8($32) # CHECK: :[[@LINE]]:12: error: expected memory with 16-bit signed offset + swc2 $1, -2049($17) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + swc2 $1, 2048($17) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + swc2 $1, 777($32) # CHECK: :[[@LINE]]:12: error: expected memory with 16-bit signed offset + lwc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + lwc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/micromips32r6/invalid.s b/test/MC/Mips/micromips32r6/invalid.s index 41c661b04920..b3a6aac8bced 100644 --- a/test/MC/Mips/micromips32r6/invalid.s +++ b/test/MC/Mips/micromips32r6/invalid.s @@ -1,12 +1,13 @@ # RUN: not llvm-mc %s -triple=mips -show-encoding -mcpu=mips32r6 -mattr=micromips 2>%t1 # RUN: FileCheck %s < %t1 - addiur1sp $7, 260 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range - addiur1sp $7, 241 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: misaligned immediate operand value - addiur1sp $8, 240 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + addiur1sp $7, 260 # CHECK: :[[@LINE]]:17: error: expected both 8-bit unsigned immediate and multiple of 4 + addiur1sp $7, 241 # CHECK: :[[@LINE]]:17: error: expected both 8-bit unsigned immediate and multiple of 4 + addiur1sp $8, 240 # CHECK: :[[@LINE]]:13: error: invalid operand for instruction addiur2 $9, $7, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction addiur2 $6, $7, 10 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range - addius5 $7, 9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range + addius5 $2, -9 # CHECK: :[[@LINE]]:15: error: expected 4-bit signed immediate + addius5 $2, 8 # CHECK: :[[@LINE]]:15: error: expected 4-bit signed immediate addiusp 1032 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range align $4, $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 2-bit unsigned immediate align $4, $2, $3, 4 # CHECK: :[[@LINE]]:21: error: expected 2-bit unsigned immediate @@ -33,9 +34,10 @@ ins $2, $3, -1, 31 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate ins $2, $3, 32, 31 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate ei $32 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swe $33, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swe $5, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swe $5, 512($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swe $33, 8($4) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + # FIXME: This ought to point at the $34 but memory is treated as one operand. + swe $5, 8($34) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + swe $5, 512($4) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset lbu16 $9, 8($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction lbu16 $3, -2($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range lbu16 $3, -2($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range @@ -44,6 +46,8 @@ lhu16 $3, 64($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range lhu16 $3, 64($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range lhu16 $16, 4($9) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + li16 $4, -2 # CHECK: :[[@LINE]]:12: error: expected immediate in range -1 .. 126 + li16 $4, 127 # CHECK: :[[@LINE]]:12: error: expected immediate in range -1 .. 126 lsa $4, $2, $3, 0 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 4 lsa $4, $2, $3, 5 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 4 lw16 $9, 8($17) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction @@ -54,28 +58,16 @@ pref 32, 255($7) # CHECK: :[[@LINE]]:8: error: expected 5-bit unsigned immediate teq $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction teq $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - teq $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tge $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tge $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tge $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tgeu $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tgeu $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tgeu $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tlt $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tlt $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tlt $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tltu $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tltu $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tltu $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tne $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tne $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tne $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range - teq $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tge $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tgeu $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tlt $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tltu $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tne $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction wait -1 # CHECK: :[[@LINE]]:8: error: expected 10-bit unsigned immediate wait 1024 # CHECK: :[[@LINE]]:8: error: expected 10-bit unsigned immediate wrpgpr $34, $4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction @@ -107,6 +99,8 @@ sh16 $4, 68($17) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range sh16 $16, 8($17) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction sh16 $7, 8($9) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + sync -1 # CHECK: :[[@LINE]]:8: error: expected 5-bit unsigned immediate + sync 32 # CHECK: :[[@LINE]]:8: error: expected 5-bit unsigned immediate sw16 $9, 4($17) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction sw16 $4, 64($17) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range sw16 $16, 4($17) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction @@ -119,3 +113,171 @@ swm16 $16-$20, 8($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swm16 $16, $17, $ra, 8($fp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swm16 $16, $17, $ra, 64($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + mtc0 $4, $3, -1 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mtc0 $4, $3, 8 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mthc0 $4, $3, -1 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mthc0 $4, $3, 8 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mfc0 $4, $3, -1 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mfc0 $4, $3, 8 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mfhc0 $4, $3, -1 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mfhc0 $4, $3, 8 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + tlbp $3 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbp 5 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbp $4, 6 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbr $3 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbr 5 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbr $4, 6 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbwi $3 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwi 5 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwi $4, 6 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwr $3 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwr 5 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwr $4, 6 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + dvp 3 # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + dvp $4, 5 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + evp 3 # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + evp $4, 5 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + jalrc.hb $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + jalrc.hb $31, $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + sll $4, $3, -1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sll $4, $3, 32 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sra $4, $3, -1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sra $4, $3, 32 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + srl $4, $3, -1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + srl $4, $3, 32 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sll $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sll $3, 32 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sra $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sra $3, 32 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + srl $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + srl $3, 32 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + lle $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lle $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lle $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lle $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lwe $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + sbe $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + sce $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + she $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + swe $5, -513($4) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lh $33, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhe $34, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhu $35, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhue $36, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lh $2, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, 8($33) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, 8($35) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, 8($37) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lh $2, -65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lh $2, 65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhe $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, -65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhu $4, 65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhue $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwm32 $5, $6, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: $16 or $31 expected + lwm32 $16, $19, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: consecutive register numbers expected + lwm32 $16-$25, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid register operand + lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $24, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid register operand + movep $5, $6, $2, $9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + movep $5, $6, $5, $3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + movep $5, $21, $2, $3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + movep $8, $6, $2, $3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + rotr $2, -1 # CHECK: :[[@LINE]]:12: error: expected 5-bit unsigned immediate + rotr $2, 32 # CHECK: :[[@LINE]]:12: error: expected 5-bit unsigned immediate + rotr $2, $3, -1 # CHECK: :[[@LINE]]:16: error: expected 5-bit unsigned immediate + rotr $2, $3, 32 # CHECK: :[[@LINE]]:16: error: expected 5-bit unsigned immediate + rotrv $9, $6, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swm32 $5, $6, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: $16 or $31 expected + swm32 $16, $19, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: consecutive register numbers expected + swm32 $16-$25, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid register operand + lwp $31, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + # FIXME: This ought to point at the $34 but memory is treated as one operand. + lwp $16, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + lwp $16, 4096($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + lwp $16, 8($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + swp $31, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swp $16, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + swp $16, 4096($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + # bposge32 is microMIPS DSP instruction + bposge32 342 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + bc1eqzc $f32, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + bc1eqzc $f31, -65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc1eqzc $f31, -65537 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc1eqzc $f31, 65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc1eqzc $f31, 65536 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc1nezc $f32, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + bc1nezc $f31, -65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc1nezc $f31, -65537 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc1nezc $f31, 65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc1nezc $f31, 65536 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc2eqzc $32, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + bc2eqzc $31, -65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc2eqzc $31, -65537 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc2eqzc $31, 65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc2eqzc $31, 65536 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc2nezc $32, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + bc2nezc $31, -65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc2nezc $31, -65537 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc2nezc $31, 65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc2nezc $31, 65536 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + jalrc $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + jalrc $31, $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + andi $3, $4, -1 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + andi $3, $4, 65536 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + andi $3, -1 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + andi $3, 65536 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + ori $3, $4, -1 # CHECK: :[[@LINE]]:15: error: expected 16-bit unsigned immediate + ori $3, $4, 65536 # CHECK: :[[@LINE]]:15: error: expected 16-bit unsigned immediate + ori $3, -1 # CHECK: :[[@LINE]]:11: error: expected 16-bit unsigned immediate + ori $3, 65536 # CHECK: :[[@LINE]]:11: error: expected 16-bit unsigned immediate + xori $3, $4, -1 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + xori $3, $4, 65536 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + xori $3, -1 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + xori $3, 65536 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + not $3, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + lb $32, 8($5) # CHECK: :[[@LINE]]:6: error: invalid operand for instruction + lb $4, -32769($5) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lb $4, 32768($5) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lb $4, 8($32) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lbu $32, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lbu $4, -32769($5) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + lbu $4, 32768($5) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + lbu $4, 8($32) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + ldc1 $f32, 300($10) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + ldc1 $f7, -32769($10) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + ldc1 $f7, 32768($10) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + ldc1 $f7, 300($32) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + sdc1 $f32, 64($10) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + sdc1 $f7, -32769($10) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + sdc1 $f7, 32768($10) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + sdc1 $f7, 64($32) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + lwc1 $f32, 32($5) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + lwc1 $f2, -32769($5) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + lwc1 $f2, 32768($5) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + lwc1 $f2, 32($32) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + swc1 $f32, 369($13) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + swc1 $f6, -32769($13) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + swc1 $f6, 32768($13) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + swc1 $f6, 369($32) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + ldc2 $32, 1023($12) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + sdc2 $32, 8($16) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + lwc2 $32, 16($4) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + swc2 $32, 777($17) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + sdc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sdc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + swc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + swc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/micromips32r6/relocations.s b/test/MC/Mips/micromips32r6/relocations.s new file mode 100644 index 000000000000..959cdbfeac94 --- /dev/null +++ b/test/MC/Mips/micromips32r6/relocations.s @@ -0,0 +1,43 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 \ +# RUN: -mattr=micromips | FileCheck %s -check-prefix=CHECK-FIXUP +# RUN: llvm-mc %s -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r6 \ +# RUN: -mattr=micromips | llvm-readobj -r | FileCheck %s -check-prefix=CHECK-ELF +#------------------------------------------------------------------------------ +# Check that the assembler can handle the documented syntax for fixups. +#------------------------------------------------------------------------------ +# CHECK-FIXUP: balc bar # encoding: [0b101101AA,A,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar-4, kind: fixup_MICROMIPS_PC26_S1 +# CHECK-FIXUP: bc bar # encoding: [0b100101AA,A,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar-4, kind: fixup_MICROMIPS_PC26_S1 +# CHECK-FIXUP: addiupc $2, bar # encoding: [0x78,0b01000AAA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar, kind: fixup_MICROMIPS_PC19_S2 +# CHECK-FIXUP: lwpc $2, bar # encoding: [0x78,0b01001AAA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar, kind: fixup_MICROMIPS_PC19_S2 +# CHECK-FIXUP: beqzc $3, bar # encoding: [0x80,0b011AAAAA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar-4, kind: fixup_MICROMIPS_PC21_S1 +# CHECK-FIXUP: bnezc $3, bar # encoding: [0xa0,0b011AAAAA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar-4, kind: fixup_MICROMIPS_PC21_S1 +#------------------------------------------------------------------------------ +# Check that the appropriate relocations were created. +#------------------------------------------------------------------------------ +# CHECK-ELF: Relocations [ +# CHECK-ELF: 0x0 R_MICROMIPS_PC26_S1 bar 0x0 +# CHECK-ELF: 0x4 R_MICROMIPS_PC26_S1 bar 0x0 +# CHECK-ELF: 0x8 R_MICROMIPS_PC19_S2 bar 0x0 +# CHECK-ELF: 0xC R_MICROMIPS_PC19_S2 bar 0x0 +# CHECK-ELF: 0x10 R_MICROMIPS_PC21_S1 bar 0x0 +# CHECK-ELF: 0x14 R_MICROMIPS_PC21_S1 bar 0x0 +# CHECK-ELF: ] + + balc bar + bc bar + addiupc $2,bar + lwpc $2,bar + beqzc $3, bar + bnezc $3, bar diff --git a/test/MC/Mips/micromips32r6/valid.s b/test/MC/Mips/micromips32r6/valid.s index 62048a91163d..faf0818b801c 100644 --- a/test/MC/Mips/micromips32r6/valid.s +++ b/test/MC/Mips/micromips32r6/valid.s @@ -20,12 +20,20 @@ auipc $3, -1 # CHECK: auipc $3, -1 # encoding: [0x78,0x7e,0xff,0xff] align $4, $2, $3, 2 # CHECK: align $4, $2, $3, 2 # encoding: [0x00,0x43,0x24,0x1f] aui $3,$2,-23 # CHECK: aui $3, $2, -23 # encoding: [0x10,0x62,0xff,0xe9] + beqc $3,$4, 16 # CHECK: beqc $3, $4, 16 # encoding: [0x74,0x83,0x00,0x08] + bgec $3,$4, 16 # CHECK: bgec $3, $4, 16 # encoding: [0xe4,0x83,0x00,0x08] + bgeuc $3,$4, 16 # CHECK: bgeuc $3, $4, 16 # encoding: [0xc0,0x83,0x00,0x08] + bltc $3,$4, 16 # CHECK: bltc $3, $4, 16 # encoding: [0xc4,0x83,0x00,0x08] + bltuc $3,$4, 16 # CHECK: bltuc $3, $4, 16 # encoding: [0xe0,0x83,0x00,0x08] + bnec $3,$4, 16 # CHECK: bnec $3, $4, 16 # encoding: [0x7c,0x83,0x00,0x08] beqzalc $2, 1332 # CHECK: beqzalc $2, 1332 # encoding: [0x74,0x40,0x02,0x9a] bnezalc $2, 1332 # CHECK: bnezalc $2, 1332 # encoding: [0x7c,0x40,0x02,0x9a] bgezalc $2, 1332 # CHECK: bgezalc $2, 1332 # encoding: [0xc0,0x42,0x02,0x9a] bgtzalc $2, 1332 # CHECK: bgtzalc $2, 1332 # encoding: [0xe0,0x40,0x02,0x9a] bltzalc $2, 1332 # CHECK: bltzalc $2, 1332 # encoding: [0xe0,0x42,0x02,0x9a] blezalc $2, 1332 # CHECK: blezalc $2, 1332 # encoding: [0xc0,0x40,0x02,0x9a] + beqzc $3, 64 # CHECK: beqzc $3, 64 # encoding: [0x80,0x60,0x00,0x20] + bnezc $3, 64 # CHECK: bnezc $3, 64 # encoding: [0xa0,0x60,0x00,0x20] balc 7286128 # CHECK: balc 7286128 # encoding: [0xb4,0x37,0x96,0xb8] b 132 # CHECK: bc16 132 # encoding: [0xcc,0x42] bc 7286128 # CHECK: bc 7286128 # encoding: [0x94,0x37,0x96,0xb8] @@ -55,10 +63,36 @@ jic $5, 256 # CHECK: jic $5, 256 # encoding: [0xa0,0x05,0x01,0x00] jrc16 $9 # CHECK: jrc16 $9 # encoding: [0x45,0x23] jrcaddiusp 20 # CHECK: jrcaddiusp 20 # encoding: [0x44,0xb3] + lh $2, 8($4) # CHECK: lh $2, 8($4) # encoding: [0x3c,0x44,0x00,0x08] + lhe $4, 8($2) # CHECK: lhe $4, 8($2) # encoding: [0x60,0x82,0x6a,0x08] + lhu $4, 8($2) # CHECK: lhu $4, 8($2) # encoding: [0x34,0x82,0x00,0x08] + lhue $4, 8($2) # CHECK: lhue $4, 8($2) # encoding: [0x60,0x82,0x62,0x08] lsa $2, $3, $4, 3 # CHECK: lsa $2, $3, $4, 3 # encoding: [0x00,0x43,0x24,0x0f] lwpc $2,268 # CHECK: lwpc $2, 268 # encoding: [0x78,0x48,0x00,0x43] lwm $16, $17, $ra, 8($sp) # CHECK: lwm16 $16, $17, $ra, 8($sp) # encoding: [0x45,0x22] lwm16 $16, $17, $ra, 8($sp) # CHECK: lwm16 $16, $17, $ra, 8($sp) # encoding: [0x45,0x22] + ll $2, 8($4) # CHECK: ll $2, 8($4) # encoding: [0x60,0x44,0x30,0x08] + lwm32 $16, $17, 8($4) # CHECK: lwm32 $16, $17, 8($4) # encoding: [0x20,0x44,0x50,0x08] + lwm32 $16, $17, 8($sp) # CHECK: lwm32 $16, $17, 8($sp) # encoding: [0x20,0x5d,0x50,0x08] + lwm32 $16, $17, $ra, 8($4) # CHECK: lwm32 $16, $17, $ra, 8($4) # encoding: [0x22,0x44,0x50,0x08] + lwm32 $16, $17, $ra, 64($sp) # CHECK: lwm32 $16, $17, $ra, 64($sp) # encoding: [0x22,0x5d,0x50,0x40] + lwm32 $16, $17, $18, $19, 8($4) # CHECK: lwm32 $16, $17, $18, $19, 8($4) # encoding: [0x20,0x84,0x50,0x08] + lwm32 $16, $17, $18, $19, $ra, 8($4) # CHECK: lwm32 $16, $17, $18, $19, $ra, 8($4) # encoding: [0x22,0x84,0x50,0x08] + lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, 8($4) # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, 8($4) # encoding: [0x21,0x24,0x50,0x08] + lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # encoding: [0x23,0x24,0x50,0x08] + lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # encoding: [0x23,0x24,0x50,0x08] + movep $5, $6, $2, $3 # CHECK: movep $5, $6, $2, $3 # encoding: [0x84,0x34] + rotr $2, 7 # CHECK: rotr $2, $2, 7 # encoding: [0x00,0x42,0x38,0xc0] + rotr $9, $6, 7 # CHECK: rotr $9, $6, 7 # encoding: [0x01,0x26,0x38,0xc0] + rotrv $9, $6, $7 # CHECK: rotrv $9, $6, $7 # encoding: [0x00,0xc7,0x48,0xd0] + sc $2, 8($4) # CHECK: sc $2, 8($4) # encoding: [0x60,0x44,0xb0,0x08] + swm32 $16, $17, 8($4) # CHECK: swm32 $16, $17, 8($4) # encoding: [0x20,0x44,0xd0,0x08] + swm32 $16, $17, 8($sp) # CHECK: swm32 $16, $17, 8($sp) # encoding: [0x20,0x5d,0xd0,0x08] + swm32 $16, $17, $ra, 8($4) # CHECK: swm32 $16, $17, $ra, 8($4) # encoding: [0x22,0x44,0xd0,0x08] + swm32 $16, $17, $ra, 64($sp) # CHECK: swm32 $16, $17, $ra, 64($sp) # encoding: [0x22,0x5d,0xd0,0x40] + swm32 $16, $17, $18, $19, 8($4) # CHECK: swm32 $16, $17, $18, $19, 8($4) # encoding: [0x20,0x84,0xd0,0x08] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x8b,0x7c] + syscall 396 # CHECK: syscall 396 # encoding: [0x01,0x8c,0x8b,0x7c] mod $3, $4, $5 # CHECK: mod $3, $4, $5 # encoding: [0x00,0xa4,0x19,0x58] modu $3, $4, $5 # CHECK: modu $3, $4, $5 # encoding: [0x00,0xa4,0x19,0xd8] mul $3, $4, $5 # CHECK mul $3, $4, $5 # encoding: [0x00,0xa4,0x18,0x18] @@ -80,6 +114,7 @@ sub $3, $4, $5 # CHECK: sub $3, $4, $5 # encoding: [0x00,0xa4,0x19,0x90] subu $3, $4, $5 # CHECK: subu $3, $4, $5 # encoding: [0x00,0xa4,0x19,0xd0] sw $4, 124($sp) # CHECK: sw $4, 124($sp) # encoding: [0xc8,0x9f] + sw $4, 128($sp) # CHECK: sw $4, 128($sp) # encoding: [0xf8,0x9d,0x00,0x80] sw16 $4, 4($17) # CHECK: sw16 $4, 4($17) # encoding: [0xea,0x11] sw16 $0, 4($17) # CHECK: sw16 $zero, 4($17) # encoding: [0xe8,0x11] swm $16, $17, $ra, 8($sp) # CHECK: swm16 $16, $17, $ra, 8($sp) # encoding: [0x45,0x2a] @@ -187,8 +222,14 @@ sqrt.d $f2, $f4 # CHECK: sqrt.d $f2, $f4 # encoding: [0x54,0x44,0x4a,0x3b] rsqrt.s $f3, $f5 # CHECK: rsqrt.s $f3, $f5 # encoding: [0x54,0x65,0x02,0x3b] rsqrt.d $f2, $f4 # CHECK: rsqrt.d $f2, $f4 # encoding: [0x54,0x44,0x42,0x3b] + lw $3, -260($gp) # CHECK: lw $3, -260($gp) # encoding: [0xfc,0x7c,0xfe,0xfc] + lw $3, -256($gp) # CHECK: lw $3, -256($gp) # encoding: [0x65,0xc0] lw $3, 32($gp) # CHECK: lw $3, 32($gp) # encoding: [0x65,0x88] + lw $3, 252($gp) # CHECK: lw $3, 252($gp) # encoding: [0x65,0xbf] + lw $3, 256($gp) # CHECK: lw $3, 256($gp) # encoding: [0xfc,0x7c,0x01,0x00] lw $3, 24($sp) # CHECK: lw $3, 24($sp) # encoding: [0x48,0x66] + lw $3, 124($sp) # CHECK: lw $3, 124($sp) # encoding: [0x48,0x7f] + lw $3, 128($sp) # CHECK: lw $3, 128($sp) # encoding: [0xfc,0x7d,0x00,0x80] lw16 $4, 8($17) # CHECK: lw16 $4, 8($17) # encoding: [0x6a,0x12] lhu16 $3, 4($16) # CHECK: lhu16 $3, 4($16) # encoding: [0x29,0x82] lbu16 $3, 4($17) # CHECK: lbu16 $3, 4($17) # encoding: [0x09,0x94] @@ -250,3 +291,76 @@ class.s $f2, $f3 # CHECK: class.s $f2, $f3 # encoding: [0x54,0x62,0x00,0x60] class.d $f2, $f4 # CHECK: class.d $f2, $f4 # encoding: [0x54,0x82,0x02,0x60] deret # CHECK: deret # encoding: [0x00,0x00,0xe3,0x7c] + tlbinv # CHECK: tlbinv # encoding: [0x00,0x00,0x43,0x7c] + tlbinvf # CHECK: tlbinvf # encoding: [0x00,0x00,0x53,0x7c] + mtc0 $5, $9 # CHECK: mtc0 $5, $9, 0 # encoding: [0x00,0xa9,0x02,0xfc] + mtc0 $1, $2, 7 # CHECK: mtc0 $1, $2, 7 # encoding: [0x00,0x22,0x3a,0xfc] + mtc1 $3, $f4 # CHECK: mtc1 $3, $f4 # encoding: [0x54,0x64,0x28,0x3b] + mtc2 $5, $6 # CHECK: mtc2 $5, $6 # encoding: [0x00,0xa6,0x5d,0x3c] + mthc0 $7, $8 # CHECK: mthc0 $7, $8, 0 # encoding: [0x00,0xe8,0x02,0xf4] + mthc0 $9, $10, 1 # CHECK: mthc0 $9, $10, 1 # encoding: [0x01,0x2a,0x0a,0xf4] + mthc1 $11, $f12 # CHECK: mthc1 $11, $f12 # encoding: [0x55,0x6c,0x38,0x3b] + mthc2 $13, $14 # CHECK: mthc2 $13, $14 # encoding: [0x01,0xae,0x9d,0x3c] + mfc0 $3, $7 # CHECK: mfc0 $3, $7, 0 # encoding: [0x00,0x67,0x00,0xfc] + mfc0 $3, $7, 3 # CHECK: mfc0 $3, $7, 3 # encoding: [0x00,0x67,0x18,0xfc] + mfc1 $5, $f10 # CHECK: mfc1 $5, $f10 # encoding: [0x54,0xaa,0x20,0x3b] + mfc2 $15, $5 # CHECK: mfc2 $15, $5 # encoding: [0x01,0xe5,0x4d,0x3c] + mfhc0 $20, $21 # CHECK: mfhc0 $20, $21, 0 # encoding: [0x02,0x95,0x00,0xf4] + mfhc0 $1, $2, 1 # CHECK: mfhc0 $1, $2, 1 # encoding: [0x00,0x22,0x08,0xf4] + mfhc1 $zero, $f6 # CHECK: mfhc1 $zero, $f6 # encoding: [0x54,0x06,0x30,0x3b] + mfhc2 $23, $16 # CHECK: mfhc2 $23, $16 # encoding: [0x02,0xf0,0x8d,0x3c] + tlbp # CHECK: tlbp # encoding: [0x00,0x00,0x03,0x7c] + tlbr # CHECK: tlbr # encoding: [0x00,0x00,0x13,0x7c] + tlbwi # CHECK: tlbwi # encoding: [0x00,0x00,0x23,0x7c] + tlbwr # CHECK: tlbwr # encoding: [0x00,0x00,0x33,0x7c] + dvp # CHECK: dvp $zero # encoding: [0x00,0x00,0x19,0x7c] + dvp $4 # CHECK: dvp $4 # encoding: [0x00,0x04,0x19,0x7c] + evp # CHECK: evp $zero # encoding: [0x00,0x00,0x39,0x7c] + evp $4 # CHECK: evp $4 # encoding: [0x00,0x04,0x39,0x7c] + jalrc.hb $4 # CHECK: jalrc.hb $4 # encoding: [0x03,0xe4,0x1f,0x3c] + jalrc.hb $4, $5 # CHECK: jalrc.hb $4, $5 # encoding: [0x00,0x85,0x1f,0x3c] + sllv $2, $3, $5 # CHECK: sllv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x10] + sra $4, $3, 7 # CHECK: sra $4, $3, 7 # encoding: [0x00,0x83,0x38,0x80] + srav $2, $3, $5 # CHECK: srav $2, $3, $5 # encoding: [0x00,0x65,0x10,0x90] + srl $4, $3, 7 # CHECK: srl $4, $3, 7 # encoding: [0x00,0x83,0x38,0x40] + srlv $2, $3, $5 # CHECK: srlv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x50] + sll $2, $3, $5 # CHECK: sllv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x10] + sra $2, $3, $5 # CHECK: srav $2, $3, $5 # encoding: [0x00,0x65,0x10,0x90] + srl $2, $3, $5 # CHECK: srlv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x50] + sll $2, $3 # CHECK: sllv $2, $2, $3 # encoding: [0x00,0x43,0x10,0x10] + sra $2, $3 # CHECK: srav $2, $2, $3 # encoding: [0x00,0x43,0x10,0x90] + srl $2, $3 # CHECK: srlv $2, $2, $3 # encoding: [0x00,0x43,0x10,0x50] + sll $3, 7 # CHECK: sll $3, $3, 7 # encoding: [0x00,0x63,0x38,0x00] + sra $3, 7 # CHECK: sra $3, $3, 7 # encoding: [0x00,0x63,0x38,0x80] + srl $3, 7 # CHECK: srl $3, $3, 7 # encoding: [0x00,0x63,0x38,0x40] + lwp $16, 8($4) # CHECK: lwp $16, 8($4) # encoding: [0x22,0x04,0x10,0x08] + swp $16, 8($4) # CHECK: swp $16, 8($4) # encoding: [0x22,0x04,0x90,0x08] + bc1eqzc $f31, 4 # CHECK: bc1eqzc $f31, 4 # encoding: [0x41,0x1f,0x00,0x02] + bc1nezc $f31, 4 # CHECK: bc1nezc $f31, 4 # encoding: [0x41,0x3f,0x00,0x02] + bc2eqzc $31, 8 # CHECK: bc2eqzc $31, 8 # encoding: [0x41,0x5f,0x00,0x04] + bc2nezc $31, 8 # CHECK: bc2nezc $31, 8 # encoding: [0x41,0x7f,0x00,0x04] + ins $9, $6, 3, 7 # CHECK: ins $9, $6, 3, 7 # encoding: [0x01,0x26,0x48,0xcc] + jalrc $4, $5 # CHECK: jalrc $4, $5 # encoding: [0x00,0x85,0x0f,0x3c] + jalrc $5 # CHECK: jalrc $5 # encoding: [0x03,0xe5,0x0f,0x3c] + ext $9, $6, 3, 7 # CHECK: ext $9, $6, 3, 7 # encoding: [0x01,0x26,0x30,0xec] + bovc $2, $4, 24 # CHECK: bovc $2, $4, 24 # encoding: [0x74,0x44,0x00,0x0c] + bovc $4, $2, 24 # CHECK: bovc $4, $2, 24 # encoding: [0x74,0x44,0x00,0x0c] + bnvc $2, $4, 24 # CHECK: bnvc $2, $4, 24 # encoding: [0x7c,0x44,0x00,0x0c] + bnvc $4, $2, 24 # CHECK: bnvc $4, $2, 24 # encoding: [0x7c,0x44,0x00,0x0c] + and $3, 5 # CHECK: andi $3, $3, 5 # encoding: [0xd0,0x63,0x00,0x05] + and $3, $4, 5 # CHECK: andi $3, $4, 5 # encoding: [0xd0,0x64,0x00,0x05] + not $3, $4 # CHECK: not $3, $4 # encoding: [0x00,0x04,0x1a,0xd0] + or $3, 5 # CHECK: ori $3, $3, 5 # encoding: [0x50,0x63,0x00,0x05] + or $3, $4, 5 # CHECK: ori $3, $4, 5 # encoding: [0x50,0x64,0x00,0x05] + xor $3, 5 # CHECK: xori $3, $3, 5 # encoding: [0x70,0x63,0x00,0x05] + xor $3, $4, 5 # CHECK: xori $3, $4, 5 # encoding: [0x70,0x64,0x00,0x05] + ldc1 $f7, 300($10) # CHECK: ldc1 $f7, 300($10) # encoding: [0xbc,0xea,0x01,0x2c] + ldc1 $f8, 300($10) # CHECK: ldc1 $f8, 300($10) # encoding: [0xbd,0x0a,0x01,0x2c] + ldc2 $11, 1023($12) # CHECK: ldc2 $11, 1023($12) # encoding: [0x21,0x6c,0x23,0xff] + lwc1 $f2, 32($5) # CHECK: lwc1 $f2, 32($5) # encoding: [0x9c,0x45,0x00,0x20] + lwc2 $1, 16($4) # CHECK: lwc2 $1, 16($4) # encoding: [0x20,0x24,0x00,0x10] + sdc1 $f7, 64($10) # CHECK: sdc1 $f7, 64($10) # encoding: [0xb8,0xea,0x00,0x40] + sdc1 $f8, 64($10) # CHECK: sdc1 $f8, 64($10) # encoding: [0xb9,0x0a,0x00,0x40] + sdc2 $2, 8($16) # CHECK: sdc2 $2, 8($16) # encoding: [0x20,0x50,0xa0,0x08] + swc1 $f6, 369($13) # CHECK: swc1 $f6, 369($13) # encoding: [0x98,0xcd,0x01,0x71] + swc2 $7, 777($17) # CHECK: swc2 $7, 777($17) # encoding: [0x20,0xf1,0x83,0x09] diff --git a/test/MC/Mips/micromips64r6/invalid-wrong-error.s b/test/MC/Mips/micromips64r6/invalid-wrong-error.s new file mode 100644 index 000000000000..977a2d031f23 --- /dev/null +++ b/test/MC/Mips/micromips64r6/invalid-wrong-error.s @@ -0,0 +1,52 @@ +# Instructions that are correctly rejected but emit a wrong or misleading error. +# RUN: not llvm-mc %s -triple=mips -show-encoding -mcpu=mips64r6 -mattr=micromips 2>%t1 +# RUN: FileCheck %s < %t1 + + + # The LLD instruction with invalid memory operand should emit "expected memory with 12-bit signed offset". + lld $31, 4096($31) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + lld $31, 2048($31) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + lld $31, -2049($31) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + # The LWU instruction with invalid memory operand should emit "expected memory with 12-bit signed offset". + lwu $31, 4096($31) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + lwu $31, 2048($31) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + lwu $31, -2049($31) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + # The 10-bit immediate supported by the standard encodings cause us to emit + # the diagnostic for the 10-bit form. This isn't exactly wrong but it is + # misleading. Ideally, we'd emit every way to achieve a valid match instead + # of picking only one. + teq $8, $9, $2 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + teq $8, $9, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + teq $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tge $8, $9, $2 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tge $8, $9, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tge $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tgeu $8, $9, $2 # CHECK: :[[@LINE]]:16: error: expected 10-bit unsigned immediate + tgeu $8, $9, -1 # CHECK: :[[@LINE]]:16: error: expected 10-bit unsigned immediate + tgeu $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tlt $8, $9, $2 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tlt $8, $9, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tlt $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tltu $8, $9, $2 # CHECK: :[[@LINE]]:16: error: expected 10-bit unsigned immediate + tltu $8, $9, -1 # CHECK: :[[@LINE]]:16: error: expected 10-bit unsigned immediate + tltu $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + tne $8, $9, $2 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tne $8, $9, -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate + tne $8, $9, 16 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + dins $2, $3, -1, 1 # CHECK: :[[@LINE]]:16: error: expected 6-bit unsigned immediate + dins $2, $3, 32, 1 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + syscall -1 # CHECK: :[[@LINE]]:11: error: expected 20-bit unsigned immediate + syscall $4 # CHECK: :[[@LINE]]:11: error: expected 20-bit unsigned immediate + syscall 1024 # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + ldc2 $1, -2049($12) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + ldc2 $1, 2048($12) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + ldc2 $1, 1023($32) # CHECK: :[[@LINE]]:12: error: expected memory with 16-bit signed offset + lwc2 $1, -2049($4) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + lwc2 $1, 2048($4) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + lwc2 $1, 16($32) # CHECK: :[[@LINE]]:12: error: expected memory with 16-bit signed offset + sdc2 $1, -2049($16) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + sdc2 $1, 2048($16) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + sdc2 $1, 8($32) # CHECK: :[[@LINE]]:12: error: expected memory with 16-bit signed offset + swc2 $1, -2049($17) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + swc2 $1, 2048($17) # CHECK: :[[@LINE]]:3: error: instruction requires a CPU feature not currently enabled + swc2 $1, 777($32) # CHECK: :[[@LINE]]:12: error: expected memory with 16-bit signed offset diff --git a/test/MC/Mips/micromips64r6/invalid.s b/test/MC/Mips/micromips64r6/invalid.s index df1005dfa0b1..356ff9bbc10c 100644 --- a/test/MC/Mips/micromips64r6/invalid.s +++ b/test/MC/Mips/micromips64r6/invalid.s @@ -1,12 +1,13 @@ # RUN: not llvm-mc %s -triple=mips -show-encoding -mcpu=mips64r6 -mattr=micromips 2>%t1 # RUN: FileCheck %s < %t1 - addiur1sp $7, 260 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range - addiur1sp $7, 241 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: misaligned immediate operand value - addiur1sp $8, 240 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + addiur1sp $7, 260 # CHECK: :[[@LINE]]:17: error: expected both 8-bit unsigned immediate and multiple of 4 + addiur1sp $7, 241 # CHECK: :[[@LINE]]:17: error: expected both 8-bit unsigned immediate and multiple of 4 + addiur1sp $8, 240 # CHECK: :[[@LINE]]:13: error: invalid operand for instruction addiur2 $9, $7, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction addiur2 $6, $7, 10 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range - addius5 $7, 9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range + addius5 $2, -9 # CHECK: :[[@LINE]]:15: error: expected 4-bit signed immediate + addius5 $2, 8 # CHECK: :[[@LINE]]:15: error: expected 4-bit signed immediate addiusp 1032 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range align $4, $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 2-bit unsigned immediate align $4, $2, $3, 4 # CHECK: :[[@LINE]]:21: error: expected 2-bit unsigned immediate @@ -19,8 +20,8 @@ cache -1, 255($7) # CHECK: :[[@LINE]]:9: error: expected 5-bit unsigned immediate cache 32, 255($7) # CHECK: :[[@LINE]]:9: error: expected 5-bit unsigned immediate # FIXME: Check various 'pos + size' constraints on dext* - dext $2, $3, -1, 1 # CHECK: :[[@LINE]]:16: error: expected 5-bit unsigned immediate - dext $2, $3, 32, 1 # CHECK: :[[@LINE]]:16: error: expected 5-bit unsigned immediate + dext $2, $3, -1, 1 # CHECK: :[[@LINE]]:16: error: expected 6-bit unsigned immediate + dext $2, $3, 64, 1 # CHECK: :[[@LINE]]:16: error: expected 6-bit unsigned immediate dext $2, $3, 1, 0 # CHECK: :[[@LINE]]:19: error: expected immediate in range 1 .. 32 dext $2, $3, 1, 33 # CHECK: :[[@LINE]]:19: error: expected immediate in range 1 .. 32 dextm $2, $3, -1, 1 # CHECK: :[[@LINE]]:17: error: expected 5-bit unsigned immediate @@ -33,13 +34,17 @@ dextu $2, $3, 64, 1 # CHECK: :[[@LINE]]:17: error: expected immediate in range 32 .. 63 dextu $2, $3, 32, 0 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 32 dextu $2, $3, 32, 33 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 32 - # FIXME: Check size on dins* - dins $2, $3, -1, 1 # CHECK: :[[@LINE]]:16: error: expected 6-bit unsigned immediate - dins $2, $3, 64, 1 # CHECK: :[[@LINE]]:16: error: expected 6-bit unsigned immediate + dins $2, $3, 31, 33 # CHECK: :[[@LINE]]:20: error: expected immediate in range 1 .. 32 + dins $2, $3, 31, 0 # CHECK: :[[@LINE]]:20: error: expected immediate in range 1 .. 32 + # FIXME: Check '32 <= pos + size <= 64' constraint on dinsm dinsm $2, $3, -1, 1 # CHECK: :[[@LINE]]:17: error: expected 5-bit unsigned immediate dinsm $2, $3, 32, 1 # CHECK: :[[@LINE]]:17: error: expected 5-bit unsigned immediate + dinsm $2, $3, 31, 0 # CHECK: :[[@LINE]]:21: error: expected immediate in range 2 .. 64 + dinsm $2, $3, 31, 65 # CHECK: :[[@LINE]]:21: error: expected immediate in range 2 .. 64 dinsu $2, $3, 31, 1 # CHECK: :[[@LINE]]:17: error: expected immediate in range 32 .. 63 dinsu $2, $3, 64, 1 # CHECK: :[[@LINE]]:17: error: expected immediate in range 32 .. 63 + dinsu $2, $3, 63, 0 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 32 + dinsu $2, $3, 32, 33 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 32 # FIXME: Check '0 < pos + size <= 32' constraint on ext ext $2, $3, -1, 31 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate ext $2, $3, 32, 31 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate @@ -57,6 +62,8 @@ lhu16 $3, 64($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range lhu16 $3, 64($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range lhu16 $16, 4($9) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + li16 $4, -2 # CHECK: :[[@LINE]]:12: error: expected immediate in range -1 .. 126 + li16 $4, 127 # CHECK: :[[@LINE]]:12: error: expected immediate in range -1 .. 126 lsa $4, $2, $3, 0 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 4 lsa $4, $2, $3, 5 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 4 lw16 $9, 8($17) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction @@ -79,28 +86,16 @@ pref 32, 255($7) # CHECK: :[[@LINE]]:8: error: expected 5-bit unsigned immediate teq $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction teq $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - teq $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tge $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tge $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tge $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tgeu $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tgeu $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tgeu $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tlt $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tlt $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tlt $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tltu $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tltu $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tltu $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range tne $34, $9, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction tne $8, $35, 6 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tne $8, $9, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: immediate operand value out of range - teq $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tge $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tgeu $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tlt $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tltu $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - tne $8, $9, $2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction wrpgpr $34, $4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction wrpgpr $3, $33 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction wsbh $34, $4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction @@ -143,3 +138,190 @@ swm16 $16-$20, 8($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swm16 $16, $17, $ra, 8($fp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swm16 $16, $17, $ra, 64($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + mtc0 $4, $3, -1 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mtc0 $4, $3, 8 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mthc0 $4, $3, -1 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + mthc0 $4, $3, 8 # CHECK: :[[@LINE]]:17: error: expected 3-bit unsigned immediate + dmtc0 $4, $3, -1 # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate + dmtc0 $4, $3, 8 # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate + dmfc0 $4, $3, -1 # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate + dmfc0 $4, $3, 8 # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate + tlbp $3 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbp 5 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbp $4, 6 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbr $3 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbr 5 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbr $4, 6 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + tlbwi $3 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwi 5 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwi $4, 6 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwr $3 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwr 5 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + tlbwr $4, 6 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + dvp 3 # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + dvp $4, 5 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + evp 3 # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + evp $4, 5 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + jalrc.hb $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + jalrc.hb $31, $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + sll $4, $3, -1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sll $4, $3, 32 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sra $4, $3, -1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sra $4, $3, 32 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + srl $4, $3, -1 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + srl $4, $3, 32 # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate + sll $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sll $3, 32 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sra $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + sra $3, 32 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + srl $3, -1 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + srl $3, 32 # CHECK: :[[@LINE]]:11: error: expected 5-bit unsigned immediate + dneg $7, 5 # CHECK: :[[@LINE]]:12: error: invalid operand for instruction + dneg 4 # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + dnegu $1, 3 # CHECK: :[[@LINE]]:13: error: invalid operand for instruction + dnegu 7 # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + lle $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lle $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lle $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lle $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lwe $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lwe $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + sbe $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sbe $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + sce $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + sce $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $33, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + she $4, 8($33) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $4, 512($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + she $4, -513($5) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + swe $33, 8($4) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + swe $5, 8($34) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + swe $5, 512($4) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + swe $5, -513($4) # CHECK: :[[@LINE]]:11: error: expected memory with 9-bit signed offset + lh $33, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhe $34, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhu $35, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhue $36, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lh $2, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, 8($33) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, 8($35) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, 8($37) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lh $2, -65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lh $2, 65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhe $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, -65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhu $4, 65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhue $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwm32 $5, $6, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: $16 or $31 expected + lwm32 $16, $19, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: consecutive register numbers expected + lwm32 $16-$25, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid register operand + lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $24, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid register operand + movep $5, $6, $2, $9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + movep $5, $6, $5, $3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + movep $5, $21, $2, $3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + movep $8, $6, $2, $3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + rotr $2, -1 # CHECK: :[[@LINE]]:12: error: expected 5-bit unsigned immediate + rotr $2, 32 # CHECK: :[[@LINE]]:12: error: expected 5-bit unsigned immediate + rotr $2, $3, -1 # CHECK: :[[@LINE]]:16: error: expected 5-bit unsigned immediate + rotr $2, $3, 32 # CHECK: :[[@LINE]]:16: error: expected 5-bit unsigned immediate + rotrv $9, $6, 5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swm32 $5, $6, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: $16 or $31 expected + swm32 $16, $19, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: consecutive register numbers expected + swm32 $16-$25, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid register operand + lwp $31, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + # FIXME: This ought to point at the $34 but memory is treated as one operand. + lwp $16, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + lwp $16, 4096($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + lwp $16, 8($16) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + swp $31, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + swp $16, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + swp $16, 4096($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 12-bit signed offset + dsll $3, $4, 64 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 6-bit unsigned immediate + dsll $3, $4, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 6-bit unsigned immediate + dsll32 $3, $4, 32 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 5-bit unsigned immediate + dsll32 $3, $4, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 5-bit unsigned immediate + dsra $4, $5, 64 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 6-bit unsigned immediate + dsra $4, $5, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 6-bit unsigned immediate + dsra32 $4, $5, 32 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 5-bit unsigned immediate + dsra32 $4, $5, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 5-bit unsigned immediate + # bposge32 is microMIPS DSP instruction + bposge32 342 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + bc1eqzc $f32, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + bc1eqzc $f31, -65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc1eqzc $f31, -65537 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc1eqzc $f31, 65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc1eqzc $f31, 65536 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc1nezc $f32, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + bc1nezc $f31, -65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc1nezc $f31, -65537 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc1nezc $f31, 65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc1nezc $f31, 65536 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc2eqzc $32, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + bc2eqzc $31, -65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc2eqzc $31, -65537 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc2eqzc $31, 65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc2eqzc $31, 65536 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc2nezc $32, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + bc2nezc $31, -65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc2nezc $31, -65537 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + bc2nezc $31, 65535 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch to misaligned address + bc2nezc $31, 65536 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: branch target out of range + andi $3, $4, -1 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + andi $3, $4, 65536 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + andi $3, -1 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + andi $3, 65536 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + ori $3, $4, -1 # CHECK: :[[@LINE]]:15: error: expected 16-bit unsigned immediate + ori $3, $4, 65536 # CHECK: :[[@LINE]]:15: error: expected 16-bit unsigned immediate + ori $3, -1 # CHECK: :[[@LINE]]:11: error: expected 16-bit unsigned immediate + ori $3, 65536 # CHECK: :[[@LINE]]:11: error: expected 16-bit unsigned immediate + xori $3, $4, -1 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + xori $3, $4, 65536 # CHECK: :[[@LINE]]:16: error: expected 16-bit unsigned immediate + xori $3, -1 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + xori $3, 65536 # CHECK: :[[@LINE]]:12: error: expected 16-bit unsigned immediate + not $3, 4 # CHECK: :[[@LINE]]:11: error: invalid operand for instruction + drotr $5, $10, 64 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 6-bit unsigned immediate + drotr $5, $10, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 6-bit unsigned immediate + drotr32 $1, $2, 32 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 5-bit unsigned immediate + drotr32 $1, $2, -1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 5-bit unsigned immediate + ld $31, 65536($31) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + ld $31, 32768($31) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + ld $31, -32769($31) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + sd $31, 65536($31) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + sd $31, 32768($31) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + sd $31, -32769($31) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + lb $32, 8($5) # CHECK: :[[@LINE]]:6: error: invalid operand for instruction + lb $4, -32769($5) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lb $4, 32768($5) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lb $4, 8($32) # CHECK: :[[@LINE]]:10: error: expected memory with 16-bit signed offset + lbu $32, 8($5) # CHECK: :[[@LINE]]:7: error: invalid operand for instruction + lbu $4, -32769($5) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + lbu $4, 32768($5) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + lbu $4, 8($32) # CHECK: :[[@LINE]]:11: error: expected memory with 16-bit signed offset + ldc1 $f32, 300($10) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + ldc1 $f7, -32769($10) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + ldc1 $f7, 32768($10) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + ldc1 $f7, 300($32) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + sdc1 $f32, 64($10) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + sdc1 $f7, -32769($10) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + sdc1 $f7, 32768($10) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + sdc1 $f7, 64($32) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + lwc1 $f32, 32($5) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + lwc1 $f2, -32769($5) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + lwc1 $f2, 32768($5) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + lwc1 $f2, 32($32) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + swc1 $f32, 369($13) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + swc1 $f6, -32769($13) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + swc1 $f6, 32768($13) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + swc1 $f6, 369($32) # CHECK: :[[@LINE]]:13: error: expected memory with 16-bit signed offset + ldc2 $32, 1023($12) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + sdc2 $32, 8($16) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + lwc2 $32, 16($4) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction + swc2 $32, 777($17) # CHECK: :[[@LINE]]:8: error: invalid operand for instruction diff --git a/test/MC/Mips/micromips64r6/relocations.s b/test/MC/Mips/micromips64r6/relocations.s new file mode 100644 index 000000000000..18fa26b4e94f --- /dev/null +++ b/test/MC/Mips/micromips64r6/relocations.s @@ -0,0 +1,48 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64r6 \ +# RUN: -mattr=micromips | FileCheck %s -check-prefix=CHECK-FIXUP +# RUN: llvm-mc %s -filetype=obj -triple=mips-unknown-linux -mcpu=mips64r6 \ +# RUN: -mattr=micromips | llvm-readobj -r | FileCheck %s -check-prefix=CHECK-ELF +#------------------------------------------------------------------------------ +# Check that the assembler can handle the documented syntax for fixups. +#------------------------------------------------------------------------------ +# CHECK-FIXUP: balc bar # encoding: [0b101101AA,A,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar-4, kind: fixup_MICROMIPS_PC26_S1 +# CHECK-FIXUP: bc bar # encoding: [0b100101AA,A,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar-4, kind: fixup_MICROMIPS_PC26_S1 +# CHECK-FIXUP: addiupc $2, bar # encoding: [0x78,0b01000AAA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar, kind: fixup_MICROMIPS_PC19_S2 +# CHECK-FIXUP: lwpc $2, bar # encoding: [0x78,0b01001AAA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar, kind: fixup_MICROMIPS_PC19_S2 +# CHECK-FIXUP: ldpc $2, bar # encoding: [0x78,0b010110AA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar, kind: fixup_MICROMIPS_PC18_S3 +# CHECK-FIXUP: beqzc $3, bar # encoding: [0x80,0b011AAAAA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar-4, kind: fixup_MICROMIPS_PC21_S1 +# CHECK-FIXUP: bnezc $3, bar # encoding: [0xa0,0b011AAAAA,A,A] +# CHECK-FIXUP: # fixup A - offset: 0, +# CHECK-FIXUP: value: bar-4, kind: fixup_MICROMIPS_PC21_S1 +#------------------------------------------------------------------------------ +# Check that the appropriate relocations were created. +#------------------------------------------------------------------------------ +# CHECK-ELF: Relocations [ +# CHECK-ELF: 0x0 R_MICROMIPS_PC26_S1 bar 0x0 +# CHECK-ELF: 0x4 R_MICROMIPS_PC26_S1 bar 0x0 +# CHECK-ELF: 0x8 R_MICROMIPS_PC19_S2 bar 0x0 +# CHECK-ELF: 0xC R_MICROMIPS_PC19_S2 bar 0x0 +# CHECK-ELF: 0x10 R_MICROMIPS_PC18_S3 bar 0x0 +# CHECK-ELF: 0x14 R_MICROMIPS_PC21_S1 bar 0x0 +# CHECK-ELF: 0x18 R_MICROMIPS_PC21_S1 bar 0x0 +# CHECK-ELF: ] + + balc bar + bc bar + addiupc $2,bar + lwpc $2,bar + ldpc $2, bar + beqzc $3, bar + bnezc $3, bar diff --git a/test/MC/Mips/micromips64r6/valid.s b/test/MC/Mips/micromips64r6/valid.s index b41c86bd553c..043a57c48c03 100644 --- a/test/MC/Mips/micromips64r6/valid.s +++ b/test/MC/Mips/micromips64r6/valid.s @@ -10,6 +10,8 @@ a: addiusp 1024 # CHECK: addiusp 1024 # encoding: [0x4c,0x01] addiusp 1028 # CHECK: addiusp 1028 # encoding: [0x4c,0x03] addiusp -16 # CHECK: addiusp -16 # encoding: [0x4f,0xf9] + and16 $16, $2 # CHECK: and16 $16, $2 # encoding: [0x44,0x21] + andi16 $4, $5, 8 # CHECK: andi16 $4, $5, 8 # encoding: [0x2e,0x56] b 132 # CHECK: bc16 132 # encoding: [0xcc,0x42] bc16 132 # CHECK: bc16 132 # encoding: [0xcc,0x42] beqzc16 $6, 20 # CHECK: beqzc16 $6, 20 # encoding: [0x8f,0x0a] @@ -21,16 +23,41 @@ a: dextm $9, $6, 3, 39 # CHECK: dextm $9, $6, 3, 39 # encoding: [0x59,0x26,0x30,0xe4] dextu $9, $6, 35, 7 # CHECK: dextu $9, $6, 35, 7 # encoding: [0x59,0x26,0x30,0xd4] dalign $4, $2, $3, 5 # CHECK: dalign $4, $2, $3, 5 # encoding: [0x58,0x43,0x25,0x1c] + ldpc $2, 16 # CHECK: ldpc $2, 16 # encoding: [0x78,0x58,0x00,0x02] lw $3, 32($gp) # CHECK: lw $3, 32($gp) # encoding: [0x65,0x88] lw $3, 24($sp) # CHECK: lw $3, 24($sp) # encoding: [0x48,0x66] lw16 $4, 8($17) # CHECK: lw16 $4, 8($17) # encoding: [0x6a,0x12] lhu16 $3, 4($16) # CHECK: lhu16 $3, 4($16) # encoding: [0x29,0x82] lbu16 $3, 4($17) # CHECK: lbu16 $3, 4($17) # encoding: [0x09,0x94] lbu16 $3, -1($17) # CHECK: lbu16 $3, -1($17) # encoding: [0x09,0x9f] - ddiv $3, $4, $5 # CHECK: ddiv $3, $4, $5 # encoding: [0x58,0x64,0x29,0x18] - dmod $3, $4, $5 # CHECK: dmod $3, $4, $5 # encoding: [0x58,0x64,0x29,0x58] - ddivu $3, $4, $5 # CHECK: ddivu $3, $4, $5 # encoding: [0x58,0x64,0x29,0x98] - dmodu $3, $4, $5 # CHECK: dmodu $3, $4, $5 # encoding: [0x58,0x64,0x29,0xd8] + movep $5, $6, $2, $3 # CHECK: movep $5, $6, $2, $3 # encoding: [0x84,0x34] + not16 $4, $7 # CHECK: not16 $4, $7 # encoding: [0x46,0x70] + or16 $3, $7 # CHECK: or16 $3, $7 # encoding: [0x45,0xf9] + ll $2, 8($4) # CHECK: ll $2, 8($4) # encoding: [0x60,0x44,0x30,0x08] + lwm32 $16, $17, 8($4) # CHECK: lwm32 $16, $17, 8($4) # encoding: [0x20,0x44,0x50,0x08] + lwm32 $16, $17, 8($sp) # CHECK: lwm32 $16, $17, 8($sp) # encoding: [0x20,0x5d,0x50,0x08] + lwm32 $16, $17, $ra, 8($4) # CHECK: lwm32 $16, $17, $ra, 8($4) # encoding: [0x22,0x44,0x50,0x08] + lwm32 $16, $17, $ra, 64($sp) # CHECK: lwm32 $16, $17, $ra, 64($sp) # encoding: [0x22,0x5d,0x50,0x40] + lwm32 $16, $17, $18, $19, 8($4) # CHECK: lwm32 $16, $17, $18, $19, 8($4) # encoding: [0x20,0x84,0x50,0x08] + lwm32 $16, $17, $18, $19, $ra, 8($4) # CHECK: lwm32 $16, $17, $18, $19, $ra, 8($4) # encoding: [0x22,0x84,0x50,0x08] + lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, 8($4) # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, 8($4) # encoding: [0x21,0x24,0x50,0x08] + lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # encoding: [0x23,0x24,0x50,0x08] + lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # CHECK: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # encoding: [0x23,0x24,0x50,0x08] + rotr $2, 7 # CHECK: rotr $2, $2, 7 # encoding: [0x00,0x42,0x38,0xc0] + rotr $9, $6, 7 # CHECK: rotr $9, $6, 7 # encoding: [0x01,0x26,0x38,0xc0] + rotrv $9, $6, $7 # CHECK: rotrv $9, $6, $7 # encoding: [0x00,0xc7,0x48,0xd0] + sc $2, 8($4) # CHECK: sc $2, 8($4) # encoding: [0x60,0x44,0xb0,0x08] + swm32 $16, $17, 8($4) # CHECK: swm32 $16, $17, 8($4) # encoding: [0x20,0x44,0xd0,0x08] + swm32 $16, $17, 8($sp) # CHECK: swm32 $16, $17, 8($sp) # encoding: [0x20,0x5d,0xd0,0x08] + swm32 $16, $17, $ra, 8($4) # CHECK: swm32 $16, $17, $ra, 8($4) # encoding: [0x22,0x44,0xd0,0x08] + swm32 $16, $17, $ra, 64($sp) # CHECK: swm32 $16, $17, $ra, 64($sp) # encoding: [0x22,0x5d,0xd0,0x40] + swm32 $16, $17, $18, $19, 8($4) # CHECK: swm32 $16, $17, $18, $19, 8($4) # encoding: [0x20,0x84,0xd0,0x08] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x8b,0x7c] + syscall 396 # CHECK: syscall 396 # encoding: [0x01,0x8c,0x8b,0x7c] + ddiv $3, $4, $5 # CHECK: ddiv $3, $4, $5 # encoding: [0x58,0xa4,0x19,0x18] + dmod $3, $4, $5 # CHECK: dmod $3, $4, $5 # encoding: [0x58,0xa4,0x19,0x58] + ddivu $3, $4, $5 # CHECK: ddivu $3, $4, $5 # encoding: [0x58,0xa4,0x19,0x98] + dmodu $3, $4, $5 # CHECK: dmodu $3, $4, $5 # encoding: [0x58,0xa4,0x19,0xd8] add.s $f3, $f4, $f5 # CHECK: add.s $f3, $f4, $f5 # encoding: [0x54,0xa4,0x18,0x30] add.d $f2, $f4, $f6 # CHECK: add.d $f2, $f4, $f6 # encoding: [0x54,0xc4,0x11,0x30] sub.s $f3, $f4, $f5 # CHECK: sub.s $f3, $f4, $f5 # encoding: [0x54,0xa4,0x18,0x70] @@ -150,5 +177,145 @@ a: di # CHECK: di # encoding: [0x00,0x00,0x47,0x7c] di $0 # CHECK: di # encoding: [0x00,0x00,0x47,0x7c] di $15 # CHECK: di $15 # encoding: [0x00,0x0f,0x47,0x7c] + ceil.l.s $f1, $f3 # CHECK: ceil.l.s $f1, $f3 # encoding: [0x54,0x23,0x13,0x3b] + ceil.l.d $f1, $f3 # CHECK: ceil.l.d $f1, $f3 # encoding: [0x54,0x23,0x53,0x3b] + floor.l.s $f1, $f3 # CHECK: floor.l.s $f1, $f3 # encoding: [0x54,0x23,0x03,0x3b] + floor.l.d $f1, $f3 # CHECK: floor.l.d $f1, $f3 # encoding: [0x54,0x23,0x43,0x3b] + tlbinv # CHECK: tlbinv # encoding: [0x00,0x00,0x43,0x7c] + tlbinvf # CHECK: tlbinvf # encoding: [0x00,0x00,0x53,0x7c] + dinsu $4, $2, 32, 5 # CHECK: dinsu $4, $2, 32, 5 # encoding: [0x58,0x82,0x20,0x34] + dinsm $4, $2, 3, 5 # CHECK: dinsm $4, $2, 3, 5 # encoding: [0x58,0x82,0x38,0xc4] + dins $4, $2, 3, 5 # CHECK: dins $4, $2, 3, 5 # encoding: [0x58,0x82,0x38,0xcc] + lh $2, 8($4) # CHECK: lh $2, 8($4) # encoding: [0x3c,0x44,0x00,0x08] + lhe $4, 8($2) # CHECK: lhe $4, 8($2) # encoding: [0x60,0x82,0x6a,0x08] + lhu $4, 8($2) # CHECK: lhu $4, 8($2) # encoding: [0x34,0x82,0x00,0x08] + lhue $4, 8($2) # CHECK: lhue $4, 8($2) # encoding: [0x60,0x82,0x62,0x08] + mtc0 $5, $9 # CHECK: mtc0 $5, $9, 0 # encoding: [0x00,0xa9,0x02,0xfc] + mtc0 $1, $2, 7 # CHECK: mtc0 $1, $2, 7 # encoding: [0x00,0x22,0x3a,0xfc] + mtc1 $3, $f4 # CHECK: mtc1 $3, $f4 # encoding: [0x54,0x64,0x28,0x3b] + mtc2 $5, $6 # CHECK: mtc2 $5, $6 # encoding: [0x00,0xa6,0x5d,0x3c] + mthc0 $7, $8 # CHECK: mthc0 $7, $8, 0 # encoding: [0x00,0xe8,0x02,0xf4] + mthc0 $9, $10, 1 # CHECK: mthc0 $9, $10, 1 # encoding: [0x01,0x2a,0x0a,0xf4] + mthc1 $11, $f12 # CHECK: mthc1 $11, $f12 # encoding: [0x55,0x6c,0x38,0x3b] + mthc2 $13, $14 # CHECK: mthc2 $13, $14 # encoding: [0x01,0xae,0x9d,0x3c] + dmtc0 $15, $16 # CHECK: dmtc0 $15, $16, 0 # encoding: [0x59,0xf0,0x02,0xfc] + dmtc0 $17, $18, 5 # CHECK: dmtc0 $17, $18, 5 # encoding: [0x5a,0x32,0x2a,0xfc] + dmtc1 $19, $f20 # CHECK: dmtc1 $19, $f20 # encoding: [0x56,0x74,0x2c,0x3b] + dmtc2 $21, $22 # CHECK: dmtc2 $21, $22 # encoding: [0x02,0xb6,0x7d,0x3c] + dmfc0 $18, $17 # CHECK: dmfc0 $18, $17, 0 # encoding: [0x5a,0x51,0x00,0xfc] + dmfc0 $9, $1, 1 # CHECK: dmfc0 $9, $1, 1 # encoding: [0x59,0x21,0x08,0xfc] + dmfc1 $9, $f4 # CHECK: dmfc1 $9, $f4 # encoding: [0x55,0x24,0x24,0x3b] + dmfc2 $14, $18 # CHECK: dmfc2 $14, $18 # encoding: [0x01,0xd2,0x6d,0x3c] + dadd $9, $6, $7 # CHECK: dadd $9, $6, $7 # encoding: [0x58,0xe6,0x49,0x10] + dadd $s3, $at, $ra # CHECK: dadd $19, $1, $ra # encoding: [0x5b,0xe1,0x99,0x10] + daddiu $24, $2, 18079 # CHECK: daddiu $24, $2, 18079 # encoding: [0x5f,0x02,0x46,0x9f] + daddiu $9, $6, -15001 # CHECK: daddiu $9, $6, -15001 # encoding: [0x5d,0x26,0xc5,0x67] + daddiu $9, -15001 # CHECK: daddiu $9, $9, -15001 # encoding: [0x5d,0x29,0xc5,0x67] + daddiu $9, $3, 8 * 4 # CHECK: daddiu $9, $3, 32 # encoding: [0x5d,0x23,0x00,0x20] + daddiu $9, $3, (8 * 4) # CHECK: daddiu $9, $3, 32 # encoding: [0x5d,0x23,0x00,0x20] + daddiu $k0, $s6, -4586 # CHECK: daddiu $26, $22, -4586 # encoding: [0x5f,0x56,0xee,0x16] + daddiu $15, $11, -5025 # CHECK: daddiu $15, $11, -5025 # encoding: [0x5d,0xeb,0xec,0x5f] + daddiu $14, $14, 4586 # CHECK: daddiu $14, $14, 4586 # encoding: [0x5d,0xce,0x11,0xea] + daddiu $19, $19, 26943 # CHECK: daddiu $19, $19, 26943 # encoding: [0x5e,0x73,0x69,0x3f] + daddiu $11, $26, 31949 # CHECK: daddiu $11, $26, 31949 # encoding: [0x5d,0x7a,0x7c,0xcd] + daddiu $sp, $sp, -32 # CHECK: daddiu $sp, $sp, -32 # encoding: [0x5f,0xbd,0xff,0xe0] + daddu $26, $1, $11 # CHECK: daddu $26, $1, $11 # encoding: [0x59,0x61,0xd1,0x50] + daddu $19, $1, $ra # CHECK: daddu $19, $1, $ra # encoding: [0x5b,0xe1,0x99,0x50] + daddu $9, $6, $7 # CHECK: daddu $9, $6, $7 # encoding: [0x58,0xe6,0x49,0x50] + daddu $9, $3 # CHECK: daddu $9, $9, $3 # encoding: [0x58,0x69,0x49,0x50] + daddu $9, $6, -15001 # CHECK: daddiu $9, $6, -15001 # encoding: [0x5d,0x26,0xc5,0x67] + daddu $9, 10 # CHECK: daddiu $9, $9, 10 # encoding: [0x5d,0x29,0x00,0x0a] + daddu $19, 26943 # CHECK: daddiu $19, $19, 26943 # encoding: [0x5e,0x73,0x69,0x3f] + daddu $24, $2, 18079 # CHECK: daddiu $24, $2, 18079 # encoding: [0x5f,0x02,0x46,0x9f] + dsubu $3, 5 # CHECK: daddiu $3, $3, -5 # encoding: [0x5c,0x63,0xff,0xfb] + dsubu $3, $4, 5 # CHECK: daddiu $3, $4, -5 # encoding: [0x5c,0x64,0xff,0xfb] + tlbp # CHECK: tlbp # encoding: [0x00,0x00,0x03,0x7c] + tlbr # CHECK: tlbr # encoding: [0x00,0x00,0x13,0x7c] + tlbwi # CHECK: tlbwi # encoding: [0x00,0x00,0x23,0x7c] + tlbwr # CHECK: tlbwr # encoding: [0x00,0x00,0x33,0x7c] + dvp # CHECK: dvp $zero # encoding: [0x00,0x00,0x19,0x7c] + dvp $4 # CHECK: dvp $4 # encoding: [0x00,0x04,0x19,0x7c] + evp # CHECK: evp $zero # encoding: [0x00,0x00,0x39,0x7c] + evp $4 # CHECK: evp $4 # encoding: [0x00,0x04,0x39,0x7c] + jalrc.hb $4 # CHECK: jalrc.hb $4 # encoding: [0x03,0xe4,0x1f,0x3c] + jalrc.hb $4, $5 # CHECK: jalrc.hb $4, $5 # encoding: [0x00,0x85,0x1f,0x3c] + sllv $2, $3, $5 # CHECK: sllv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x10] + sra $4, $3, 7 # CHECK: sra $4, $3, 7 # encoding: [0x00,0x83,0x38,0x80] + srav $2, $3, $5 # CHECK: srav $2, $3, $5 # encoding: [0x00,0x65,0x10,0x90] + srl $4, $3, 7 # CHECK: srl $4, $3, 7 # encoding: [0x00,0x83,0x38,0x40] + srlv $2, $3, $5 # CHECK: srlv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x50] + sll $2, $3, $5 # CHECK: sllv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x10] + sra $2, $3, $5 # CHECK: srav $2, $3, $5 # encoding: [0x00,0x65,0x10,0x90] + srl $2, $3, $5 # CHECK: srlv $2, $3, $5 # encoding: [0x00,0x65,0x10,0x50] + sll $2, $3 # CHECK: sllv $2, $2, $3 # encoding: [0x00,0x43,0x10,0x10] + sra $2, $3 # CHECK: srav $2, $2, $3 # encoding: [0x00,0x43,0x10,0x90] + srl $2, $3 # CHECK: srlv $2, $2, $3 # encoding: [0x00,0x43,0x10,0x50] + sll $3, 7 # CHECK: sll $3, $3, 7 # encoding: [0x00,0x63,0x38,0x00] + sra $3, 7 # CHECK: sra $3, $3, 7 # encoding: [0x00,0x63,0x38,0x80] + srl $3, 7 # CHECK: srl $3, $3, 7 # encoding: [0x00,0x63,0x38,0x40] + dsub $1, $2, $3 # CHECK: dsub $1, $2, $3 # encoding: [0x58,0x62,0x09,0x90] + dsubu $3, $7, $15 # CHECK: dsubu $3, $7, $15 # encoding: [0x59,0xe7,0x19,0xd0] + dneg $7, $15 # CHECK: dneg $7, $15 # encoding: [0x59,0xe0,0x39,0x90] + dneg $10 # CHECK: dneg $10, $10 # encoding: [0x59,0x40,0x51,0x90] + dnegu $1, $11 # CHECK: dnegu $1, $11 # encoding: [0x59,0x60,0x09,0xd0] + dnegu $5 # CHECK: dnegu $5, $5 # encoding: [0x58,0xa0,0x29,0xd0] + mul $3, $4, $5 # CHECK mul $3, $4, $5 # encoding: [0x00,0xa4,0x18,0x18] + muh $3, $4, $5 # CHECK muh $3, $4, $5 # encoding: [0x00,0xa4,0x18,0x58] + mulu $3, $4, $5 # CHECK mulu $3, $4, $5 # encoding: [0x00,0xa4,0x18,0x98] + muhu $3, $4, $5 # CHECK muhu $3, $4, $5 # encoding: [0x00,0xa4,0x18,0xd8] + dmul $3, $4, $5 # CHECK dmul $3, $4, $5 # encoding: [0x58,0xa4,0x18,0x18] + dmuh $3, $4, $5 # CHECK dmuh $3, $4, $5 # encoding: [0x58,0xa4,0x18,0x58] + dmulu $3, $4, $5 # CHECK dmulu $3, $4, $5 # encoding: [0x58,0xa4,0x18,0x98] + dmuhu $3, $4, $5 # CHECK dmuhu $3, $4, $5 # encoding: [0x58,0xa4,0x18,0xd8] + lwp $16, 8($4) # CHECK: lwp $16, 8($4) # encoding: [0x22,0x04,0x10,0x08] + swp $16, 8($4) # CHECK: swp $16, 8($4) # encoding: [0x22,0x04,0x90,0x08] + dsbh $3, $4 # CHECK: dsbh $3, $4 # encoding: [0x58,0x64,0x7b,0x3c] + dshd $3, $4 # CHECK: dshd $3, $4 # encoding: [0x58,0x64,0xfb,0x3c] + dsll $3, $4, 5 # CHECK: dsll $3, $4, 5 # encoding: [0x58,0x64,0x28,0x00] + dsll32 $3, $4, 5 # CHECK: dsll32 $3, $4, 5 # encoding: [0x58,0x64,0x28,0x08] + dsllv $4, $5, $6 # CHECK: dsllv $4, $5, $6 # encoding: [0x58,0xa6,0x20,0x10] + dsra $4, $5, 5 # CHECK: dsra $4, $5, 5 # encoding: [0x58,0x85,0x28,0x80] + dsra32 $4, $5, 5 # CHECK: dsra32 $4, $5, 5 # encoding: [0x58,0x85,0x28,0x84] + dsrav $4, $5, $6 # CHECK: dsrav $4, $5, $6 # encoding: [0x58,0xa6,0x20,0x90] + bc1eqzc $f31, 4 # CHECK: bc1eqzc $f31, 4 # encoding: [0x41,0x1f,0x00,0x02] + bc1nezc $f31, 4 # CHECK: bc1nezc $f31, 4 # encoding: [0x41,0x3f,0x00,0x02] + bc2eqzc $31, 8 # CHECK: bc2eqzc $31, 8 # encoding: [0x41,0x5f,0x00,0x04] + bc2nezc $31, 8 # CHECK: bc2nezc $31, 8 # encoding: [0x41,0x7f,0x00,0x04] + and $3, 5 # CHECK: andi $3, $3, 5 # encoding: [0xd0,0x63,0x00,0x05] + and $3, $4, 5 # CHECK: andi $3, $4, 5 # encoding: [0xd0,0x64,0x00,0x05] + and $3, $4, $5 # CHECK: and $3, $4, $5 # encoding: [0x00,0xa4,0x1a,0x50] + andi $3, $4, 1234 # CHECK: andi $3, $4, 1234 # encoding: [0xd0,0x64,0x04,0xd2] + nor $3, $4, $5 # CHECK: nor $3, $4, $5 # encoding: [0x00,0xa4,0x1a,0xd0] + not $3, $4 # CHECK: not $3, $4 # encoding: [0x00,0x04,0x1a,0xd0] + or $3, 5 # CHECK: ori $3, $3, 5 # encoding: [0x50,0x63,0x00,0x05] + or $3, $4, 5 # CHECK: ori $3, $4, 5 # encoding: [0x50,0x64,0x00,0x05] + or $3, $4, $5 # CHECK: or $3, $4, $5 # encoding: [0x00,0xa4,0x1a,0x90] + ori $3, $4, 1234 # CHECK: ori $3, $4, 1234 # encoding: [0x50,0x64,0x04,0xd2] + xor $3, 5 # CHECK: xori $3, $3, 5 # encoding: [0x70,0x63,0x00,0x05] + xor $3, $4, 5 # CHECK: xori $3, $4, 5 # encoding: [0x70,0x64,0x00,0x05] + xor $3, $4, $5 # CHECK: xor $3, $4, $5 # encoding: [0x00,0xa4,0x1b,0x10] + xori $3, $4, 1234 # CHECK: xori $3, $4, 1234 # encoding: [0x70,0x64,0x04,0xd2] + dclo $1, $2 # CHECK: dclo $1, $2 # encoding: [0x58,0x22,0x4b,0x3c] + dclz $1, $2 # CHECK: dclz $1, $2 # encoding: [0x58,0x22,0x5b,0x3c] + drotr $5, $10, 8 # CHECK: drotr $5, $10, 8 # encoding: [0x58,0xaa,0x40,0xc0] + drotr32 $1, $2, 4 # CHECK: drotr32 $1, $2, 4 # encoding: [0x58,0x22,0x20,0xc8] + drotrv $3, $6, $4 # CHECK: drotrv $3, $6, $4 # encoding: [0x58,0xc4,0x18,0xd0] + ld $4, 5($2) # CHECK: ld $4, 5($2) # encoding: [0xdc,0x82,0x00,0x05] + lld $2, 3($8) # CHECK: lld $2, 3($8) # encoding: [0x60,0x48,0x70,0x03] + lwu $1, 10($2) # CHECK: lwu $1, 10($2) # encoding: [0x60,0x22,0xe0,0x0a] + sd $4, 5($3) # CHECK: sd $4, 5($3) # encoding: [0xd8,0x83,0x00,0x05] + dsrl $1, $2, 2 # CHECK: dsrl $1, $2, 2 # encoding: [0x58,0x22,0x10,0x40] + dsrl32 $3, $4, 5 # CHECK: dsrl32 $3, $4, 5 # encoding: [0x58,0x64,0x28,0x48] + dsrlv $1, $3, $3 # CHECK: dsrlv $1, $3, $3 # encoding: [0x58,0x63,0x08,0x50] + ldc1 $f7, 300($10) # CHECK: ldc1 $f7, 300($10) # encoding: [0xbc,0xea,0x01,0x2c] + ldc1 $f8, 300($10) # CHECK: ldc1 $f8, 300($10) # encoding: [0xbd,0x0a,0x01,0x2c] + ldc2 $11, 1023($12) # CHECK: ldc2 $11, 1023($12) # encoding: [0x21,0x6c,0x23,0xff] + lwc1 $f2, 32($5) # CHECK: lwc1 $f2, 32($5) # encoding: [0x9c,0x45,0x00,0x20] + lwc2 $1, 16($4) # CHECK: lwc2 $1, 16($4) # encoding: [0x20,0x24,0x00,0x10] + sdc1 $f7, 64($10) # CHECK: sdc1 $f7, 64($10) # encoding: [0xb8,0xea,0x00,0x40] + sdc1 $f8, 64($10) # CHECK: sdc1 $f8, 64($10) # encoding: [0xb9,0x0a,0x00,0x40] + sdc2 $2, 8($16) # CHECK: sdc2 $2, 8($16) # encoding: [0x20,0x50,0xa0,0x08] + swc1 $f6, 369($13) # CHECK: swc1 $f6, 369($13) # encoding: [0x98,0xcd,0x01,0x71] + swc2 $7, 777($17) # CHECK: swc2 $7, 777($17) # encoding: [0x20,0xf1,0x83,0x09] 1: diff --git a/test/MC/Mips/mips-control-instructions.s b/test/MC/Mips/mips-control-instructions.s index 47da8ccca3c4..03b8ed26a5c4 100644 --- a/test/MC/Mips/mips-control-instructions.s +++ b/test/MC/Mips/mips-control-instructions.s @@ -6,8 +6,6 @@ # CHECK32: break # encoding: [0x00,0x00,0x00,0x0d] # CHECK32: break 7 # encoding: [0x00,0x07,0x00,0x0d] # CHECK32: break 7, 5 # encoding: [0x00,0x07,0x01,0x4d] -# CHECK32: syscall # encoding: [0x00,0x00,0x00,0x0c] -# CHECK32: syscall 13396 # encoding: [0x00,0x0d,0x15,0x0c] # CHECK32: eret # encoding: [0x42,0x00,0x00,0x18] # CHECK32: deret # encoding: [0x42,0x00,0x00,0x1f] # CHECK32: di # encoding: [0x41,0x60,0x60,0x00] @@ -39,8 +37,6 @@ # CHECK64: break # encoding: [0x00,0x00,0x00,0x0d] # CHECK64: break 7 # encoding: [0x00,0x07,0x00,0x0d] # CHECK64: break 7, 5 # encoding: [0x00,0x07,0x01,0x4d] -# CHECK64: syscall # encoding: [0x00,0x00,0x00,0x0c] -# CHECK64: syscall 13396 # encoding: [0x00,0x0d,0x15,0x0c] # CHECK64: eret # encoding: [0x42,0x00,0x00,0x18] # CHECK64: deret # encoding: [0x42,0x00,0x00,0x1f] # CHECK64: di # encoding: [0x41,0x60,0x60,0x00] @@ -72,8 +68,6 @@ break break 7 break 7,5 - syscall - syscall 0x3454 eret deret di diff --git a/test/MC/Mips/mips-cop0-reginfo.s b/test/MC/Mips/mips-cop0-reginfo.s index 0508a3729543..baa3681594c5 100644 --- a/test/MC/Mips/mips-cop0-reginfo.s +++ b/test/MC/Mips/mips-cop0-reginfo.s @@ -1,6 +1,6 @@ # RUN: llvm-mc -arch=mips -mcpu=mips32r2 -filetype=obj %s -o - | \ # RUN: llvm-readobj -sections -section-data - | \ -# RUN: FileCheck %s -check-prefix=CHECK +# RUN: FileCheck %s mfc0 $16, $15, 1 mfc0 $16, $16, 1 diff --git a/test/MC/Mips/mips-data-directives.s b/test/MC/Mips/mips-data-directives.s index abff7c21c611..390f463c7cb9 100644 --- a/test/MC/Mips/mips-data-directives.s +++ b/test/MC/Mips/mips-data-directives.s @@ -7,14 +7,16 @@ # CHECK-ASM: .4byte 3735929054 # CHECK-ASM: .8byte -2401050962867405073 +# CHECK-ASM: .2byte 49374 # CHECK-ASM: .4byte label # CHECK-ASM: .8byte label +# CHECK-ASM: .2byte label # Checking if the data and reloations were correctly emitted # CHECK-OBJ: Section { # CHECK-OBJ: Name: .data # CHECK-OBJ: SectionData ( -# CHECK-OBJ: 0000: DEADC0DE DEADC0DE DEADBEEF 00000000 +# CHECK-OBJ: 0000: DEADC0DE DEADC0DE DEADBEEF C0DE0000 # CHECK-OBJ: 0010: 00000000 00000000 # CHECK-OBJ: ) # CHECK-OBJ: } @@ -22,8 +24,9 @@ # CHECK-OBJ: Section { # CHECK-OBJ: Name: .rel.data # CHECK-OBJ: Relocations [ -# CHECK-OBJ: 0xC R_MIPS_32 .data 0x0 -# CHECK-OBJ: 0x10 R_MIPS_64 .data 0x0 +# CHECK-OBJ: 0xE R_MIPS_32 .data 0x0 +# CHECK-OBJ: 0x12 R_MIPS_64 .data 0x0 +# CHECK-OBJ: 0x1A R_MIPS_16 .data 0x0 # CHECK-OBJ: ] # CHECK-OBJ: } @@ -31,6 +34,8 @@ label: .word 0xdeadc0de .dword 0xdeadc0dedeadbeef + .hword 0xc0de .word label .dword label + .hword label diff --git a/test/MC/Mips/mips-expansions-bad.s b/test/MC/Mips/mips-expansions-bad.s index 3d6824687939..b54c48e18b33 100644 --- a/test/MC/Mips/mips-expansions-bad.s +++ b/test/MC/Mips/mips-expansions-bad.s @@ -1,9 +1,9 @@ # RUN: not llvm-mc %s -arch=mips -mcpu=mips32r2 2>%t1 # RUN: FileCheck %s < %t1 --check-prefix=32-BIT # RUN: not llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n32 2>&1 | \ -# RUN: FileCheck %s --check-prefix=64-BIT --check-prefix=N32-ONLY +# RUN: FileCheck %s --check-prefixes=64-BIT,N32-ONLY # RUN: not llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n64 2>&1 | \ -# RUN: FileCheck %s --check-prefix=64-BIT --check-prefix=N64-ONLY +# RUN: FileCheck %s --check-prefixes=64-BIT,N64-ONLY .text dli $5, 1 diff --git a/test/MC/Mips/mips-expansions.s b/test/MC/Mips/mips-expansions.s index 625b77f2d884..d07dfc05cf5c 100644 --- a/test/MC/Mips/mips-expansions.s +++ b/test/MC/Mips/mips-expansions.s @@ -1,44 +1,44 @@ # RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | \ -# RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-LE +# RUN: FileCheck %s --check-prefixes=CHECK,CHECK-LE # RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | \ -# RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-BE +# RUN: FileCheck %s --check-prefixes=CHECK,CHECK-BE # Check that the IAS expands macro instructions in the same way as GAS. # Load address, done by MipsAsmParser::expandLoadAddressReg() # and MipsAsmParser::expandLoadAddressImm(): la $8, 1f -# CHECK-LE: lui $8, %hi(($tmp0)) # encoding: [A,A,0x08,0x3c] -# CHECK-LE: # fixup A - offset: 0, value: %hi(($tmp0)), kind: fixup_Mips_HI16 -# CHECK-LE: addiu $8, $8, %lo(($tmp0)) # encoding: [A,A,0x08,0x25] -# CHECK-LE: # fixup A - offset: 0, value: %lo(($tmp0)), kind: fixup_Mips_LO16 +# CHECK-LE: lui $8, %hi($tmp0) # encoding: [A,A,0x08,0x3c] +# CHECK-LE: # fixup A - offset: 0, value: %hi($tmp0), kind: fixup_Mips_HI16 +# CHECK-LE: addiu $8, $8, %lo($tmp0) # encoding: [A,A,0x08,0x25] +# CHECK-LE: # fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16 # LW/SW and LDC1/SDC1 of symbol address, done by MipsAsmParser::expandMemInst(): .set noat lw $10, symbol($4) # CHECK-LE: lui $10, %hi(symbol) # encoding: [A,A,0x0a,0x3c] -# CHECK-LE: # fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16 +# CHECK-LE: # fixup A - offset: 0, value: %hi(symbol), kind: fixup_Mips_HI16 # CHECK-LE: addu $10, $10, $4 # encoding: [0x21,0x50,0x44,0x01] # CHECK-LE: lw $10, %lo(symbol)($10) # encoding: [A,A,0x4a,0x8d] -# CHECK-LE: # fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16 +# CHECK-LE: # fixup A - offset: 0, value: %lo(symbol), kind: fixup_Mips_LO16 .set at sw $10, symbol($9) # CHECK-LE: lui $1, %hi(symbol) # encoding: [A,A,0x01,0x3c] -# CHECK-LE: # fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16 +# CHECK-LE: # fixup A - offset: 0, value: %hi(symbol), kind: fixup_Mips_HI16 # CHECK-LE: addu $1, $1, $9 # encoding: [0x21,0x08,0x29,0x00] # CHECK-LE: sw $10, %lo(symbol)($1) # encoding: [A,A,0x2a,0xac] -# CHECK-LE: # fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16 +# CHECK-LE: # fixup A - offset: 0, value: %lo(symbol), kind: fixup_Mips_LO16 lw $8, 1f # CHECK-LE: lui $8, %hi($tmp0) # encoding: [A,A,0x08,0x3c] -# CHECK-LE: # fixup A - offset: 0, value: ($tmp0)@ABS_HI, kind: fixup_Mips_HI16 +# CHECK-LE: # fixup A - offset: 0, value: %hi($tmp0), kind: fixup_Mips_HI16 # CHECK-LE: lw $8, %lo($tmp0)($8) # encoding: [A,A,0x08,0x8d] -# CHECK-LE: # fixup A - offset: 0, value: ($tmp0)@ABS_LO, kind: fixup_Mips_LO16 +# CHECK-LE: # fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16 sw $8, 1f # CHECK-LE: lui $1, %hi($tmp0) # encoding: [A,A,0x01,0x3c] -# CHECK-LE: # fixup A - offset: 0, value: ($tmp0)@ABS_HI, kind: fixup_Mips_HI16 +# CHECK-LE: # fixup A - offset: 0, value: %hi($tmp0), kind: fixup_Mips_HI16 # CHECK-LE: sw $8, %lo($tmp0)($1) # encoding: [A,A,0x28,0xac] -# CHECK-LE: # fixup A - offset: 0, value: ($tmp0)@ABS_LO, kind: fixup_Mips_LO16 +# CHECK-LE: # fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16 lw $10, 655483($4) # CHECK-LE: lui $10, 10 # encoding: [0x0a,0x00,0x0a,0x3c] @@ -47,20 +47,20 @@ sw $10, 123456($9) # CHECK-LE: lui $1, 2 # encoding: [0x02,0x00,0x01,0x3c] # CHECK-LE: addu $1, $1, $9 # encoding: [0x21,0x08,0x29,0x00] -# CHECK-LE: sw $10, 57920($1) # encoding: [0x40,0xe2,0x2a,0xac] +# CHECK-LE: sw $10, -7616($1) # encoding: [0x40,0xe2,0x2a,0xac] lw $8, symbol # CHECK-LE: lui $8, %hi(symbol) # encoding: [A,A,0x08,0x3c] -# CHECK-LE: # fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16 +# CHECK-LE: # fixup A - offset: 0, value: %hi(symbol), kind: fixup_Mips_HI16 # CHECK-LE-NOT: move $8, $8 # encoding: [0x21,0x40,0x00,0x01] # CHECK-LE: lw $8, %lo(symbol)($8) # encoding: [A,A,0x08,0x8d] -# CHECK-LE: # fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16 +# CHECK-LE: # fixup A - offset: 0, value: %lo(symbol), kind: fixup_Mips_LO16 sw $8, symbol # CHECK-LE: lui $1, %hi(symbol) # encoding: [A,A,0x01,0x3c] -# CHECK-LE: # fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16 +# CHECK-LE: # fixup A - offset: 0, value: %hi(symbol), kind: fixup_Mips_HI16 # CHECK-LE-NOT: move $1, $1 # encoding: [0x21,0x08,0x20,0x00] # CHECK-LE: sw $8, %lo(symbol)($1) # encoding: [A,A,0x28,0xac] -# CHECK-LE: # fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16 +# CHECK-LE: # fixup A - offset: 0, value: %lo(symbol), kind: fixup_Mips_LO16 ldc1 $f0, symbol # CHECK-LE: lui $1, %hi(symbol) @@ -131,6 +131,12 @@ # CHECK-LE: beq $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x10] # CHECK-LE: nop # encoding: [0x00,0x00,0x00,0x00] + beq $2, 65538, foo +# CHECK-LE: lui $1, 1 # encoding: [0x01,0x00,0x01,0x3c] +# CHECK-LE: ori $1, $1, 2 # encoding: [0x02,0x00,0x21,0x34] +# CHECK-LE: beq $2, $1, foo # encoding: [A,A,0x41,0x10] +# CHECK-LE: nop # encoding: [0x00,0x00,0x00,0x00] + # Test ULH with immediate operand. ulh_imm: # CHECK-LABEL: ulh_imm: ulh $8, 0 diff --git a/test/MC/Mips/mips-pdr.s b/test/MC/Mips/mips-pdr.s index 8177e3e23448..b19dca3148dc 100644 --- a/test/MC/Mips/mips-pdr.s +++ b/test/MC/Mips/mips-pdr.s @@ -18,9 +18,9 @@ # OBJOUT: Section { # OBJOUT: Name: .pdr # OBJOUT: Type: SHT_PROGBITS (0x1) -# OBJOUT: Flags [ (0xB) -# OBJOUT: SHF_ALLOC (0x2) -# OBJOUT: SHF_WRITE (0x1) +# OBJOUT: Flags [ (0x0) +# OBJOUT-NOT: SHF_ALLOC (0x2) +# OBJOUT-NOT: SHF_WRITE (0x1) # OBJOUT: ] # OBJOUT: Size: 64 # OBJOUT: SectionData ( diff --git a/test/MC/Mips/mips1/invalid-mips2-wrong-error.s b/test/MC/Mips/mips1/invalid-mips2-wrong-error.s index 8e878fef1eab..5897fb84a201 100644 --- a/test/MC/Mips/mips1/invalid-mips2-wrong-error.s +++ b/test/MC/Mips/mips1/invalid-mips2-wrong-error.s @@ -6,11 +6,11 @@ # RUN: FileCheck %s < %t1 .set noat - ldc1 $f11,16391($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ldc2 $8,-21181($at) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + ldc2 $8,-21181($at) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + ldc2 $8,-1024($at) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset ldc3 $29,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ll $v0,-7321($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sc $t7,18904($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sdc1 $f31,30574($t5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sdc2 $20,23157($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + ll $v0,-7321($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sc $t7,18904($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sdc2 $20,23157($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + sdc2 $20,-1024($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset sdc3 $12,5835($t2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction diff --git a/test/MC/Mips/mips1/invalid-mips3-wrong-error.s b/test/MC/Mips/mips1/invalid-mips3-wrong-error.s index 2016e701b0f9..d140b258533a 100644 --- a/test/MC/Mips/mips1/invalid-mips3-wrong-error.s +++ b/test/MC/Mips/mips1/invalid-mips3-wrong-error.s @@ -6,18 +6,14 @@ # RUN: FileCheck %s < %t1 .set noat - ld $sp,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ldc1 $f11,16391($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ldc2 $8,-21181($at) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + ldc2 $8,-21181($at) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + ldc2 $20,-1024($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset ldl $24,-4167($24) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction ldr $14,-30358($s4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ll $v0,-7321($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lld $zero,-14736($ra) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwu $s3,-24086($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sc $15,18904($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - scd $15,-8243($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sd $12,5835($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sdc1 $f31,30574($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sdc2 $20,23157($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + ll $v0,-7321($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sc $15,18904($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + scd $15,-8243($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sdc2 $20,23157($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + sdc2 $20,-1024($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset sdl $a3,-20961($s8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction sdr $11,-20423($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction diff --git a/test/MC/Mips/mips1/invalid-mips3.s b/test/MC/Mips/mips1/invalid-mips3.s index d9400edaa17c..4b13ac69ebb9 100644 --- a/test/MC/Mips/mips1/invalid-mips3.s +++ b/test/MC/Mips/mips1/invalid-mips3.s @@ -54,10 +54,14 @@ floor.l.s $f12,$f5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled floor.w.d $f14,$f11 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled floor.w.s $f8,$f9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + ld $sp,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lld $zero,-14736($ra) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lwu $s3,-24086($v1) # CHECK: :[[@LINE]]:23: error: expected memory with 12-bit signed offset round.l.d $f12,$f1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled round.l.s $f25,$f5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled round.w.d $f6,$f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled round.w.s $f27,$f28 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sd $12,5835($10) # CHECK: :[[@LINE]]:23: error: expected memory with 16-bit signed offset sqrt.d $f17,$f22 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled sqrt.s $f0,$f1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled teqi $s5,-17504 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/mips1/invalid-mips4-wrong-error.s b/test/MC/Mips/mips1/invalid-mips4-wrong-error.s index cec30c862329..cc4f56b75957 100644 --- a/test/MC/Mips/mips1/invalid-mips4-wrong-error.s +++ b/test/MC/Mips/mips1/invalid-mips4-wrong-error.s @@ -8,18 +8,14 @@ .set noat bc1fl $fcc7,27 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction bc1tl $fcc7,27 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ld $sp,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ldc1 $f11,16391($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ldc2 $8,-21181($at) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + ldc2 $8,-21181($at) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + ldc2 $20,-1024($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset ldl $24,-4167($24) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction ldr $14,-30358($s4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ll $v0,-7321($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lld $zero,-14736($ra) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwu $s3,-24086($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sc $15,18904($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - scd $15,-8243($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sd $12,5835($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sdc1 $f31,30574($13) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sdc2 $20,23157($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + ll $v0,-7321($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sc $15,18904($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + scd $15,-8243($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + sdc2 $20,23157($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + sdc2 $20,-1024($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset sdl $a3,-20961($s8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction sdr $11,-20423($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction diff --git a/test/MC/Mips/mips1/invalid-mips4.s b/test/MC/Mips/mips1/invalid-mips4.s index 9f246bc16bd0..1cf2e896b797 100644 --- a/test/MC/Mips/mips1/invalid-mips4.s +++ b/test/MC/Mips/mips1/invalid-mips4.s @@ -69,10 +69,14 @@ movz $a1,$s6,$9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled movz.d $f12,$f29,$9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled movz.s $f25,$f7,$v1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + ld $sp,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lld $zero,-14736($ra) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lwu $s3,-24086($v1) # CHECK: :[[@LINE]]:23: error: expected memory with 12-bit signed offset round.l.d $f12,$f1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled round.l.s $f25,$f5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled round.w.d $f6,$f4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled round.w.s $f27,$f28 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sd $12,5835($10) # CHECK: :[[@LINE]]:23: error: expected memory with 16-bit signed offset sdxc1 $f11,$10($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled sqrt.d $f17,$f22 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled sqrt.s $f0,$f1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/mips1/invalid-mips5.s b/test/MC/Mips/mips1/invalid-mips5.s index af5b278c4098..6096c3e87b26 100644 --- a/test/MC/Mips/mips1/invalid-mips5.s +++ b/test/MC/Mips/mips1/invalid-mips5.s @@ -88,3 +88,5 @@ sdxc1 $f11,$a2($t2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled suxc1 $f12,$k1($t1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled swxc1 $f19,$t0($k0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + ldc1 $f11,16391($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + sdc1 $f31,30574($t5) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset diff --git a/test/MC/Mips/mips1/valid.s b/test/MC/Mips/mips1/valid.s index 5080e77cae10..6c49dc51e435 100644 --- a/test/MC/Mips/mips1/valid.s +++ b/test/MC/Mips/mips1/valid.s @@ -117,6 +117,8 @@ a: swc3 $10,-32265($k0) swl $15,13694($s3) swr $s1,-26590($14) + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] tlbp # CHECK: tlbp # encoding: [0x42,0x00,0x00,0x08] tlbr # CHECK: tlbr # encoding: [0x42,0x00,0x00,0x01] tlbwi # CHECK: tlbwi # encoding: [0x42,0x00,0x00,0x02] @@ -124,4 +126,50 @@ a: xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] + .set at + trunc.w.s $f4,$f6,$4 + # CHECK: cfc1 $4, $ra # encoding: [0x44,0x44,0xf8,0x00] + # CHECK: cfc1 $4, $ra # encoding: [0x44,0x44,0xf8,0x00] + # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] + # CHECK: ori $1, $4, 3 # encoding: [0x34,0x81,0x00,0x03] + # CHECK: xori $1, $1, 2 # encoding: [0x38,0x21,0x00,0x02] + # CHECK: ctc1 $1, $ra # encoding: [0x44,0xc1,0xf8,0x00] + # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] + # CHECK: cvt.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x24] + # CHECK: ctc1 $4, $ra # encoding: [0x44,0xc4,0xf8,0x00] + # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] + + trunc.w.d $f4,$f6,$4 + # CHECK: cfc1 $4, $ra # encoding: [0x44,0x44,0xf8,0x00] + # CHECK: cfc1 $4, $ra # encoding: [0x44,0x44,0xf8,0x00] + # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] + # CHECK: ori $1, $4, 3 # encoding: [0x34,0x81,0x00,0x03] + # CHECK: xori $1, $1, 2 # encoding: [0x38,0x21,0x00,0x02] + # CHECK: ctc1 $1, $ra # encoding: [0x44,0xc1,0xf8,0x00] + # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] + # CHECK: cvt.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x24] + # CHECK: ctc1 $4, $ra # encoding: [0x44,0xc4,0xf8,0x00] + # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] + 1: + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips2/invalid-mips3-wrong-error.s b/test/MC/Mips/mips2/invalid-mips3-wrong-error.s index 3eb4ef3afb94..9aa17b6695b7 100644 --- a/test/MC/Mips/mips2/invalid-mips3-wrong-error.s +++ b/test/MC/Mips/mips2/invalid-mips3-wrong-error.s @@ -7,12 +7,8 @@ .set noat dmult $s7,$a5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ld $sp,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction ldl $t8,-4167($t8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction ldr $t2,-30358($s4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lld $zero,-14736($ra) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwu $s3,-24086($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - scd $t3,-8243($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sd $t0,5835($a6) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + scd $t3,-8243($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset sdl $a3,-20961($s8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction sdr $a7,-20423($t0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction diff --git a/test/MC/Mips/mips2/invalid-mips3.s b/test/MC/Mips/mips2/invalid-mips3.s index 67f9d5399841..80a09673413b 100644 --- a/test/MC/Mips/mips2/invalid-mips3.s +++ b/test/MC/Mips/mips2/invalid-mips3.s @@ -50,7 +50,11 @@ eret # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled floor.l.d $f26,$f7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled floor.l.s $f12,$f5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + ld $sp,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lld $zero,-14736($ra) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lwu $s3,-24086($v1) # CHECK: :[[@LINE]]:24: error: expected memory with 12-bit signed offset round.l.d $f12,$f1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled round.l.s $f25,$f5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sd $t0,5835($a6) # CHECK: :[[@LINE]]:24: error: expected memory with 16-bit signed offset trunc.l.d $f23,$f23 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled trunc.l.s $f28,$f31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/mips2/invalid-mips4-wrong-error.s b/test/MC/Mips/mips2/invalid-mips4-wrong-error.s index 28a98ba13f08..ef5657833ca5 100644 --- a/test/MC/Mips/mips2/invalid-mips4-wrong-error.s +++ b/test/MC/Mips/mips2/invalid-mips4-wrong-error.s @@ -8,9 +8,6 @@ .set noat bc1fl $fcc7,27 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction bc1tl $fcc7,27 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - ld $sp,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwu $s3,-24086($v1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - scd $15,-8243($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - sd $12,5835($10) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + scd $15,-8243($sp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset sdl $a3,-20961($s8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction sdr $11,-20423($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction diff --git a/test/MC/Mips/mips2/invalid-mips4.s b/test/MC/Mips/mips2/invalid-mips4.s index 13923f01df86..fb9da85fd206 100644 --- a/test/MC/Mips/mips2/invalid-mips4.s +++ b/test/MC/Mips/mips2/invalid-mips4.s @@ -48,6 +48,7 @@ floor.l.s $f12,$f5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled ldxc1 $f8,$s7($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled lwxc1 $f12,$s1($s8) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + lwu $s3,-24086($v1) # CHECK: :[[@LINE]]:23: error: expected memory with 12-bit signed offset movf $gp,$8,$fcc0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled movf $gp,$8,$fcc7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction movf.d $f6,$f11,$fcc0 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled @@ -65,8 +66,10 @@ movz $a1,$s6,$9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled movz.d $f12,$f29,$9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled movz.s $f25,$f7,$v1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + ld $sp,-28645($s1) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset round.l.d $f12,$f1 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled round.l.s $f25,$f5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sd $12,5835($10) # CHECK: :[[@LINE]]:23: error: expected memory with 16-bit signed offset sdxc1 $f11,$10($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled trunc.l.d $f23,$f23 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled trunc.l.s $f28,$f31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/mips2/valid.s b/test/MC/Mips/mips2/valid.s index 026a3a28558a..80324dcfe452 100644 --- a/test/MC/Mips/mips2/valid.s +++ b/test/MC/Mips/mips2/valid.s @@ -146,6 +146,8 @@ a: swl $15,13694($s3) swr $s1,-26590($14) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -168,9 +170,35 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f14 # encoding: [0x46,0x20,0x75,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips3/valid.s b/test/MC/Mips/mips3/valid.s index 2e62343c3342..bcc96b5aed1d 100644 --- a/test/MC/Mips/mips3/valid.s +++ b/test/MC/Mips/mips3/valid.s @@ -210,6 +210,8 @@ a: swl $15,13694($s3) swr $s1,-26590($14) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -232,11 +234,44 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.l.d $f23,$f23 - trunc.l.s $f28,$f31 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.l.d $f23,$f23 # CHECK: trunc.l.d $f23, $f23 # encoding: [0x46,0x20,0xbd,0xc9] + trunc.l.s $f28,$f31 # CHECK: trunc.l.s $f28, $f31 # encoding: [0x46,0x00,0xff,0x09] + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f15 # encoding: [0x46,0x20,0x7d,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + lwu $3, %lo(g_8)($2) # CHECK: encoding: [0x9c,0x43,A,A] + ld $3, %lo(g_8)($2) # CHECK: encoding: [0xdc,0x43,A,A] + sd $3, %lo(g_8)($2) # CHECK: encoding: [0xfc,0x43,A,A] + ldl $3, %lo(g_8)($2) # CHECK: encoding: [0x68,0x43,A,A] + ldr $3, %lo(g_8)($2) # CHECK: encoding: [0x6c,0x43,A,A] + sdl $3, %lo(g_8)($2) # CHECK: encoding: [0xb0,0x43,A,A] + sdr $3, %lo(g_8)($2) # CHECK: encoding: [0xb4,0x43,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips32/valid.s b/test/MC/Mips/mips32/valid.s index 5f0769d92837..53d08df04afe 100644 --- a/test/MC/Mips/mips32/valid.s +++ b/test/MC/Mips/mips32/valid.s @@ -176,6 +176,8 @@ a: swr $s1,-26590($14) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -198,9 +200,35 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f14 # encoding: [0x46,0x20,0x75,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips32r2/invalid-dsp.s b/test/MC/Mips/mips32r2/invalid-dsp.s index 66e5f63129ac..2314d39e812a 100644 --- a/test/MC/Mips/mips32r2/invalid-dsp.s +++ b/test/MC/Mips/mips32r2/invalid-dsp.s @@ -77,7 +77,7 @@ precrq_rs.ph.w $a1,$k0,$a3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled precrqu_s.qb.ph $zero,$gp,$s5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled raddu.w.qb $25,$s3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled - repl.ph $at,-307 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + repl.ph $at,307 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled replv.ph $v1,$s7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled replv.qb $25,$12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled shilo $ac1,26 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/mips32r2/invalid-dspr2.s b/test/MC/Mips/mips32r2/invalid-dspr2.s index 5c31b465ca1f..026ae1838203 100644 --- a/test/MC/Mips/mips32r2/invalid-dspr2.s +++ b/test/MC/Mips/mips32r2/invalid-dspr2.s @@ -103,7 +103,7 @@ precrq_rs.ph.w $a1,$k0,$a3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled precrqu_s.qb.ph $zero,$gp,$s5 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled raddu.w.qb $25,$s3 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled - repl.ph $at,-307 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + repl.ph $at,307 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled replv.ph $v1,$s7 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled replv.qb $25,$12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled shilo $ac1,26 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/mips32r2/invalid.s b/test/MC/Mips/mips32r2/invalid.s index 6001aeacf9b3..888bed8bd179 100644 --- a/test/MC/Mips/mips32r2/invalid.s +++ b/test/MC/Mips/mips32r2/invalid.s @@ -6,6 +6,10 @@ .text .set noreorder + addiu $2, $3, -32769 # CHECK: :[[@LINE]]:23: error: expected 16-bit signed immediate + addiu $2, $3, 65536 # CHECK: :[[@LINE]]:23: error: expected 16-bit signed immediate + andi $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate + andi $2, $3, 65536 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate cache -1, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate cache 32, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate # FIXME: Check '0 < pos + size <= 32' constraint on ext @@ -18,13 +22,25 @@ ins $2, $3, 32, 1 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate jalr.hb $31 # CHECK: :[[@LINE]]:9: error: source and destination must be different jalr.hb $31, $31 # CHECK: :[[@LINE]]:9: error: source and destination must be different + lwc2 $2, -32769($3) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $2, 32768($3) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + ori $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 16-bit unsigned immediate + ori $2, $3, 65536 # CHECK: :[[@LINE]]:21: error: expected 16-bit unsigned immediate pref -1, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + sdbbp -1 # CHECK: :[[@LINE]]:15: error: expected 20-bit unsigned immediate + sdbbp 1048576 # CHECK: :[[@LINE]]:15: error: expected 20-bit unsigned immediate sll $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate sll $2, $3, 32 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate srl $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate srl $2, $3, 32 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate sra $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate sra $2, $3, 32 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate + sync -1 # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + sync 32 # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + syscall -1 # CHECK: :[[@LINE]]:17: error: expected 20-bit unsigned immediate + syscall 1048576 # CHECK: :[[@LINE]]:17: error: expected 20-bit unsigned immediate rotr $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate rotr $2, $3, 32 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + xori $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate + xori $2, $3, 65536 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate diff --git a/test/MC/Mips/mips32r2/valid.s b/test/MC/Mips/mips32r2/valid.s index d8e491ecd0b1..a2b597911413 100644 --- a/test/MC/Mips/mips32r2/valid.s +++ b/test/MC/Mips/mips32r2/valid.s @@ -213,6 +213,8 @@ a: swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -235,11 +237,37 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f14 # encoding: [0x46,0x20,0x75,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] wsbh $k1,$9 xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] synci -15842($a2) # CHECK: synci -15842($6) # encoding: [0x04,0xdf,0xc2,0x1e] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips32r3/valid.s b/test/MC/Mips/mips32r3/valid.s index 93859dbd1d51..c4c7069b3c42 100644 --- a/test/MC/Mips/mips32r3/valid.s +++ b/test/MC/Mips/mips32r3/valid.s @@ -213,6 +213,8 @@ a: swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -235,11 +237,37 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f14 # encoding: [0x46,0x20,0x75,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] wsbh $k1,$9 xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] synci -15842($a2) # CHECK: synci -15842($6) # encoding: [0x04,0xdf,0xc2,0x1e] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips32r5/invalid.s b/test/MC/Mips/mips32r5/invalid.s index 0d83005d5ccc..555d9e3af5ae 100644 --- a/test/MC/Mips/mips32r5/invalid.s +++ b/test/MC/Mips/mips32r5/invalid.s @@ -12,3 +12,57 @@ jalr.hb $31, $31 # CHECK: :[[@LINE]]:9: error: source and destination must be different pref -1, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + mtc0 $4, $3, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mtc0 $4, $3, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mtc2 $4, $3, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mtc2 $4, $3, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mfc0 $4, $3, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mfc0 $4, $3, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mfc2 $4, $3, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mfc2 $4, $3, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + lb $32, 8($5) # CHECK: :[[@LINE]]:12: error: invalid operand for instruction + lb $4, -32769($5) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lb $4, 32768($5) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lb $4, 8($32) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lbu $32, 8($5) # CHECK: :[[@LINE]]:13: error: invalid operand for instruction + lbu $4, -32769($5) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + lbu $4, 32768($5) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + lbu $4, 8($32) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + ldc1 $f32, 300($10) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + ldc1 $f7, -32769($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc1 $f7, 32768($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc1 $f7, 300($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f32, 64($10) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + sdc1 $f7, -32769($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f7, 32768($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f7, 64($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f32, 32($5) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + lwc1 $f2, -32769($5) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f2, 32768($5) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f2, 32($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f32, 369($13) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + swc1 $f6, -32769($13) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f6, 32768($13) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f6, 369($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc2 $32, 1023($12) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + ldc2 $1, -32769($12) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + ldc2 $1, 32768($12) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + ldc2 $1, 1023($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + sdc2 $32, 8($16) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + sdc2 $1, -32769($16) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + sdc2 $1, 32768($16) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + sdc2 $1, 8($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $32, 16($4) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + lwc2 $1, -32769($4) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $1, 32768($4) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $1, 16($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + swc2 $32, 777($17) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + swc2 $1, -32769($17) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + swc2 $1, 32768($17) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + swc2 $1, 777($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $11, -32769($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc2 $11, 32768($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc2 $11, -32769($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc2 $11, 32768($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc2 $11, -32769($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc2 $11, 32768($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset diff --git a/test/MC/Mips/mips32r5/valid.s b/test/MC/Mips/mips32r5/valid.s index e0c1711fbe6e..d1970021ab72 100644 --- a/test/MC/Mips/mips32r5/valid.s +++ b/test/MC/Mips/mips32r5/valid.s @@ -214,6 +214,8 @@ a: swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -236,11 +238,37 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f14 # encoding: [0x46,0x20,0x75,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] wsbh $k1,$9 xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] synci -15842($a2) # CHECK: synci -15842($6) # encoding: [0x04,0xdf,0xc2,0x1e] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips32r6/invalid-mips1-wrong-error.s b/test/MC/Mips/mips32r6/invalid-mips1-wrong-error.s index 6d569d12b396..deafbb02eca4 100644 --- a/test/MC/Mips/mips32r6/invalid-mips1-wrong-error.s +++ b/test/MC/Mips/mips32r6/invalid-mips1-wrong-error.s @@ -11,8 +11,8 @@ lwr $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swl $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swr $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $24, 5($3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $24, 5($3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset diff --git a/test/MC/Mips/mips32r6/invalid-mips5-wrong-error.s b/test/MC/Mips/mips32r6/invalid-mips5-wrong-error.s index b5d738093186..b26cc4e23283 100644 --- a/test/MC/Mips/mips32r6/invalid-mips5-wrong-error.s +++ b/test/MC/Mips/mips32r6/invalid-mips5-wrong-error.s @@ -9,3 +9,15 @@ bc1any2t $fcc2,4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction bc1any4f $fcc2,4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction bc1any4t $fcc2,4 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: unknown instruction + ldc2 $1, -2049($12) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + ldc2 $1, 2048($12) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + ldc2 $1, 1023($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $1, -2049($4) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + lwc2 $1, 2048($4) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + lwc2 $1, 16($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + sdc2 $1, -2049($16) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + sdc2 $1, 2048($16) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + sdc2 $1, 8($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + swc2 $1, -2049($17) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + swc2 $1, 2048($17) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + swc2 $1, 777($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset diff --git a/test/MC/Mips/mips32r6/invalid.s b/test/MC/Mips/mips32r6/invalid.s index 1656ac1da350..67c1fbf07223 100644 --- a/test/MC/Mips/mips32r6/invalid.s +++ b/test/MC/Mips/mips32r6/invalid.s @@ -12,8 +12,6 @@ local_label: align $4, $2, $3, 4 # CHECK: :[[@LINE]]:29: error: expected 2-bit unsigned immediate jalr.hb $31 # CHECK: :[[@LINE]]:9: error: source and destination must be different jalr.hb $31, $31 # CHECK: :[[@LINE]]:9: error: source and destination must be different - ldc2 $8,-21181($at) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled - sdc2 $20,23157($s2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled swc2 $25,24880($s0) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled break -1 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate break 1024 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate @@ -22,7 +20,23 @@ local_label: break 7, -1 # CHECK: :[[@LINE]]:18: error: expected 10-bit unsigned immediate break 7, 1024 # CHECK: :[[@LINE]]:18: error: expected 10-bit unsigned immediate break 1024, 1024 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate - // FIXME: Following tests are temporarely disabled, until "PredicateControl not in hierarchy" problem is resolved + lh $33, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhe $34, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhu $35, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhue $36, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lh $2, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, 8($33) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, 8($35) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, 8($37) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lh $2, -65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lh $2, 65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhe $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, -65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhu $4, 65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhue $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + // FIXME: Following tests are temporarily disabled, until "PredicateControl not in hierarchy" problem is resolved bltl $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled bltul $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled blel $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled @@ -31,11 +45,79 @@ local_label: bgeul $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled bgtl $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled bgtul $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + bgec $0, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bltc $0, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bgeuc $0, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bltuc $0, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + beqc $0, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bnec $0, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bgec $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + bltc $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + bgeuc $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + bltuc $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + beqc $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + bnec $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + blezc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bgezc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bgtzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bltzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + beqzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bnezc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction cache -1, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate cache 32, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate jalr.hb $31 # CHECK: :[[@LINE]]:9: error: source and destination must be different jalr.hb $31, $31 # CHECK: :[[@LINE]]:9: error: source and destination must be different + ldc2 $20, -1025($s2) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + ldc2 $20, 1024($s2) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled lsa $2, $3, $4, 0 # CHECK: :[[@LINE]]:25: error: expected immediate in range 1 .. 4 lsa $2, $3, $4, 5 # CHECK: :[[@LINE]]:25: error: expected immediate in range 1 .. 4 pref -1, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + mtc0 $4, $3, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mtc0 $4, $3, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mtc2 $4, $3, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mtc2 $4, $3, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mfc0 $4, $3, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mfc0 $4, $3, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mfc2 $4, $3, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + mfc2 $4, $3, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + sdc2 $20, -1025($s2) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + sdc2 $20, 1024($s2) # CHECK: :[[@LINE]]:9: error: instruction requires a CPU feature not currently enabled + sync -1 # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + sync 32 # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + lb $32, 8($5) # CHECK: :[[@LINE]]:12: error: invalid operand for instruction + lb $4, -32769($5) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lb $4, 32768($5) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lb $4, 8($32) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lbu $32, 8($5) # CHECK: :[[@LINE]]:13: error: invalid operand for instruction + lbu $4, -32769($5) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + lbu $4, 32768($5) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + lbu $4, 8($32) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + ldc1 $f32, 300($10) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + ldc1 $f7, -32769($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc1 $f7, 32768($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc1 $f7, 300($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f32, 64($10) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + sdc1 $f7, -32769($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f7, 32768($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f7, 64($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f32, 32($5) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + lwc1 $f2, -32769($5) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f2, 32768($5) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f2, 32($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f32, 369($13) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + swc1 $f6, -32769($13) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f6, 32768($13) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f6, 369($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc2 $32, 1023($12) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + ldc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + ldc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sdc2 $32, 8($16) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + sdc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sdc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + lwc2 $32, 16($4) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + lwc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + lwc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + swc2 $32, 777($17) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + swc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + swc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/mips32r6/relocations.s b/test/MC/Mips/mips32r6/relocations.s index eda749707065..3c5728962491 100644 --- a/test/MC/Mips/mips32r6/relocations.s +++ b/test/MC/Mips/mips32r6/relocations.s @@ -28,11 +28,11 @@ # CHECK-FIXUP: value: bar-4, kind: fixup_MIPS_PC26_S2 # CHECK-FIXUP: aluipc $2, %pcrel_hi(bar) # encoding: [0xec,0x5f,A,A] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: bar@PCREL_HI16, +# CHECK-FIXUP: value: %pcrel_hi(bar), # CHECK-FIXUP: kind: fixup_MIPS_PCHI16 # CHECK-FIXUP: addiu $2, $2, %pcrel_lo(bar) # encoding: [0x24,0x42,A,A] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: bar@PCREL_LO16, +# CHECK-FIXUP: value: %pcrel_lo(bar), # CHECK-FIXUP: kind: fixup_MIPS_PCLO16 # CHECK-FIXUP: lwpc $2, bar # encoding: [0xec,0b01001AAA,A,A] # CHECK-FIXUP: # fixup A - offset: 0, diff --git a/test/MC/Mips/mips32r6/valid-xfail.s b/test/MC/Mips/mips32r6/valid-xfail.s deleted file mode 100644 index 0c911d71f47e..000000000000 --- a/test/MC/Mips/mips32r6/valid-xfail.s +++ /dev/null @@ -1,19 +0,0 @@ -# Instructions that should be valid but currently fail for known reasons (e.g. -# they aren't implemented yet). -# This test is set up to XPASS if any instruction generates an encoding. -# -# RUN: not llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r6 | not FileCheck %s -# CHECK-NOT: encoding -# XFAIL: * - - .set noat - bovc $0, $2, 4 # TODO: bovc $0, $2, 4 # encoding: [0x20,0x40,0x00,0x01] - bovc $2, $4, 4 # TODO: bovc $2, $4, 4 # encoding: [0x20,0x82,0x00,0x01] - bnvc $0, $2, 4 # TODO: bnvc $0, $2, 4 # encoding: [0x60,0x40,0x00,0x01] - bnvc $2, $4, 4 # TODO: bnvc $2, $4, 4 # encoding: [0x60,0x82,0x00,0x01] - beqc $0, $6, 256 # TODO: beqc $6, $zero, 256 # encoding: [0x20,0xc0,0x00,0x40] - beqc $5, $0, 256 # TODO: beqc $5, $zero, 256 # encoding: [0x20,0xa0,0x00,0x40] - beqc $6, $5, 256 # TODO: beqc $5, $6, 256 # encoding: [0x20,0xa6,0x00,0x40] - bnec $0, $6, 256 # TODO: bnec $6, $zero, 256 # encoding: [0x60,0xc0,0x00,0x40] - bnec $5, $0, 256 # TODO: bnec $5, $zero, 256 # encoding: [0x60,0xa0,0x00,0x40] - bnec $6, $5, 256 # TODO: bnec $5, $6, 256 # encoding: [0x60,0xa6,0x00,0x40] diff --git a/test/MC/Mips/mips32r6/valid.s b/test/MC/Mips/mips32r6/valid.s index e4786d0e4ec4..6b27ac102deb 100644 --- a/test/MC/Mips/mips32r6/valid.s +++ b/test/MC/Mips/mips32r6/valid.s @@ -33,13 +33,13 @@ a: bc2eqz $31,8 # CHECK: bc2eqz $31, 8 # encoding: [0x49,0x3f,0x00,0x02] bc2nez $0,8 # CHECK: bc2nez $0, 8 # encoding: [0x49,0xa0,0x00,0x02] bc2nez $31,8 # CHECK: bc2nez $31, 8 # encoding: [0x49,0xbf,0x00,0x02] - # beqc requires rs < rt && rs != 0 but we also accept when this is not true. See also bovc - # FIXME: Testcases are in valid-xfail.s at the moment - beqc $5, $6, 256 # CHECK: beqc $5, $6, 256 # encoding: [0x20,0xa6,0x00,0x40] + # beqc requires rs < rt && rs != 0 but we accept this and fix it. See also bovc. + beqc $5, $6, 256 # CHECK: beqc $5, $6, 256 # encoding: [0x20,0xa6,0x00,0x40] + beqc $6, $5, 256 # CHECK: beqc $6, $5, 256 # encoding: [0x20,0xa6,0x00,0x40] beqzalc $2, 1332 # CHECK: beqzalc $2, 1332 # encoding: [0x20,0x02,0x01,0x4d] - # bnec requires rs < rt && rs != 0 but we accept when this is not true. See also bnvc - # FIXME: Testcases are in valid-xfail.s at the moment + # bnec requires rs < rt && rs != 0 but we accept this and fix it. See also bnvc. bnec $5, $6, 256 # CHECK: bnec $5, $6, 256 # encoding: [0x60,0xa6,0x00,0x40] + bnec $6, $5, 256 # CHECK: bnec $6, $5, 256 # encoding: [0x60,0xa6,0x00,0x40] bnezalc $2, 1332 # CHECK: bnezalc $2, 1332 # encoding: [0x60,0x02,0x01,0x4d] beqzc $5, 72256 # CHECK: beqzc $5, 72256 # encoding: [0xd8,0xa0,0x46,0x90] bgec $2, $3, 256 # CHECK: bgec $2, $3, 256 # encoding: [0x58,0x43,0x00,0x40] @@ -56,14 +56,14 @@ a: blezalc $2, 1332 # CHECK: blezalc $2, 1332 # encoding: [0x18,0x02,0x01,0x4d] bltc $5, $6, 256 # CHECK: bltc $5, $6, 256 # encoding: [0x5c,0xa6,0x00,0x40] bltuc $5, $6, 256 # CHECK: bltuc $5, $6, 256 # encoding: [0x1c,0xa6,0x00,0x40] - # bnvc requires that rs >= rt but we accept both. See also bnec + # bnvc requires that rs >= rt but we accept both and fix this. See also bnec. bnvc $0, $0, 4 # CHECK: bnvc $zero, $zero, 4 # encoding: [0x60,0x00,0x00,0x01] bnvc $2, $0, 4 # CHECK: bnvc $2, $zero, 4 # encoding: [0x60,0x40,0x00,0x01] - bnvc $4, $2, 4 # CHECK: bnvc $4, $2, 4 # encoding: [0x60,0x82,0x00,0x01] - # bovc requires that rs >= rt but we accept both. See also beqc + bnvc $2, $4, 4 # CHECK: bnvc $2, $4, 4 # encoding: [0x60,0x82,0x00,0x01] + # bovc requires that rs >= rt but we accept both and fix this. See also beqc. bovc $0, $0, 4 # CHECK: bovc $zero, $zero, 4 # encoding: [0x20,0x00,0x00,0x01] bovc $2, $0, 4 # CHECK: bovc $2, $zero, 4 # encoding: [0x20,0x40,0x00,0x01] - bovc $4, $2, 4 # CHECK: bovc $4, $2, 4 # encoding: [0x20,0x82,0x00,0x01] + bovc $2, $4, 4 # CHECK: bovc $2, $4, 4 # encoding: [0x20,0x82,0x00,0x01] cache 1, 8($5) # CHECK: cache 1, 8($5) # encoding: [0x7c,0xa1,0x04,0x25] cmp.af.s $f2,$f3,$f4 # CHECK: cmp.af.s $f2, $f3, $f4 # encoding: [0x46,0x84,0x18,0x80] cmp.af.d $f2,$f3,$f4 # CHECK: cmp.af.d $f2, $f3, $f4 # encoding: [0x46,0xa4,0x18,0x80] @@ -161,8 +161,14 @@ a: j 1328 # CHECK: j 1328 # encoding: [0x08,0x00,0x01,0x4c] jal 21100 # CHECK: jal 21100 # encoding: [0x0c,0x00,0x14,0x9b] jr.hb $4 # CHECK: jr.hb $4 # encoding: [0x00,0x80,0x04,0x09] + jr $ra # CHECK: jr $ra # encoding: [0x03,0xe0,0x00,0x09] + jr $25 # CHECK: jr $25 # encoding: [0x03,0x20,0x00,0x09] + jrc $27 # CHECK: jrc $27 # encoding: [0xd8,0x1b,0x00,0x00] jalr.hb $4 # CHECK: jalr.hb $4 # encoding: [0x00,0x80,0xfc,0x09] jalr.hb $4, $5 # CHECK: jalr.hb $4, $5 # encoding: [0x00,0xa0,0x24,0x09] + jalrc $25 # CHECK: jalrc $25 # encoding: [0xf8,0x19,0x00,0x00] + jialc $15, 16161 # CHECK: jialc $15, 16161 # encoding: [0xf8,0x0f,0x3f,0x21] + jic $12, -3920 # CHECK: jic $12, -3920 # encoding: [0xd8,0x0c,0xf0,0xb0] ldc2 $8, -701($at) # CHECK: ldc2 $8, -701($1) # encoding: [0x49,0xc8,0x0d,0x43] lwc2 $18,-841($a2) # CHECK: lwc2 $18, -841($6) # encoding: [0x49,0x52,0x34,0xb7] sdc2 $20,629($s2) # CHECK: sdc2 $20, 629($18) # encoding: [0x49,0xf4,0x92,0x75] @@ -177,6 +183,8 @@ a: sdbbp 34 # CHECK: sdbbp 34 # encoding: [0x00,0x00,0x08,0x8e] sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] tge $7,$10 # CHECK: tge $7, $10 # encoding: [0x00,0xea,0x00,0x30] @@ -192,3 +200,22 @@ a: xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips4/valid.s b/test/MC/Mips/mips4/valid.s index fcea8ead8a7d..0a4eb4d60cca 100644 --- a/test/MC/Mips/mips4/valid.s +++ b/test/MC/Mips/mips4/valid.s @@ -239,6 +239,8 @@ a: swr $s1,-26590($14) swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -261,11 +263,44 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.l.d $f23,$f23 - trunc.l.s $f28,$f31 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.l.d $f23,$f23 # CHECK: trunc.l.d $f23, $f23 # encoding: [0x46,0x20,0xbd,0xc9] + trunc.l.s $f28,$f31 # CHECK: trunc.l.s $f28, $f31 # encoding: [0x46,0x00,0xff,0x09] + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f15 # encoding: [0x46,0x20,0x7d,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + lwu $3, %lo(g_8)($2) # CHECK: encoding: [0x9c,0x43,A,A] + ld $3, %lo(g_8)($2) # CHECK: encoding: [0xdc,0x43,A,A] + sd $3, %lo(g_8)($2) # CHECK: encoding: [0xfc,0x43,A,A] + ldl $3, %lo(g_8)($2) # CHECK: encoding: [0x68,0x43,A,A] + ldr $3, %lo(g_8)($2) # CHECK: encoding: [0x6c,0x43,A,A] + sdl $3, %lo(g_8)($2) # CHECK: encoding: [0xb0,0x43,A,A] + sdr $3, %lo(g_8)($2) # CHECK: encoding: [0xb4,0x43,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips5/valid.s b/test/MC/Mips/mips5/valid.s index 36f3ce14dc63..270ff16c8a99 100644 --- a/test/MC/Mips/mips5/valid.s +++ b/test/MC/Mips/mips5/valid.s @@ -241,6 +241,8 @@ a: swr $s1,-26590($14) swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -263,11 +265,44 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.l.d $f23,$f23 - trunc.l.s $f28,$f31 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.l.d $f23,$f23 # CHECK: trunc.l.d $f23, $f23 # encoding: [0x46,0x20,0xbd,0xc9] + trunc.l.s $f28,$f31 # CHECK: trunc.l.s $f28, $f31 # encoding: [0x46,0x00,0xff,0x09] + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f15 # encoding: [0x46,0x20,0x7d,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + lwu $3, %lo(g_8)($2) # CHECK: encoding: [0x9c,0x43,A,A] + ld $3, %lo(g_8)($2) # CHECK: encoding: [0xdc,0x43,A,A] + sd $3, %lo(g_8)($2) # CHECK: encoding: [0xfc,0x43,A,A] + ldl $3, %lo(g_8)($2) # CHECK: encoding: [0x68,0x43,A,A] + ldr $3, %lo(g_8)($2) # CHECK: encoding: [0x6c,0x43,A,A] + sdl $3, %lo(g_8)($2) # CHECK: encoding: [0xb0,0x43,A,A] + sdr $3, %lo(g_8)($2) # CHECK: encoding: [0xb4,0x43,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips64-expansions.s b/test/MC/Mips/mips64-expansions.s index 0b56cf501283..f84ee8af9e15 100644 --- a/test/MC/Mips/mips64-expansions.s +++ b/test/MC/Mips/mips64-expansions.s @@ -84,6 +84,17 @@ # CHECK: beq $2, $1, 1332 # encoding: [0x4d,0x01,0x41,0x10] # CHECK: nop # encoding: [0x00,0x00,0x00,0x00] +# Test one with a symbol in the third operand. +sym: + bne $2, 0x100010001, sym +# CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24] +# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00] +# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34] +# CHECK: dsll $1, $1, 16 # encoding: [0x38,0x0c,0x01,0x00] +# CHECK: ori $1, $1, 1 # encoding: [0x01,0x00,0x21,0x34] +# CHECK: bne $2, $1, sym # encoding: [A,A,0x41,0x14] +# CHECK: nop # encoding: [0x00,0x00,0x00,0x00] + # Test ulhu with 64-bit immediate addresses. ulhu $8, 0x100010001 # CHECK: addiu $1, $zero, 1 # encoding: [0x01,0x00,0x01,0x24] diff --git a/test/MC/Mips/mips64/abiflags.s b/test/MC/Mips/mips64/abiflags.s index ecaffcc3465c..10c768942a1e 100644 --- a/test/MC/Mips/mips64/abiflags.s +++ b/test/MC/Mips/mips64/abiflags.s @@ -1,7 +1,7 @@ -# RUN: llvm-mc %s -arch=mips -mcpu=mips64 | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n64 | \ # RUN: FileCheck %s -check-prefix=CHECK-ASM # -# RUN: llvm-mc %s -arch=mips -mcpu=mips64 -filetype=obj -o - | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n64 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ # RUN: FileCheck %s -check-prefix=CHECK-OBJ diff --git a/test/MC/Mips/mips64/invalid-mips64r2.s b/test/MC/Mips/mips64/invalid-mips64r2.s index 1caa2bdea008..4d8411634f22 100644 --- a/test/MC/Mips/mips64/invalid-mips64r2.s +++ b/test/MC/Mips/mips64/invalid-mips64r2.s @@ -6,6 +6,12 @@ .set noat di $s8 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + dext $1, $2, 12, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + dextm $1, $2, 21, 43 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + dextu $1, $2, 33, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + dins $1, $2, 12, 12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + dinsm $1, $2, 21, 43 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + dinsu $1, $2, 33, 16 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled drotr $1,15 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled drotr $1,$14,15 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled drotr32 $1,15 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled @@ -23,3 +29,13 @@ seb $25,$15 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled seh $v1,$12 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled wsbh $k1,$9 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + dins $2, $3, -1, 1 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + dins $2, $3, 64, 1 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + dinsm $2, $3, -1, 1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + dinsm $2, $3, 32, 1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + dinsm $2, $3, 31, 0 # CHECK: :[[@LINE]]:27: error: expected immediate in range 2 .. 64 + dinsm $2, $3, 31, 65 # CHECK: :[[@LINE]]:27: error: expected immediate in range 2 .. 64 + dinsu $2, $3, 31, 1 # CHECK: :[[@LINE]]:23: error: expected immediate in range 32 .. 63 + dinsu $2, $3, 64, 1 # CHECK: :[[@LINE]]:23: error: expected immediate in range 32 .. 63 + dinsu $2, $3, 63, 0 # CHECK: :[[@LINE]]:27: error: expected immediate in range 1 .. 32 + dinsu $2, $3, 32, 33 # CHECK: :[[@LINE]]:27: error: expected immediate in range 1 .. 32 diff --git a/test/MC/Mips/mips64/valid.s b/test/MC/Mips/mips64/valid.s index 92afbb395465..0ba831b841b8 100644 --- a/test/MC/Mips/mips64/valid.s +++ b/test/MC/Mips/mips64/valid.s @@ -260,6 +260,8 @@ a: swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -282,11 +284,44 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.l.d $f23,$f23 - trunc.l.s $f28,$f31 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.l.d $f23,$f23 # CHECK: trunc.l.d $f23, $f23 # encoding: [0x46,0x20,0xbd,0xc9] + trunc.l.s $f28,$f31 # CHECK: trunc.l.s $f28, $f31 # encoding: [0x46,0x00,0xff,0x09] + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f15 # encoding: [0x46,0x20,0x7d,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + lwu $3, %lo(g_8)($2) # CHECK: encoding: [0x9c,0x43,A,A] + ld $3, %lo(g_8)($2) # CHECK: encoding: [0xdc,0x43,A,A] + sd $3, %lo(g_8)($2) # CHECK: encoding: [0xfc,0x43,A,A] + ldl $3, %lo(g_8)($2) # CHECK: encoding: [0x68,0x43,A,A] + ldr $3, %lo(g_8)($2) # CHECK: encoding: [0x6c,0x43,A,A] + sdl $3, %lo(g_8)($2) # CHECK: encoding: [0xb0,0x43,A,A] + sdr $3, %lo(g_8)($2) # CHECK: encoding: [0xb4,0x43,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips64extins.ll b/test/MC/Mips/mips64extins.ll deleted file mode 100644 index 093bc87b90bc..000000000000 --- a/test/MC/Mips/mips64extins.ll +++ /dev/null @@ -1,57 +0,0 @@ -; RUN: llc -march=mips64el -filetype=obj -mcpu=mips64r2 -target-abi=n64 %s -o - \ -; RUN: | llvm-objdump -disassemble -triple mips64el -mattr +mips64r2 - \ -; RUN: | FileCheck %s - -define i64 @dext(i64 %i) nounwind readnone { -entry: -; CHECK: dext ${{[0-9]+}}, ${{[0-9]+}}, 5, 10 - %shr = lshr i64 %i, 5 - %and = and i64 %shr, 1023 - ret i64 %and -} - -define i64 @dextu(i64 %i) nounwind readnone { -entry: -; CHECK: dextu ${{[0-9]+}}, ${{[0-9]+}}, 2, 6 - %shr = lshr i64 %i, 34 - %and = and i64 %shr, 63 - ret i64 %and -} - -define i64 @dextm(i64 %i) nounwind readnone { -entry: -; CHECK: dextm ${{[0-9]+}}, ${{[0-9]+}}, 5, 2 - %shr = lshr i64 %i, 5 - %and = and i64 %shr, 17179869183 - ret i64 %and -} - -define i64 @dins(i64 %i, i64 %j) nounwind readnone { -entry: -; CHECK: dins ${{[0-9]+}}, ${{[0-9]+}}, 8, 10 - %shl2 = shl i64 %j, 8 - %and = and i64 %shl2, 261888 - %and3 = and i64 %i, -261889 - %or = or i64 %and3, %and - ret i64 %or -} - -define i64 @dinsm(i64 %i, i64 %j) nounwind readnone { -entry: -; CHECK: dinsm ${{[0-9]+}}, ${{[0-9]+}}, 10, 1 - %shl4 = shl i64 %j, 10 - %and = and i64 %shl4, 8796093021184 - %and5 = and i64 %i, -8796093021185 - %or = or i64 %and5, %and - ret i64 %or -} - -define i64 @dinsu(i64 %i, i64 %j) nounwind readnone { -entry: -; CHECK: dinsu ${{[0-9]+}}, ${{[0-9]+}}, 8, 13 - %shl4 = shl i64 %j, 40 - %and = and i64 %shl4, 9006099743113216 - %and5 = and i64 %i, -9006099743113217 - %or = or i64 %and5, %and - ret i64 %or -} diff --git a/test/MC/Mips/mips64extins.s b/test/MC/Mips/mips64extins.s new file mode 100644 index 000000000000..3f1973bf52de --- /dev/null +++ b/test/MC/Mips/mips64extins.s @@ -0,0 +1,9 @@ +# RUN: llvm-mc -arch=mips64el -filetype=obj -mcpu=mips64r2 -target-abi=n64 %s -o - \ +# RUN: | llvm-objdump -disassemble - | FileCheck %s + + dext $2, $4, 5, 10 # CHECK: dext ${{[0-9]+}}, ${{[0-9]+}}, 5, 10 + dextu $2, $4, 34, 6 # CHECK: dextu ${{[0-9]+}}, ${{[0-9]+}}, 34, 6 + dextm $2, $4, 5, 34 # CHECK: dextm ${{[0-9]+}}, ${{[0-9]+}}, 5, 34 + dins $4, $5, 8, 10 # CHECK: dins ${{[0-9]+}}, ${{[0-9]+}}, 8, 10 + dinsm $4, $5, 10, 1 # CHECK: dinsm ${{[0-9]+}}, ${{[0-9]+}}, 10, 1 + dinsu $4, $5, 40, 13 # CHECK: dinsu ${{[0-9]+}}, ${{[0-9]+}}, 40, 13 diff --git a/test/MC/Mips/mips64r2/abi-bad.s b/test/MC/Mips/mips64r2/abi-bad.s index 7070d4572471..78748804c429 100644 --- a/test/MC/Mips/mips64r2/abi-bad.s +++ b/test/MC/Mips/mips64r2/abi-bad.s @@ -1,4 +1,4 @@ -# RUN: not llvm-mc %s -triple mips-unknown-linux -mcpu=mips64r2 2>&1 | FileCheck %s +# RUN: not llvm-mc %s -triple mips-unknown-linux -mcpu=mips64r2 -target-abi n64 2>&1 | FileCheck %s .set fp=xx # CHECK: error: '.set fp=xx' requires the O32 ABI # CHECK: .set fp=xx diff --git a/test/MC/Mips/mips64r2/abiflags.s b/test/MC/Mips/mips64r2/abiflags.s index dc4a1e946e3e..ece133f8f0e2 100644 --- a/test/MC/Mips/mips64r2/abiflags.s +++ b/test/MC/Mips/mips64r2/abiflags.s @@ -1,7 +1,7 @@ -# RUN: llvm-mc %s -arch=mips -mcpu=mips64r2 | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips64r2 -target-abi n64 | \ # RUN: FileCheck %s -check-prefix=CHECK-ASM # -# RUN: llvm-mc %s -arch=mips -mcpu=mips64r2 -filetype=obj -o - | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips64r2 -target-abi n64 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ # RUN: FileCheck %s -check-prefix=CHECK-OBJ diff --git a/test/MC/Mips/mips64r2/invalid.s b/test/MC/Mips/mips64r2/invalid.s index 86bfc959fff0..84438c615281 100644 --- a/test/MC/Mips/mips64r2/invalid.s +++ b/test/MC/Mips/mips64r2/invalid.s @@ -6,11 +6,13 @@ .text .set noreorder + andi $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate + andi $2, $3, 65536 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate cache -1, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate cache 32, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate # FIXME: Check various 'pos + size' constraints on dext* - dext $2, $3, -1, 1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate - dext $2, $3, 32, 1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + dext $2, $3, -1, 1 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + dext $2, $3, 64, 1 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate dext $2, $3, 1, 0 # CHECK: :[[@LINE]]:25: error: expected immediate in range 1 .. 32 dext $2, $3, 1, 33 # CHECK: :[[@LINE]]:25: error: expected immediate in range 1 .. 32 dextm $2, $3, -1, 1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate @@ -56,6 +58,8 @@ ins $2, $3, 32, 1 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate jalr.hb $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different jalr.hb $31, $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + ori $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 16-bit unsigned immediate + ori $2, $3, 65536 # CHECK: :[[@LINE]]:21: error: expected 16-bit unsigned immediate pref -1, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate sll $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate @@ -66,3 +70,5 @@ sra $2, $3, 32 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate rotr $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate rotr $2, $3, 32 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + xori $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate + xori $2, $3, 65536 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate diff --git a/test/MC/Mips/mips64r2/valid.s b/test/MC/Mips/mips64r2/valid.s index 9057fcef60b4..5ae3adc46eb9 100644 --- a/test/MC/Mips/mips64r2/valid.s +++ b/test/MC/Mips/mips64r2/valid.s @@ -286,6 +286,8 @@ a: swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -308,12 +310,46 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.l.d $f23,$f23 - trunc.l.s $f28,$f31 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.l.d $f23,$f23 # CHECK: trunc.l.d $f23, $f23 # encoding: [0x46,0x20,0xbd,0xc9] + trunc.l.s $f28,$f31 # CHECK: trunc.l.s $f28, $f31 # encoding: [0x46,0x00,0xff,0x09] + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f15 # encoding: [0x46,0x20,0x7d,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] wsbh $k1,$9 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + + lwu $3, %lo(g_8)($2) # CHECK: encoding: [0x9c,0x43,A,A] + ld $3, %lo(g_8)($2) # CHECK: encoding: [0xdc,0x43,A,A] + sd $3, %lo(g_8)($2) # CHECK: encoding: [0xfc,0x43,A,A] + ldl $3, %lo(g_8)($2) # CHECK: encoding: [0x68,0x43,A,A] + ldr $3, %lo(g_8)($2) # CHECK: encoding: [0x6c,0x43,A,A] + sdl $3, %lo(g_8)($2) # CHECK: encoding: [0xb0,0x43,A,A] + sdr $3, %lo(g_8)($2) # CHECK: encoding: [0xb4,0x43,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips64r3/abi-bad.s b/test/MC/Mips/mips64r3/abi-bad.s index 7691601bf29b..0f38fde5bf38 100644 --- a/test/MC/Mips/mips64r3/abi-bad.s +++ b/test/MC/Mips/mips64r3/abi-bad.s @@ -1,4 +1,4 @@ -# RUN: not llvm-mc %s -triple mips-unknown-linux -mcpu=mips64r3 2>&1 | FileCheck %s +# RUN: not llvm-mc %s -triple mips-unknown-linux -mcpu=mips64r3 -target-abi n64 2>&1 | FileCheck %s .set fp=xx # CHECK: error: '.set fp=xx' requires the O32 ABI # CHECK: .set fp=xx diff --git a/test/MC/Mips/mips64r3/abiflags.s b/test/MC/Mips/mips64r3/abiflags.s index e89be29ca2b9..e1461ccb3cbf 100644 --- a/test/MC/Mips/mips64r3/abiflags.s +++ b/test/MC/Mips/mips64r3/abiflags.s @@ -1,7 +1,7 @@ -# RUN: llvm-mc %s -arch=mips -mcpu=mips64r3 | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips64r3 -target-abi n64 | \ # RUN: FileCheck %s -check-prefix=CHECK-ASM # -# RUN: llvm-mc %s -arch=mips -mcpu=mips64r3 -filetype=obj -o - | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips64r3 -target-abi n64 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ # RUN: FileCheck %s -check-prefix=CHECK-OBJ diff --git a/test/MC/Mips/mips64r3/invalid.s b/test/MC/Mips/mips64r3/invalid.s index 99071211ba4b..160837388736 100644 --- a/test/MC/Mips/mips64r3/invalid.s +++ b/test/MC/Mips/mips64r3/invalid.s @@ -14,3 +14,4 @@ jalr.hb $31, $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different pref -1, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + sd $32, 65536($32) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction diff --git a/test/MC/Mips/mips64r3/valid.s b/test/MC/Mips/mips64r3/valid.s index 4e2717bdd15d..ab385daa96cb 100644 --- a/test/MC/Mips/mips64r3/valid.s +++ b/test/MC/Mips/mips64r3/valid.s @@ -286,6 +286,8 @@ a: swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -308,12 +310,45 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.l.d $f23,$f23 - trunc.l.s $f28,$f31 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.l.d $f23,$f23 # CHECK: trunc.l.d $f23, $f23 # encoding: [0x46,0x20,0xbd,0xc9] + trunc.l.s $f28,$f31 # CHECK: trunc.l.s $f28, $f31 # encoding: [0x46,0x00,0xff,0x09] + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f15 # encoding: [0x46,0x20,0x7d,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] wsbh $k1,$9 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + lwu $3, %lo(g_8)($2) # CHECK: encoding: [0x9c,0x43,A,A] + ld $3, %lo(g_8)($2) # CHECK: encoding: [0xdc,0x43,A,A] + sd $3, %lo(g_8)($2) # CHECK: encoding: [0xfc,0x43,A,A] + ldl $3, %lo(g_8)($2) # CHECK: encoding: [0x68,0x43,A,A] + ldr $3, %lo(g_8)($2) # CHECK: encoding: [0x6c,0x43,A,A] + sdl $3, %lo(g_8)($2) # CHECK: encoding: [0xb0,0x43,A,A] + sdr $3, %lo(g_8)($2) # CHECK: encoding: [0xb4,0x43,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips64r5/abi-bad.s b/test/MC/Mips/mips64r5/abi-bad.s index c6bb29a8b20d..b3d0588f9861 100644 --- a/test/MC/Mips/mips64r5/abi-bad.s +++ b/test/MC/Mips/mips64r5/abi-bad.s @@ -1,4 +1,4 @@ -# RUN: not llvm-mc %s -triple mips-unknown-linux -mcpu=mips64r5 2>&1 | FileCheck %s +# RUN: not llvm-mc %s -triple mips-unknown-linux -mcpu=mips64r5 -target-abi n64 2>&1 | FileCheck %s .set fp=xx # CHECK: error: '.set fp=xx' requires the O32 ABI # CHECK: .set fp=xx diff --git a/test/MC/Mips/mips64r5/abiflags.s b/test/MC/Mips/mips64r5/abiflags.s index 43a5fe618bcc..7972f5837de2 100644 --- a/test/MC/Mips/mips64r5/abiflags.s +++ b/test/MC/Mips/mips64r5/abiflags.s @@ -1,7 +1,7 @@ -# RUN: llvm-mc %s -arch=mips -mcpu=mips64r5 | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips64r5 -target-abi n64 | \ # RUN: FileCheck %s -check-prefix=CHECK-ASM # -# RUN: llvm-mc %s -arch=mips -mcpu=mips64r5 -filetype=obj -o - | \ +# RUN: llvm-mc %s -arch=mips -mcpu=mips64r5 -target-abi n64 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ # RUN: FileCheck %s -check-prefix=CHECK-OBJ diff --git a/test/MC/Mips/mips64r5/invalid.s b/test/MC/Mips/mips64r5/invalid.s index 3bdea15f5236..d13c52bd593d 100644 --- a/test/MC/Mips/mips64r5/invalid.s +++ b/test/MC/Mips/mips64r5/invalid.s @@ -14,3 +14,54 @@ jalr.hb $31, $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different pref -1, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + dmtc0 $4, $3, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + dmtc0 $4, $3, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + dmfc0 $4, $3, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + dmfc0 $4, $3, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + sd $32, 65536($32) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lb $32, 8($5) # CHECK: :[[@LINE]]:12: error: invalid operand for instruction + lb $4, -32769($5) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lb $4, 32768($5) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lb $4, 8($32) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lbu $32, 8($5) # CHECK: :[[@LINE]]:13: error: invalid operand for instruction + lbu $4, -32769($5) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + lbu $4, 32768($5) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + lbu $4, 8($32) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + ldc1 $f32, 300($10) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + ldc1 $f7, -32769($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc1 $f7, 32768($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc1 $f7, 300($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f32, 64($10) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + sdc1 $f7, -32769($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f7, 32768($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f7, 64($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f32, 32($5) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + lwc1 $f2, -32769($5) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f2, 32768($5) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f2, 32($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f32, 369($13) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + swc1 $f6, -32769($13) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f6, 32768($13) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f6, 369($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc2 $32, 1023($12) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + ldc2 $1, -32769($12) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + ldc2 $1, 32768($12) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + ldc2 $1, 1023($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + sdc2 $32, 8($16) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + sdc2 $1, -32769($16) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + sdc2 $1, 32768($16) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + sdc2 $1, 8($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $32, 16($4) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + lwc2 $1, -32769($4) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $1, 32768($4) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $1, 16($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + swc2 $32, 777($17) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + swc2 $1, -32769($17) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + swc2 $1, 32768($17) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + swc2 $1, 777($32) # CHECK: :[[@LINE]]:18: error: expected memory with 16-bit signed offset + lwc2 $11, -32769($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc2 $11, 32768($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc2 $11, -32769($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc2 $11, 32768($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc2 $11, -32769($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc2 $11, 32768($12) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset diff --git a/test/MC/Mips/mips64r5/valid.s b/test/MC/Mips/mips64r5/valid.s index 574dc60163db..39782f34f3ac 100644 --- a/test/MC/Mips/mips64r5/valid.s +++ b/test/MC/Mips/mips64r5/valid.s @@ -287,6 +287,8 @@ a: swxc1 $f19,$12($k0) sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] teqi $s5,-17504 @@ -309,12 +311,45 @@ a: tne $6,$17 # CHECK: tne $6, $17 # encoding: [0x00,0xd1,0x00,0x36] tne $7,$8,885 # CHECK: tne $7, $8, 885 # encoding: [0x00,0xe8,0xdd,0x76] tnei $12,-29647 - trunc.l.d $f23,$f23 - trunc.l.s $f28,$f31 - trunc.w.d $f22,$f15 - trunc.w.s $f28,$f30 + trunc.l.d $f23,$f23 # CHECK: trunc.l.d $f23, $f23 # encoding: [0x46,0x20,0xbd,0xc9] + trunc.l.s $f28,$f31 # CHECK: trunc.l.s $f28, $f31 # encoding: [0x46,0x00,0xff,0x09] + trunc.w.d $f22,$f15 # CHECK: trunc.w.d $f22, $f15 # encoding: [0x46,0x20,0x7d,0x8d] + trunc.w.s $f28,$f30 # CHECK: trunc.w.s $f28, $f30 # encoding: [0x46,0x00,0xf7,0x0d] + trunc.w.d $f4,$f6,$4 # CHECK: trunc.w.d $f4, $f6 # encoding: [0x46,0x20,0x31,0x0d] + trunc.w.s $f4,$f6,$4 # CHECK: trunc.w.s $f4, $f6 # encoding: [0x46,0x00,0x31,0x0d] xor $s2,$a0,$s8 xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] wsbh $k1,$9 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwl $3, %lo(g_8)($2) # CHECK: encoding: [0x88,0x43,A,A] + lwr $3, %lo(g_8)($2) # CHECK: encoding: [0x98,0x43,A,A] + swl $3, %lo(g_8)($2) # CHECK: encoding: [0xa8,0x43,A,A] + swr $3, %lo(g_8)($2) # CHECK: encoding: [0xb8,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + lwu $3, %lo(g_8)($2) # CHECK: encoding: [0x9c,0x43,A,A] + ld $3, %lo(g_8)($2) # CHECK: encoding: [0xdc,0x43,A,A] + sd $3, %lo(g_8)($2) # CHECK: encoding: [0xfc,0x43,A,A] + ldl $3, %lo(g_8)($2) # CHECK: encoding: [0x68,0x43,A,A] + ldr $3, %lo(g_8)($2) # CHECK: encoding: [0x6c,0x43,A,A] + sdl $3, %lo(g_8)($2) # CHECK: encoding: [0xb0,0x43,A,A] + sdr $3, %lo(g_8)($2) # CHECK: encoding: [0xb4,0x43,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips64r6/invalid-mips1-wrong-error.s b/test/MC/Mips/mips64r6/invalid-mips1-wrong-error.s index 06d95fd8665b..816cc1f8c6cd 100644 --- a/test/MC/Mips/mips64r6/invalid-mips1-wrong-error.s +++ b/test/MC/Mips/mips64r6/invalid-mips1-wrong-error.s @@ -11,7 +11,7 @@ lwr $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swl $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swr $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset diff --git a/test/MC/Mips/mips64r6/invalid-mips3-wrong-error.s b/test/MC/Mips/mips64r6/invalid-mips3-wrong-error.s index a111726fca38..bf2d5fa988b6 100644 --- a/test/MC/Mips/mips64r6/invalid-mips3-wrong-error.s +++ b/test/MC/Mips/mips64r6/invalid-mips3-wrong-error.s @@ -17,7 +17,7 @@ lwr $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swl $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction swr $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction - swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lwle $s4,-4231($15) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lwre $zero,-19147($gp) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swle $15,13694($s3) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + swre $s1,-26590($14) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset diff --git a/test/MC/Mips/mips64r6/invalid.s b/test/MC/Mips/mips64r6/invalid.s index cba20b15eea4..acdd247868f7 100644 --- a/test/MC/Mips/mips64r6/invalid.s +++ b/test/MC/Mips/mips64r6/invalid.s @@ -20,7 +20,23 @@ local_label: break 7, -1 # CHECK: :[[@LINE]]:18: error: expected 10-bit unsigned immediate break 7, 1024 # CHECK: :[[@LINE]]:18: error: expected 10-bit unsigned immediate break 1024, 1024 # CHECK: :[[@LINE]]:15: error: expected 10-bit unsigned immediate - // FIXME: Following tests are temporarely disabled, until "PredicateControl not in hierarchy" problem is resolved + lh $33, 8($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhe $34, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhu $35, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lhue $36, 8($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lh $2, 8($34) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, 8($33) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, 8($35) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, 8($37) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lh $2, -65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lh $2, 65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhe $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhe $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhu $4, -65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhu $4, 65536($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lhue $4, -512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + lhue $4, 512($2) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 9-bit signed offset + // FIXME: Following tests are temporarily disabled, until "PredicateControl not in hierarchy" problem is resolved bltl $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled bltul $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled blel $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled @@ -29,6 +45,20 @@ local_label: bgeul $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled bgtl $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled bgtul $7, $8, local_label # -CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + beqc $0, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bnec $0, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bgec $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + bltc $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + bgeuc $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + bltuc $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + beqc $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + bnec $2, $2, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: registers must be different + blezc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bgezc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bgtzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bltzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + beqzc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction + bnezc $0, local_label # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand ($zero) for instruction cache -1, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate cache 32, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate dalign $4, $2, $3, -1 # CHECK: :[[@LINE]]:29: error: expected 3-bit unsigned immediate @@ -43,3 +73,59 @@ local_label: lsa $2, $3, $4, 5 # CHECK: :[[@LINE]]:29: error: expected immediate in range 1 .. 4 pref -1, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate + dmtc0 $4, $3, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + dmtc0 $4, $3, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + dmfc0 $4, $3, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + dmfc0 $4, $3, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + ld $2, 65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + ld $2, -65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + ld $32, 65536($32) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lld $2, -65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lld $2, 65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + sd $2, -65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + lld $32, 4096($32) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + sd $2, 65536($4) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected memory with 16-bit signed offset + sd $32, 65536($32) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + dsrl $2, $4, 64 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 6-bit unsigned immediate + dsrl $2, $4, -2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 6-bit unsigned immediate + dsrl $32, $32, 32 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + dsrl32 $2, $4, 32 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: expected 5-bit unsigned immediate + dsrl32 $32, $32, 32 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + dsrlv $2, $4, 2 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + dsrlv $32, $32, $32 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: invalid operand for instruction + lb $32, 8($5) # CHECK: :[[@LINE]]:12: error: invalid operand for instruction + lb $4, -32769($5) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lb $4, 32768($5) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lb $4, 8($32) # CHECK: :[[@LINE]]:16: error: expected memory with 16-bit signed offset + lbu $32, 8($5) # CHECK: :[[@LINE]]:13: error: invalid operand for instruction + lbu $4, -32769($5) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + lbu $4, 32768($5) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + lbu $4, 8($32) # CHECK: :[[@LINE]]:17: error: expected memory with 16-bit signed offset + ldc1 $f32, 300($10) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + ldc1 $f7, -32769($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc1 $f7, 32768($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc1 $f7, 300($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f32, 64($10) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + sdc1 $f7, -32769($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f7, 32768($10) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + sdc1 $f7, 64($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f32, 32($5) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + lwc1 $f2, -32769($5) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f2, 32768($5) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + lwc1 $f2, 32($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f32, 369($13) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + swc1 $f6, -32769($13) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f6, 32768($13) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + swc1 $f6, 369($32) # CHECK: :[[@LINE]]:19: error: expected memory with 16-bit signed offset + ldc2 $32, 1023($12) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + ldc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + ldc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sdc2 $32, 8($16) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + sdc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + sdc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + lwc2 $32, 16($4) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + lwc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + lwc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + swc2 $32, 777($17) # CHECK: :[[@LINE]]:14: error: invalid operand for instruction + swc2 $11, -1025($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled + swc2 $11, 1024($12) # CHECK: :[[@LINE]]:{{[0-9]+}}: error: instruction requires a CPU feature not currently enabled diff --git a/test/MC/Mips/mips64r6/relocations.s b/test/MC/Mips/mips64r6/relocations.s index 8374cb8eaa58..d5a65cd94731 100644 --- a/test/MC/Mips/mips64r6/relocations.s +++ b/test/MC/Mips/mips64r6/relocations.s @@ -28,11 +28,11 @@ # CHECK-FIXUP: value: bar-4, kind: fixup_MIPS_PC26_S2 # CHECK-FIXUP: aluipc $2, %pcrel_hi(bar) # encoding: [0xec,0x5f,A,A] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: bar@PCREL_HI16, +# CHECK-FIXUP: value: %pcrel_hi(bar), # CHECK-FIXUP: kind: fixup_MIPS_PCHI16 # CHECK-FIXUP: addiu $2, $2, %pcrel_lo(bar) # encoding: [0x24,0x42,A,A] # CHECK-FIXUP: # fixup A - offset: 0, -# CHECK-FIXUP: value: bar@PCREL_LO16, +# CHECK-FIXUP: value: %pcrel_lo(bar), # CHECK-FIXUP: kind: fixup_MIPS_PCLO16 # CHECK-FIXUP: ldpc $2, bar # encoding: [0xec,0b010110AA,A,A] # CHECK-FIXUP: # fixup A - offset: 0, diff --git a/test/MC/Mips/mips64r6/valid-xfail.s b/test/MC/Mips/mips64r6/valid-xfail.s deleted file mode 100644 index a75122571d93..000000000000 --- a/test/MC/Mips/mips64r6/valid-xfail.s +++ /dev/null @@ -1,19 +0,0 @@ -# Instructions that should be valid but currently fail for known reasons (e.g. -# they aren't implemented yet). -# This test is set up to XPASS if any instruction generates an encoding. -# -# RUN: not llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64r6 | not FileCheck %s -# CHECK-NOT: encoding -# XFAIL: * - - .set noat - bovc $0, $2, 4 # TODO: bovc $0, $2, 4 # encoding: [0x20,0x40,0x00,0x01] - bovc $2, $4, 4 # TODO: bovc $2, $4, 4 # encoding: [0x20,0x82,0x00,0x01] - bnvc $0, $2, 4 # TODO: bnvc $0, $2, 4 # encoding: [0x60,0x40,0x00,0x01] - bnvc $2, $4, 4 # TODO: bnvc $2, $4, 4 # encoding: [0x60,0x82,0x00,0x01] - beqc $0, $6, 256 # TODO: beqc $6, $zero, 256 # encoding: [0x20,0xc0,0x00,0x40] - beqc $5, $0, 256 # TODO: beqc $5, $zero, 256 # encoding: [0x20,0xa0,0x00,0x40] - beqc $6, $5, 256 # TODO: beqc $5, $6, 256 # encoding: [0x20,0xa6,0x00,0x40] - bnec $0, $6, 256 # TODO: bnec $6, $zero, 256 # encoding: [0x60,0xc0,0x00,0x40] - bnec $5, $0, 256 # TODO: bnec $5, $zero, 256 # encoding: [0x60,0xa0,0x00,0x40] - bnec $6, $5, 256 # TODO: bnec $5, $6, 256 # encoding: [0x60,0xa6,0x00,0x40] diff --git a/test/MC/Mips/mips64r6/valid.s b/test/MC/Mips/mips64r6/valid.s index cbe3e8232dce..bee475b948d0 100644 --- a/test/MC/Mips/mips64r6/valid.s +++ b/test/MC/Mips/mips64r6/valid.s @@ -33,12 +33,10 @@ a: bc2eqz $31,8 # CHECK: bc2eqz $31, 8 # encoding: [0x49,0x3f,0x00,0x02] bc2nez $0,8 # CHECK: bc2nez $0, 8 # encoding: [0x49,0xa0,0x00,0x02] bc2nez $31,8 # CHECK: bc2nez $31, 8 # encoding: [0x49,0xbf,0x00,0x02] - # beqc requires rs < rt && rs != 0 but we also accept when this is not true. See also bovc - # FIXME: Testcases are in valid-xfail.s at the moment - beqc $5, $6, 256 # CHECK: beqc $5, $6, 256 # encoding: [0x20,0xa6,0x00,0x40] + # beqc requires rs < rt && rs != 0 but we accept this and fix it. See also bovc. + beqc $5, $6, 256 # CHECK: beqc $5, $6, 256 # encoding: [0x20,0xa6,0x00,0x40] + beqc $6, $5, 256 # CHECK: beqc $6, $5, 256 # encoding: [0x20,0xa6,0x00,0x40] beqzalc $2, 1332 # CHECK: beqzalc $2, 1332 # encoding: [0x20,0x02,0x01,0x4d] - # bnec requires rs < rt && rs != 0 but we accept when this is not true. See also bnvc - # FIXME: Testcases are in valid-xfail.s at the moment beqzc $5, 72256 # CHECK: beqzc $5, 72256 # encoding: [0xd8,0xa0,0x46,0x90] bgec $2, $3, 256 # CHECK: bgec $2, $3, 256 # encoding: [0x58,0x43,0x00,0x40] bgeuc $2, $3, 256 # CHECK: bgeuc $2, $3, 256 # encoding: [0x18,0x43,0x00,0x40] @@ -53,17 +51,19 @@ a: bltuc $5, $6, 256 # CHECK: bltuc $5, $6, 256 # encoding: [0x1c,0xa6,0x00,0x40] bltzalc $2, 1332 # CHECK: bltzalc $2, 1332 # encoding: [0x1c,0x42,0x01,0x4d] bltzc $5, 256 # CHECK: bltzc $5, 256 # encoding: [0x5c,0xa5,0x00,0x40] + # bnec requires rs < rt && rs != 0 but we accept this and fix it. See also bnvc. bnec $5, $6, 256 # CHECK: bnec $5, $6, 256 # encoding: [0x60,0xa6,0x00,0x40] + bnec $6, $5, 256 # CHECK: bnec $6, $5, 256 # encoding: [0x60,0xa6,0x00,0x40] bnezalc $2, 1332 # CHECK: bnezalc $2, 1332 # encoding: [0x60,0x02,0x01,0x4d] bnezc $5, 72256 # CHECK: bnezc $5, 72256 # encoding: [0xf8,0xa0,0x46,0x90] - # bnvc requires that rs >= rt but we accept both. See also bnec + # bnvc requires that rs >= rt but we accept both and fix this. See also bnec. bnvc $0, $0, 4 # CHECK: bnvc $zero, $zero, 4 # encoding: [0x60,0x00,0x00,0x01] bnvc $2, $0, 4 # CHECK: bnvc $2, $zero, 4 # encoding: [0x60,0x40,0x00,0x01] - bnvc $4, $2, 4 # CHECK: bnvc $4, $2, 4 # encoding: [0x60,0x82,0x00,0x01] - # bovc requires that rs >= rt but we accept both. See also beqc + bnvc $2, $4, 4 # CHECK: bnvc $2, $4, 4 # encoding: [0x60,0x82,0x00,0x01] + # bovc requires that rs >= rt but we accept both and fix this. See also beqc. bovc $0, $0, 4 # CHECK: bovc $zero, $zero, 4 # encoding: [0x20,0x00,0x00,0x01] bovc $2, $0, 4 # CHECK: bovc $2, $zero, 4 # encoding: [0x20,0x40,0x00,0x01] - bovc $4, $2, 4 # CHECK: bovc $4, $2, 4 # encoding: [0x20,0x82,0x00,0x01] + bovc $2, $4, 4 # CHECK: bovc $2, $4, 4 # encoding: [0x20,0x82,0x00,0x01] cache 1, 8($5) # CHECK: cache 1, 8($5) # encoding: [0x7c,0xa1,0x04,0x25] class.d $f2, $f4 # CHECK: class.d $f2, $f4 # encoding: [0x46,0x20,0x20,0x9b] class.s $f2, $f4 # CHECK: class.s $f2, $f4 # encoding: [0x46,0x00,0x20,0x9b] @@ -105,8 +105,8 @@ a: daddu $24,$2,18079 # CHECK: daddiu $24, $2, 18079 # encoding: [0x64,0x58,0x46,0x9f] dahi $3,0x5678 # CHECK: dahi $3, 22136 # encoding: [0x04,0x66,0x56,0x78] dalign $4,$2,$3,5 # CHECK: dalign $4, $2, $3, 5 # encoding: [0x7c,0x43,0x23,0x64] - dati $3,0xabcd # CHECK: dati $3, 43981 # encoding: [0x04,0x7e,0xab,0xcd] - daui $3,$2,0x1234 # CHECK: daui $3, $2, 4660 # encoding: [0x74,0x62,0x12,0x34] + dati $3,0xabcd # CHECK: dati $3, -21555 # encoding: [0x04,0x7e,0xab,0xcd] + daui $3,$2,0x1234 # CHECK: daui $3, $2, 4660 # encoding: [0x74,0x62,0x12,0x34] dbitswap $4, $2 # CHECK: dbitswap $4, $2 # encoding: [0x7c,0x02,0x20,0x24] dclo $s2,$a2 # CHECK: dclo $18, $6 # encoding: [0x00,0xc0,0x90,0x53] dclz $s0,$25 # CHECK: dclz $16, $25 # encoding: [0x03,0x20,0x80,0x52] @@ -140,8 +140,12 @@ a: j 1328 # CHECK: j 1328 # encoding: [0x08,0x00,0x01,0x4c] jal 21100 # CHECK: jal 21100 # encoding: [0x0c,0x00,0x14,0x9b] jr.hb $4 # CHECK: jr.hb $4 # encoding: [0x00,0x80,0x04,0x09] + jr $ra # CHECK: jr $ra # encoding: [0x03,0xe0,0x00,0x09] + jr $25 # CHECK: jr $25 # encoding: [0x03,0x20,0x00,0x09] + jrc $27 # CHECK: jrc $27 # encoding: [0xd8,0x1b,0x00,0x00] jalr.hb $4 # CHECK: jalr.hb $4 # encoding: [0x00,0x80,0xfc,0x09] jalr.hb $4, $5 # CHECK: jalr.hb $4, $5 # encoding: [0x00,0xa0,0x24,0x09] + jalrc $25 # CHECK: jalrc $25 # encoding: [0xf8,0x19,0x00,0x00] jialc $5, 256 # CHECK: jialc $5, 256 # encoding: [0xf8,0x05,0x01,0x00] jic $5, 256 # CHECK: jic $5, 256 # encoding: [0xd8,0x05,0x01,0x00] ldc2 $8, -701($at) # CHECK: ldc2 $8, -701($1) # encoding: [0x49,0xc8,0x0d,0x43] @@ -204,6 +208,8 @@ a: swc2 $25,304($s0) # CHECK: swc2 $25, 304($16) # encoding: [0x49,0x79,0x81,0x30] sync # CHECK: sync # encoding: [0x00,0x00,0x00,0x0f] sync 1 # CHECK: sync 1 # encoding: [0x00,0x00,0x00,0x4f] + syscall # CHECK: syscall # encoding: [0x00,0x00,0x00,0x0c] + syscall 256 # CHECK: syscall 256 # encoding: [0x00,0x00,0x40,0x0c] teq $0,$3 # CHECK: teq $zero, $3 # encoding: [0x00,0x03,0x00,0x34] teq $5,$7,620 # CHECK: teq $5, $7, 620 # encoding: [0x00,0xa7,0x9b,0x34] tge $5,$19,340 # CHECK: tge $5, $19, 340 # encoding: [0x00,0xb3,0x55,0x30] @@ -219,3 +225,25 @@ a: xor $2, 4 # CHECK: xori $2, $2, 4 # encoding: [0x38,0x42,0x00,0x04] 1: + + # Check that we accept traditional %relocation(symbol) offsets for stores + # and loads, not just a sign 16 bit offset. + + lui $2, %hi(g_8) # CHECK: encoding: [0x3c,0x02,A,A] + lb $3, %lo(g_8)($2) # CHECK: encoding: [0x80,0x43,A,A] + lh $3, %lo(g_8)($2) # CHECK: encoding: [0x84,0x43,A,A] + lhu $3, %lo(g_8)($2) # CHECK: encoding: [0x94,0x43,A,A] + lw $3, %lo(g_8)($2) # CHECK: encoding: [0x8c,0x43,A,A] + sb $3, %lo(g_8)($2) # CHECK: encoding: [0xa0,0x43,A,A] + sh $3, %lo(g_8)($2) # CHECK: encoding: [0xa4,0x43,A,A] + sw $3, %lo(g_8)($2) # CHECK: encoding: [0xac,0x43,A,A] + + lwc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xc4,0x40,A,A] + ldc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xd4,0x40,A,A] + swc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xe4,0x40,A,A] + sdc1 $f0, %lo(g_8)($2) # CHECK: encoding: [0xf4,0x40,A,A] + lwu $3, %lo(g_8)($2) # CHECK: encoding: [0x9c,0x43,A,A] + ld $3, %lo(g_8)($2) # CHECK: encoding: [0xdc,0x43,A,A] + sd $3, %lo(g_8)($2) # CHECK: encoding: [0xfc,0x43,A,A] + .type g_8,@object + .comm g_8,16,16 diff --git a/test/MC/Mips/mips64shift.ll b/test/MC/Mips/mips64shift.ll index 99cac7b591fa..40a531b736da 100644 --- a/test/MC/Mips/mips64shift.ll +++ b/test/MC/Mips/mips64shift.ll @@ -1,8 +1,8 @@ ; RUN: llc -march=mips64el -filetype=obj -mcpu=mips64r2 -disable-mips-delay-filler %s -o - \ -; RUN: | llvm-objdump -disassemble -triple mips64el - | FileCheck %s +; RUN: | llvm-objdump -disassemble - | FileCheck %s ; RUN: llc -march=mips64el -filetype=obj -mcpu=mips64r2 %s -o - \ -; RUN: | llvm-objdump -disassemble -triple mips64el - | FileCheck %s +; RUN: | llvm-objdump -disassemble - | FileCheck %s define i64 @f3(i64 %a0) nounwind readnone { entry: diff --git a/test/MC/Mips/mips_abi_flags_xx.s b/test/MC/Mips/mips_abi_flags_xx.s index 349b70d609ae..9c8754193e12 100644 --- a/test/MC/Mips/mips_abi_flags_xx.s +++ b/test/MC/Mips/mips_abi_flags_xx.s @@ -3,22 +3,26 @@ # # RUN: llvm-mc %s -arch=mips -mcpu=mips32 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations -mips-abi-flags - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ -check-prefix=CHECK-OBJ-R1 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ,CHECK-OBJ-32R1,CHECK-OBJ-MIPS # RUN: llvm-mc /dev/null -arch=mips -mcpu=mips32 -mattr=fpxx -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations -mips-abi-flags - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ -check-prefix=CHECK-OBJ-R1 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ,CHECK-OBJ-32R1,CHECK-OBJ-MIPS # RUN: llvm-mc /dev/null -arch=mips -mcpu=mips32r6 -mattr=fpxx -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations -mips-abi-flags - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ -check-prefix=CHECK-OBJ-R6 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ,CHECK-OBJ-32R6,CHECK-OBJ-MIPS + +# RUN: llvm-mc /dev/null -arch=mips -mcpu=octeon -target-abi n64 -filetype=obj -o - | \ +# RUN: llvm-readobj -sections -section-data -section-relocations -mips-abi-flags - | \ +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ,CHECK-OBJ-64R2,CHECK-OBJ-OCTEON # CHECK-ASM: .module fp=xx # Checking if the Mips.abiflags were correctly emitted. # CHECK-OBJ: Section { # CHECK-OBJ: Index: 5 -# CHECK-OBJ-LABEL: Name: .MIPS.abiflags (12) +# CHECK-OBJ-LABEL: Name: .MIPS.abiflags # CHECK-OBJ: Type: SHT_MIPS_ABIFLAGS (0x7000002A) # CHECK-OBJ: Flags [ (0x2) # CHECK-OBJ: SHF_ALLOC (0x2) @@ -34,14 +38,22 @@ # CHECK-OBJ-LABEL: } # CHECK-OBJ: MIPS ABI Flags { # CHECK-OBJ-NEXT: Version: 0 -# CHECK-OBJ-R1-NEXT: ISA: {{MIPS32$}} -# CHECK-OBJ-R6-NEXT: ISA: MIPS32r6 -# CHECK-OBJ-NEXT: ISA Extension: None (0x0) -# CHECK-OBJ-NEXT: ASEs [ (0x0) -# CHECK-OBJ-NEXT: ] -# CHECK-OBJ-NEXT: FP ABI: Hard float (32-bit CPU, Any FPU) (0x5) -# CHECK-OBJ-NEXT: GPR size: 32 -# CHECK-OBJ-NEXT: CPR1 size: 32 +# CHECK-OBJ-32R1-NEXT: ISA: {{MIPS32$}} +# CHECK-OBJ-32R6-NEXT: ISA: MIPS32r6 +# CHECK-OBJ-64R2-NEXT: ISA: MIPS64r2 +# CHECK-OBJ-MIPS-NEXT: ISA Extension: None (0x0) +# CHECK-OBJ-OCTEON-NEXT: ISA Extension: Cavium Networks Octeon (0x5) +# CHECK-OBJ-NEXT: ASEs [ (0x0) +# CHECK-OBJ-NEXT: ] +# CHECK-OBJ-32R1-NEXT: FP ABI: Hard float (32-bit CPU, Any FPU) (0x5) +# CHECK-OBJ-32R6-NEXT: FP ABI: Hard float (32-bit CPU, Any FPU) (0x5) +# CHECK-OBJ-64R2-NEXT: FP ABI: Hard float (double precision) (0x1) +# CHECK-OBJ-32R1-NEXT: GPR size: 32 +# CHECK-OBJ-32R6-NEXT: GPR size: 32 +# CHECK-OBJ-64R2-NEXT: GPR size: 64 +# CHECK-OBJ-32R1-NEXT: CPR1 size: 32 +# CHECK-OBJ-32R6-NEXT: CPR1 size: 32 +# CHECK-OBJ-64R2-NEXT: CPR1 size: 64 # CHECK-OBJ-NEXT: CPR2 size: 0 # CHECK-OBJ-NEXT: Flags 1 [ (0x1) # CHECK-OBJ-NEXT: ODDSPREG (0x1) diff --git a/test/MC/Mips/mips_directives.s b/test/MC/Mips/mips_directives.s index 2ea37822f764..b421802a9c2e 100644 --- a/test/MC/Mips/mips_directives.s +++ b/test/MC/Mips/mips_directives.s @@ -54,7 +54,7 @@ $BB0_4: .set f6,$f6 # CHECK: abs.s $f6, $f7 # encoding: [0x46,0x00,0x39,0x85] # CHECK: lui $1, %hi($tmp7) # encoding: [0x3c,0x01,A,A] -# CHECK: # fixup A - offset: 0, value: ($tmp7)@ABS_HI, kind: fixup_Mips_HI16 +# CHECK: # fixup A - offset: 0, value: %hi($tmp7), kind: fixup_Mips_HI16 abs.s f6,FPU_MASK lui $1, %hi($tmp7) diff --git a/test/MC/Mips/mips_gprel16.s b/test/MC/Mips/mips_gprel16.s index 9dd3fa3281c2..a6e09c6c7b0b 100644 --- a/test/MC/Mips/mips_gprel16.s +++ b/test/MC/Mips/mips_gprel16.s @@ -3,12 +3,10 @@ // addend is stored in the instruction immediate // field. -// RUN: llvm-mc -mcpu=mips32r2 -triple=mipsel-pc-linux -filetype=obj -relocation-model=static %s -o - \ -// RUN: | llvm-objdump -disassemble -mattr +mips32r2 - \ -// RUN: | FileCheck %s -// RUN: llvm-mc -mcpu=mips32r2 -triple=mips-pc-linux -filetype=obj -relocation-model=static %s -o - \ -// RUN: | llvm-objdump -disassemble -mattr +mips32r2 - \ -// RUN: | FileCheck %s +// RUN: llvm-mc -mcpu=mips32r2 -triple=mipsel-pc-linux -filetype=obj %s -o - \ +// RUN: | llvm-objdump -disassemble - | FileCheck %s +// RUN: llvm-mc -mcpu=mips32r2 -triple=mips-pc-linux -filetype=obj %s -o - \ +// RUN: | llvm-objdump -disassemble - | FileCheck %s .text .abicalls diff --git a/test/MC/Mips/msa/invalid.s b/test/MC/Mips/msa/invalid.s index 724d9c193e0a..78b1949d0ae5 100644 --- a/test/MC/Mips/msa/invalid.s +++ b/test/MC/Mips/msa/invalid.s @@ -5,6 +5,124 @@ # RUN: FileCheck %s < %t1 .set noat + addvi.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + addvi.b $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + addvi.h $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + addvi.h $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + addvi.w $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + addvi.w $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + addvi.d $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + addvi.d $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + andi.b $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + andi.b $w1, $w2, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + bclri.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + bclri.b $w1, $w2, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + bclri.h $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate + bclri.h $w1, $w2, 16 # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate + bclri.w $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + bclri.w $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + bclri.d $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate + bclri.d $w1, $w2, 64 # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate + binsli.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + binsli.b $w1, $w2, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + binsli.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + binsli.h $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + binsli.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + binsli.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + binsli.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + binsli.d $w1, $w2, 64 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + binsri.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + binsri.b $w1, $w2, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + binsri.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + binsri.h $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + binsri.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + binsri.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + binsri.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + binsri.d $w1, $w2, 64 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + bmnzi.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate + bmnzi.b $w1, $w2, 256 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate + bmzi.b $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + bmzi.b $w1, $w2, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + bnegi.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + bnegi.b $w1, $w2, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + bnegi.h $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate + bnegi.h $w1, $w2, 16 # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate + bnegi.w $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + bnegi.w $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + bnegi.d $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate + bnegi.d $w1, $w2, 64 # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate + bseli.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate + bseli.b $w1, $w2, 256 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate + bseti.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + bseti.b $w1, $w2, 8 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate + bseti.h $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate + bseti.h $w1, $w2, 16 # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate + bseti.w $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + bseti.w $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + bseti.d $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate + bseti.d $w1, $w2, 64 # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate + ceqi.b $w1, $w2, -17 # CHECK: :[[@LINE]]:22: error: expected 5-bit signed immediate + ceqi.b $w1, $w2, 16 # CHECK: :[[@LINE]]:22: error: expected 5-bit signed immediate + ceqi.h $w1, $w2, -17 # CHECK: :[[@LINE]]:22: error: expected 5-bit signed immediate + ceqi.h $w1, $w2, 16 # CHECK: :[[@LINE]]:22: error: expected 5-bit signed immediate + ceqi.w $w1, $w2, -17 # CHECK: :[[@LINE]]:22: error: expected 5-bit signed immediate + ceqi.w $w1, $w2, 16 # CHECK: :[[@LINE]]:22: error: expected 5-bit signed immediate + ceqi.d $w1, $w2, -17 # CHECK: :[[@LINE]]:22: error: expected 5-bit signed immediate + ceqi.d $w1, $w2, 16 # CHECK: :[[@LINE]]:22: error: expected 5-bit signed immediate + clei_s.b $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clei_s.b $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clei_s.h $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clei_s.h $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clei_s.w $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clei_s.w $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clei_s.d $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clei_s.d $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clei_u.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clei_u.b $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clei_u.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clei_u.h $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clei_u.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clei_u.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clei_u.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clei_u.d $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clti_s.b $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clti_s.b $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clti_s.h $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clti_s.h $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clti_s.w $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clti_s.w $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clti_s.d $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clti_s.d $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + clti_u.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clti_u.b $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clti_u.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clti_u.h $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clti_u.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clti_u.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clti_u.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + clti_u.d $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + copy_s.b $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + copy_s.b $2, $w9[16] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + copy_s.h $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + copy_s.h $2, $w9[8] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + copy_s.w $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate + copy_s.w $2, $w9[4] # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate + copy_s.d $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate + copy_s.d $2, $w9[2] # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate + copy_u.b $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + copy_u.b $2, $w9[16] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + copy_u.h $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + copy_u.h $2, $w9[8] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + copy_u.w $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate + copy_u.w $2, $w9[4] # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate + insert.b $w9[-1], $2 # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate + insert.b $w9[16], $2 # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate + insert.h $w9[-1], $2 # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate + insert.h $w9[8], $2 # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate + insert.w $w9[-1], $2 # CHECK: :[[@LINE]]:18: error: expected 2-bit unsigned immediate + insert.w $w9[4], $2 # CHECK: :[[@LINE]]:18: error: expected 2-bit unsigned immediate + insert.d $w9[-1], $2 # CHECK: :[[@LINE]]:18: error: expected 1-bit unsigned immediate + insert.d $w9[2], $2 # CHECK: :[[@LINE]]:18: error: expected 1-bit unsigned immediate insve.b $w25[-1], $w9[0] # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate insve.b $w25[16], $w9[0] # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate insve.h $w24[-1], $w2[0] # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate @@ -13,55 +131,157 @@ insve.w $w0[4], $w13[0] # CHECK: :[[@LINE]]:17: error: expected 2-bit unsigned immediate insve.d $w3[-1], $w18[0] # CHECK: :[[@LINE]]:17: error: expected 1-bit unsigned immediate insve.d $w3[2], $w18[0] # CHECK: :[[@LINE]]:17: error: expected 1-bit unsigned immediate - insve.b $w25[3], $w9[1] # CHECK: :[[@LINE]]:26: error: expected '0' - insve.h $w24[2], $w2[1] # CHECK: :[[@LINE]]:26: error: expected '0' - insve.w $w0[2], $w13[1] # CHECK: :[[@LINE]]:26: error: expected '0' - insve.d $w3[0], $w18[1] # CHECK: :[[@LINE]]:26: error: expected '0' - lsa $2, $3, $4, 0 # CHECK: :[[@LINE]]:25: error: expected immediate in range 1 .. 4 - lsa $2, $3, $4, 5 # CHECK: :[[@LINE]]:25: error: expected immediate in range 1 .. 4 - sat_s.b $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate - sat_s.b $w31, $w31, 8 # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate - sat_s.h $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate - sat_s.h $w31, $w31, 16 # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate - sat_s.w $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 5-bit unsigned immediate - sat_s.w $w31, $w31, 32 # CHECK: :[[@LINE]]:25: error: expected 5-bit unsigned immediate - sat_s.d $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 6-bit unsigned immediate - sat_s.d $w31, $w31, 64 # CHECK: :[[@LINE]]:25: error: expected 6-bit unsigned immediate - sat_u.b $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate - sat_u.b $w31, $w31, 8 # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate - sat_u.h $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate - sat_u.h $w31, $w31, 16 # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate - sat_u.w $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 5-bit unsigned immediate - sat_u.w $w31, $w31, 32 # CHECK: :[[@LINE]]:25: error: expected 5-bit unsigned immediate - sat_u.d $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 6-bit unsigned immediate - sat_u.d $w31, $w31, 64 # CHECK: :[[@LINE]]:25: error: expected 6-bit unsigned immediate - shf.b $w19, $w30, -1 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate - shf.b $w19, $w30, 256 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate - shf.h $w17, $w8, -1 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate - shf.h $w17, $w8, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate - shf.w $w14, $w3, -1 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate - shf.w $w14, $w3, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate - sldi.b $w0, $w29[-1] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate - sldi.b $w0, $w29[16] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate - sldi.d $w4, $w12[-1] # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate - sldi.d $w4, $w12[2] # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate - sldi.h $w8, $w17[-1] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate - sldi.h $w8, $w17[8] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate - sldi.w $w20, $w27[-1] # CHECK: :[[@LINE]]:23: error: expected 2-bit unsigned immediate - sldi.w $w20, $w27[4] # CHECK: :[[@LINE]]:23: error: expected 2-bit unsigned immediate - srari.b $w5, $w25, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate - srari.b $w5, $w25, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate - srari.h $w5, $w25, -1 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate - srari.h $w5, $w25, 16 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate - srari.w $w5, $w25, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate - srari.w $w5, $w25, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate - srari.d $w5, $w25, -1 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate - srari.d $w5, $w25, 64 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate - srlri.b $w18, $w3, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate - srlri.b $w18, $w3, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate - srlri.h $w18, $w3, -1 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate - srlri.h $w18, $w3, 16 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate - srlri.w $w18, $w3, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate - srlri.w $w18, $w3, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate - srlri.d $w18, $w3, -1 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate - srlri.d $w18, $w3, 64 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + insve.b $w25[3], $w9[1] # CHECK: :[[@LINE]]:26: error: expected '0' + insve.h $w24[2], $w2[1] # CHECK: :[[@LINE]]:26: error: expected '0' + insve.w $w0[2], $w13[1] # CHECK: :[[@LINE]]:26: error: expected '0' + insve.d $w3[0], $w18[1] # CHECK: :[[@LINE]]:26: error: expected '0' + ld.b $w0, -513($2) # CHECK: :[[@LINE]]:15: error: expected memory with 10-bit signed offset + ld.b $w0, 512($2) # CHECK: :[[@LINE]]:15: error: expected memory with 10-bit signed offset + ld.h $w0, -1025($2) # CHECK: :[[@LINE]]:15: error: expected memory with 11-bit signed offset and multiple of 2 + ld.h $w0, 1024($2) # CHECK: :[[@LINE]]:15: error: expected memory with 11-bit signed offset and multiple of 2 + ld.w $w0, -2049($2) # CHECK: :[[@LINE]]:15: error: expected memory with 12-bit signed offset and multiple of 4 + ld.w $w0, 2048($2) # CHECK: :[[@LINE]]:15: error: expected memory with 12-bit signed offset and multiple of 4 + ld.d $w0, -4097($2) # CHECK: :[[@LINE]]:15: error: expected memory with 13-bit signed offset and multiple of 8 + ld.d $w0, 4096($2) # CHECK: :[[@LINE]]:15: error: expected memory with 13-bit signed offset and multiple of 8 + ldi.b $w1, -1025 # CHECK: :[[@LINE]]:16: error: expected 10-bit signed immediate + ldi.b $w1, 1024 # CHECK: :[[@LINE]]:16: error: expected 10-bit signed immediate + ldi.h $w1, -1025 # CHECK: :[[@LINE]]:16: error: expected 10-bit signed immediate + ldi.h $w1, 1024 # CHECK: :[[@LINE]]:16: error: expected 10-bit signed immediate + ldi.w $w1, -1025 # CHECK: :[[@LINE]]:16: error: expected 10-bit signed immediate + ldi.w $w1, 1024 # CHECK: :[[@LINE]]:16: error: expected 10-bit signed immediate + ldi.d $w1, -1025 # CHECK: :[[@LINE]]:16: error: expected 10-bit signed immediate + ldi.d $w1, 1024 # CHECK: :[[@LINE]]:16: error: expected 10-bit signed immediate + lsa $2, $3, $4, 0 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 4 + lsa $2, $3, $4, 5 # CHECK: :[[@LINE]]:21: error: expected immediate in range 1 .. 4 + maxi_s.b $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + maxi_s.b $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + maxi_s.h $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + maxi_s.h $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + maxi_s.w $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + maxi_s.w $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + maxi_s.d $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + maxi_s.d $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + maxi_u.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + maxi_u.b $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + maxi_u.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + maxi_u.h $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + maxi_u.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + maxi_u.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + maxi_u.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + maxi_u.d $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + mini_s.b $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + mini_s.b $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + mini_s.h $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + mini_s.h $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + mini_s.w $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + mini_s.w $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + mini_s.d $w1, $w2, -17 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + mini_s.d $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 5-bit signed immediate + mini_u.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + mini_u.b $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + mini_u.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + mini_u.h $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + mini_u.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + mini_u.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + mini_u.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + mini_u.d $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + nori.b $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + nori.b $w1, $w2, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + ori.b $w1, $w2, -1 # CHECK: :[[@LINE]]:21: error: expected 8-bit unsigned immediate + ori.b $w1, $w2, 256 # CHECK: :[[@LINE]]:21: error: expected 8-bit unsigned immediate + sat_s.b $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate + sat_s.b $w31, $w31, 8 # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate + sat_s.h $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate + sat_s.h $w31, $w31, 16 # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate + sat_s.w $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 5-bit unsigned immediate + sat_s.w $w31, $w31, 32 # CHECK: :[[@LINE]]:25: error: expected 5-bit unsigned immediate + sat_s.d $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 6-bit unsigned immediate + sat_s.d $w31, $w31, 64 # CHECK: :[[@LINE]]:25: error: expected 6-bit unsigned immediate + sat_u.b $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate + sat_u.b $w31, $w31, 8 # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate + sat_u.h $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate + sat_u.h $w31, $w31, 16 # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate + sat_u.w $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 5-bit unsigned immediate + sat_u.w $w31, $w31, 32 # CHECK: :[[@LINE]]:25: error: expected 5-bit unsigned immediate + sat_u.d $w31, $w31, -1 # CHECK: :[[@LINE]]:25: error: expected 6-bit unsigned immediate + sat_u.d $w31, $w31, 64 # CHECK: :[[@LINE]]:25: error: expected 6-bit unsigned immediate + shf.b $w19, $w30, -1 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate + shf.b $w19, $w30, 256 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate + shf.h $w17, $w8, -1 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + shf.h $w17, $w8, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + shf.w $w14, $w3, -1 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + shf.w $w14, $w3, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + sldi.b $w0, $w29[-1] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + sldi.b $w0, $w29[16] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + sldi.h $w8, $w17[-1] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + sldi.h $w8, $w17[8] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + sldi.w $w20, $w27[-1] # CHECK: :[[@LINE]]:23: error: expected 2-bit unsigned immediate + sldi.w $w20, $w27[4] # CHECK: :[[@LINE]]:23: error: expected 2-bit unsigned immediate + sldi.d $w4, $w12[-1] # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate + sldi.d $w4, $w12[2] # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate + slli.b $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + slli.b $w1, $w2, 8 # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + slli.h $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + slli.h $w1, $w2, 16 # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + slli.w $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + slli.w $w1, $w2, 32 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + slli.d $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + slli.d $w1, $w2, 64 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + splati.b $w0, $w29[-1] # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + splati.b $w0, $w29[16] # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + splati.h $w8, $w17[-1] # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + splati.h $w8, $w17[8] # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + splati.w $w2, $w27[-1] # CHECK: :[[@LINE]]:24: error: expected 2-bit unsigned immediate + splati.w $w2, $w27[4] # CHECK: :[[@LINE]]:24: error: expected 2-bit unsigned immediate + splati.d $w4, $w12[-1] # CHECK: :[[@LINE]]:24: error: expected 1-bit unsigned immediate + splati.d $w4, $w12[2] # CHECK: :[[@LINE]]:24: error: expected 1-bit unsigned immediate + srai.b $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + srai.b $w1, $w2, 8 # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + srai.h $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + srai.h $w1, $w2, 16 # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + srai.w $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + srai.w $w1, $w2, 32 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + srai.d $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + srai.d $w1, $w2, 64 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + srari.b $w5, $w25, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + srari.b $w5, $w25, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + srari.h $w5, $w25, -1 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + srari.h $w5, $w25, 16 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + srari.w $w5, $w25, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + srari.w $w5, $w25, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + srari.d $w5, $w25, -1 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + srari.d $w5, $w25, 64 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + srli.b $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + srli.b $w1, $w2, 8 # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate + srli.h $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + srli.h $w1, $w2, 16 # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate + srli.w $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + srli.w $w1, $w2, 32 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + srli.d $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + srli.d $w1, $w2, 64 # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate + srlri.b $w18, $w3, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + srlri.b $w18, $w3, 8 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate + srlri.h $w18, $w3, -1 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + srlri.h $w18, $w3, 16 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate + srlri.w $w18, $w3, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + srlri.w $w18, $w3, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate + srlri.d $w18, $w3, -1 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + srlri.d $w18, $w3, 64 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate + st.b $w0, -513($2) # CHECK: :[[@LINE]]:15: error: expected memory with 10-bit signed offset + st.b $w0, 512($2) # CHECK: :[[@LINE]]:15: error: expected memory with 10-bit signed offset + st.h $w0, -1025($2) # CHECK: :[[@LINE]]:15: error: expected memory with 11-bit signed offset and multiple of 2 + st.h $w0, 1024($2) # CHECK: :[[@LINE]]:15: error: expected memory with 11-bit signed offset and multiple of 2 + st.w $w0, -2049($2) # CHECK: :[[@LINE]]:15: error: expected memory with 12-bit signed offset and multiple of 4 + st.w $w0, 2048($2) # CHECK: :[[@LINE]]:15: error: expected memory with 12-bit signed offset and multiple of 4 + st.d $w0, -4097($2) # CHECK: :[[@LINE]]:15: error: expected memory with 13-bit signed offset and multiple of 8 + st.d $w0, 4096($2) # CHECK: :[[@LINE]]:15: error: expected memory with 13-bit signed offset and multiple of 8 + subvi.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + subvi.b $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + subvi.h $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + subvi.h $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + subvi.w $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + subvi.w $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + subvi.d $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + subvi.d $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate + xori.b $w1, $w2, -1 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate + xori.b $w1, $w2, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate diff --git a/test/MC/Mips/msa/test_mi10.s b/test/MC/Mips/msa/test_mi10.s index 7269960531ca..f20ffa29372b 100644 --- a/test/MC/Mips/msa/test_mi10.s +++ b/test/MC/Mips/msa/test_mi10.s @@ -1,55 +1,28 @@ # RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 -mattr=+msa -show-encoding | FileCheck %s # -# CHECK: ld.b $w0, -512($1) # encoding: [0x7a,0x00,0x08,0x20] -# CHECK: ld.b $w1, 0($2) # encoding: [0x78,0x00,0x10,0x60] -# CHECK: ld.b $w2, 511($3) # encoding: [0x79,0xff,0x18,0xa0] + ld.b $w0, -512($1) # CHECK: ld.b $w0, -512($1) # encoding: [0x7a,0x00,0x08,0x20] + ld.b $w1, 0($2) # CHECK: ld.b $w1, 0($2) # encoding: [0x78,0x00,0x10,0x60] + ld.b $w2, 511($3) # CHECK: ld.b $w2, 511($3) # encoding: [0x79,0xff,0x18,0xa0] -# CHECK: ld.h $w3, -1024($4) # encoding: [0x7a,0x00,0x20,0xe1] -# CHECK: ld.h $w4, -512($5) # encoding: [0x7b,0x00,0x29,0x21] -# CHECK: ld.h $w5, 0($6) # encoding: [0x78,0x00,0x31,0x61] -# CHECK: ld.h $w6, 512($7) # encoding: [0x79,0x00,0x39,0xa1] -# CHECK: ld.h $w7, 1022($8) # encoding: [0x79,0xff,0x41,0xe1] + ld.h $w3, -1024($4) # CHECK: ld.h $w3, -1024($4) # encoding: [0x7a,0x00,0x20,0xe1] + ld.h $w4, -512($5) # CHECK: ld.h $w4, -512($5) # encoding: [0x7b,0x00,0x29,0x21] + ld.h $w5, 0($6) # CHECK: ld.h $w5, 0($6) # encoding: [0x78,0x00,0x31,0x61] + ld.h $w6, 512($7) # CHECK: ld.h $w6, 512($7) # encoding: [0x79,0x00,0x39,0xa1] + ld.h $w7, 1022($8) # CHECK: ld.h $w7, 1022($8) # encoding: [0x79,0xff,0x41,0xe1] -# CHECK: ld.w $w8, -2048($9) # encoding: [0x7a,0x00,0x4a,0x22] -# CHECK: ld.w $w9, -1024($10) # encoding: [0x7b,0x00,0x52,0x62] -# CHECK: ld.w $w10, -512($11) # encoding: [0x7b,0x80,0x5a,0xa2] -# CHECK: ld.w $w11, 512($12) # encoding: [0x78,0x80,0x62,0xe2] -# CHECK: ld.w $w12, 1024($13) # encoding: [0x79,0x00,0x6b,0x22] -# CHECK: ld.w $w13, 2044($14) # encoding: [0x79,0xff,0x73,0x62] + ld.w $w8, -2048($9) # CHECK: ld.w $w8, -2048($9) # encoding: [0x7a,0x00,0x4a,0x22] + ld.w $w9, -1024($10) # CHECK: ld.w $w9, -1024($10) # encoding: [0x7b,0x00,0x52,0x62] + ld.w $w10, -512($11) # CHECK: ld.w $w10, -512($11) # encoding: [0x7b,0x80,0x5a,0xa2] + ld.w $w11, 512($12) # CHECK: ld.w $w11, 512($12) # encoding: [0x78,0x80,0x62,0xe2] + ld.w $w12, 1024($13) # CHECK: ld.w $w12, 1024($13) # encoding: [0x79,0x00,0x6b,0x22] + ld.w $w13, 2044($14) # CHECK: ld.w $w13, 2044($14) # encoding: [0x79,0xff,0x73,0x62] -# CHECK: ld.d $w14, -4096($15) # encoding: [0x7a,0x00,0x7b,0xa3] -# CHECK: ld.d $w15, -2048($16) # encoding: [0x7b,0x00,0x83,0xe3] -# CHECK: ld.d $w16, -1024($17) # encoding: [0x7b,0x80,0x8c,0x23] -# CHECK: ld.d $w17, -512($18) # encoding: [0x7b,0xc0,0x94,0x63] -# CHECK: ld.d $w18, 0($19) # encoding: [0x78,0x00,0x9c,0xa3] -# CHECK: ld.d $w19, 512($20) # encoding: [0x78,0x40,0xa4,0xe3] -# CHECK: ld.d $w20, 1024($21) # encoding: [0x78,0x80,0xad,0x23] -# CHECK: ld.d $w21, 2048($22) # encoding: [0x79,0x00,0xb5,0x63] -# CHECK: ld.d $w22, 4088($23) # encoding: [0x79,0xff,0xbd,0xa3] - - ld.b $w0, -512($1) - ld.b $w1, 0($2) - ld.b $w2, 511($3) - - ld.h $w3, -1024($4) - ld.h $w4, -512($5) - ld.h $w5, 0($6) - ld.h $w6, 512($7) - ld.h $w7, 1022($8) - - ld.w $w8, -2048($9) - ld.w $w9, -1024($10) - ld.w $w10, -512($11) - ld.w $w11, 512($12) - ld.w $w12, 1024($13) - ld.w $w13, 2044($14) - - ld.d $w14, -4096($15) - ld.d $w15, -2048($16) - ld.d $w16, -1024($17) - ld.d $w17, -512($18) - ld.d $w18, 0($19) - ld.d $w19, 512($20) - ld.d $w20, 1024($21) - ld.d $w21, 2048($22) - ld.d $w22, 4088($23) + ld.d $w14, -4096($15) # CHECK: ld.d $w14, -4096($15) # encoding: [0x7a,0x00,0x7b,0xa3] + ld.d $w15, -2048($16) # CHECK: ld.d $w15, -2048($16) # encoding: [0x7b,0x00,0x83,0xe3] + ld.d $w16, -1024($17) # CHECK: ld.d $w16, -1024($17) # encoding: [0x7b,0x80,0x8c,0x23] + ld.d $w17, -512($18) # CHECK: ld.d $w17, -512($18) # encoding: [0x7b,0xc0,0x94,0x63] + ld.d $w18, 0($19) # CHECK: ld.d $w18, 0($19) # encoding: [0x78,0x00,0x9c,0xa3] + ld.d $w19, 512($20) # CHECK: ld.d $w19, 512($20) # encoding: [0x78,0x40,0xa4,0xe3] + ld.d $w20, 1024($21) # CHECK: ld.d $w20, 1024($21) # encoding: [0x78,0x80,0xad,0x23] + ld.d $w21, 2048($22) # CHECK: ld.d $w21, 2048($22) # encoding: [0x79,0x00,0xb5,0x63] + ld.d $w22, 4088($23) # CHECK: ld.d $w22, 4088($23) # encoding: [0x79,0xff,0xbd,0xa3] diff --git a/test/MC/Mips/nacl-mask.s b/test/MC/Mips/nacl-mask.s index c77646081f26..604b5c83721e 100644 --- a/test/MC/Mips/nacl-mask.s +++ b/test/MC/Mips/nacl-mask.s @@ -1,6 +1,5 @@ # RUN: llvm-mc -filetype=obj -triple=mipsel-unknown-nacl %s \ -# RUN: | llvm-objdump -triple mipsel -disassemble -no-show-raw-insn - \ -# RUN: | FileCheck %s +# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s # This test tests that address-masking sandboxing is added when given assembly # input. diff --git a/test/MC/Mips/nooddspreg-cmdarg.s b/test/MC/Mips/nooddspreg-cmdarg.s index 74c9d4da1967..28ac7b723343 100644 --- a/test/MC/Mips/nooddspreg-cmdarg.s +++ b/test/MC/Mips/nooddspreg-cmdarg.s @@ -8,7 +8,7 @@ # RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 -mattr=+nooddspreg 2> %t0 # RUN: FileCheck %s -check-prefix=INVALID < %t0 # -# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -mattr=+nooddspreg 2> %t0 +# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n64 -mattr=+nooddspreg 2> %t0 # RUN: FileCheck %s -check-prefix=INVALID < %t0 # # CHECK-ASM-NOT: .module nooddspreg diff --git a/test/MC/Mips/nooddspreg.s b/test/MC/Mips/nooddspreg.s index 6332b7042987..2b5154d427b2 100644 --- a/test/MC/Mips/nooddspreg.s +++ b/test/MC/Mips/nooddspreg.s @@ -8,7 +8,7 @@ # RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 2> %t1 # RUN: FileCheck %s -check-prefix=INVALID < %t1 # -# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 2> %t2 +# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n64 2> %t2 # RUN: FileCheck %s -check-prefix=INVALID < %t2 # # CHECK-ASM: .module nooddspreg diff --git a/test/MC/Mips/oddspreg.s b/test/MC/Mips/oddspreg.s index a3902f621e44..3b9aaeecddd0 100644 --- a/test/MC/Mips/oddspreg.s +++ b/test/MC/Mips/oddspreg.s @@ -3,14 +3,14 @@ # # RUN: llvm-mc %s -arch=mips -mcpu=mips32 -mattr=+fp64 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-O32 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ-ALL,CHECK-OBJ-O32 # # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n32 | \ # RUN: FileCheck %s -check-prefix=CHECK-ASM # # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n32 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-N32 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ-ALL,CHECK-OBJ-N32 # RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 | \ # RUN: FileCheck %s -check-prefix=CHECK-ASM @@ -19,19 +19,19 @@ # output should be unchanged. # RUN: llvm-mc /dev/null -arch=mips64 -mcpu=mips64 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-N64 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ-ALL,CHECK-OBJ-N64 # RUN: llvm-mc /dev/null -arch=mips -mcpu=mips32 -mattr=+fp64 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-O32 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ-ALL,CHECK-OBJ-O32 # # RUN: llvm-mc /dev/null -arch=mips64 -mcpu=mips64 -target-abi n32 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-N32 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ-ALL,CHECK-OBJ-N32 # RUN: llvm-mc /dev/null -arch=mips64 -mcpu=mips64 -filetype=obj -o - | \ # RUN: llvm-readobj -sections -section-data -section-relocations - | \ -# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-N64 +# RUN: FileCheck %s -check-prefixes=CHECK-OBJ-ALL,CHECK-OBJ-N64 # CHECK-ASM: .module oddspreg diff --git a/test/MC/Mips/reloc-directive-negative.s b/test/MC/Mips/reloc-directive-negative.s new file mode 100644 index 000000000000..41dd39a17f62 --- /dev/null +++ b/test/MC/Mips/reloc-directive-negative.s @@ -0,0 +1,6 @@ +# RUN: not llvm-mc -triple mips-unknown-linux < %s -show-encoding -target-abi=o32 \ +# RUN: 2>&1 | FileCheck %s + .text +foo: + .reloc -1, R_MIPS_32, .text # CHECK: :[[@LINE]]:9: error: expression is negative + nop diff --git a/test/MC/Mips/reloc-directive.s b/test/MC/Mips/reloc-directive.s index f42a1bc699f4..fee4c1379b13 100644 --- a/test/MC/Mips/reloc-directive.s +++ b/test/MC/Mips/reloc-directive.s @@ -28,8 +28,8 @@ foo: # OBJ-O32: 0000: 00000000 00000000 00000008 # OBJ-O32-LABEL: } # OBJ-O32-LABEL: Relocations [ -# OBJ-O32: 0x0 R_MIPS_NONE foo 0x0 -# OBJ-O32: 0x4 R_MIPS_NONE foo 0x0 +# OBJ-O32: 0x0 R_MIPS_NONE .text 0x0 +# OBJ-O32: 0x4 R_MIPS_NONE .text 0x0 # OBJ-O32: 0x8 R_MIPS_32 .text 0x0 # OBJ-O32: 0xC R_MIPS_NONE - 0x0 @@ -43,8 +43,8 @@ foo: # OBJ-N32: 0000: 00000000 00000000 00000000 # OBJ-N32-LABEL: } # OBJ-N32-LABEL: Relocations [ -# OBJ-N32: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE foo 0x4 -# OBJ-N32: 0x4 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE foo 0x0 +# OBJ-N32: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x4 +# OBJ-N32: 0x4 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x0 # OBJ-N32: 0x8 R_MIPS_32/R_MIPS_NONE/R_MIPS_NONE .text 0x8 # OBJ-N32: 0xC R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE - 0x0 @@ -52,7 +52,7 @@ foo: # OBJ-N64: 0000: 00000000 00000000 00000000 # OBJ-N64-LABEL: } # OBJ-N64-LABEL: Relocations [ -# OBJ-N64: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE foo 0x4 -# OBJ-N64: 0x4 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE foo 0x0 +# OBJ-N64: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x4 +# OBJ-N64: 0x4 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x0 # OBJ-N64: 0x8 R_MIPS_32/R_MIPS_NONE/R_MIPS_NONE .text 0x8 # OBJ-N64: 0xC R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE - 0x0 diff --git a/test/MC/Mips/relocation-n64.s b/test/MC/Mips/relocation-n64.s new file mode 100644 index 000000000000..bdb35c18852f --- /dev/null +++ b/test/MC/Mips/relocation-n64.s @@ -0,0 +1,41 @@ +// RUN: llvm-mc -triple mips64-unknown-linux < %s -show-encoding \ +// RUN: | FileCheck -check-prefixes=ENCBE,FIXUP %s +// RUN: llvm-mc -triple mips64el-unknown-linux < %s -show-encoding \ +// RUN: | FileCheck -check-prefixes=ENCLE,FIXUP %s +// RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux < %s \ +// RUN: | llvm-readobj -r | FileCheck -check-prefix=RELOC %s +// RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux < %s \ +// RUN: | llvm-readobj -sections -section-data \ +// RUN: | FileCheck -check-prefix=DATA %s + +// Test that we produce the correct relocation. +// FIXME: move more relocation only tests here. + +// Check prefixes: +// RELOC - Check the relocation in the object. +// FIXUP - Check the fixup on the instruction. +// ENCBE - Check the big-endian encoding on the instruction. +// ENCLE - Check the little-endian encoding on the instruction. +// ????? - Placeholder. Relocation is defined but the way of generating it is +// unknown. +// FIXME - Placeholder. Generation method is known but doesn't work. + +// DATA-LABEL: Name: .text +// DATA: SectionData ( + +// DATA-NEXT: 0000: 24620000 24620000 + addiu $2, $3, %lo(%neg(%gp_rel(foo))) // RELOC: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 foo + // ENCBE: addiu $2, $3, %lo(%neg(%gp_rel(foo))) # encoding: [0x24,0x62,A,A] + // ENCLE: addiu $2, $3, %lo(%neg(%gp_rel(foo))) # encoding: [A,A,0x62,0x24] + // FIXUP: # fixup A - offset: 0, value: %lo(%neg(%gp_rel(foo))), kind: fixup_Mips_GPOFF_LO + + addiu $2, $3, %lo(%neg(%gp_rel(bar))) // RELOC: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 .data + // ENCBE: addiu $2, $3, %lo(%neg(%gp_rel(bar))) # encoding: [0x24,0x62,A,A] + // ENCLE: addiu $2, $3, %lo(%neg(%gp_rel(bar))) # encoding: [A,A,0x62,0x24] + // FIXUP: # fixup A - offset: 0, value: %lo(%neg(%gp_rel(bar))), kind: fixup_Mips_GPOFF_LO + + .data + .word 0 +bar: + .word 1 +// DATA-LABEL: Section { diff --git a/test/MC/Mips/relocation-xfail.s b/test/MC/Mips/relocation-xfail.s new file mode 100644 index 000000000000..dcb78beb413f --- /dev/null +++ b/test/MC/Mips/relocation-xfail.s @@ -0,0 +1,31 @@ +// RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mattr=+micromips < %s \ +// RUN: | llvm-readobj -sections -section-data \ +// RUN: | FileCheck -check-prefix=DATA %s +// +// XFAIL: * + +// Please merge this with relocation.s when it passes. + +// baz is equivalent to .text+0x8 and is recorded in the symbol table as such +// but it refers to microMIPS code so the addend must indicate this in the LSB. +// The addend must therefore be 0x9. +// DATA-LABEL: Name: .text +// DATA: SectionData ( +// DATA: 0000: 30430000 30420009 30430000 30420009 + addiu $2, $3, %got(baz) + addiu $2, $2, %lo(baz) +baz: + addiu $2, $3, %hi(baz) + addiu $2, $2, %lo(baz) + +// DATA-LABEL: Name: .data +// DATA: SectionData ( + .data + .word 0 +bar: + .word 1 +// baz is equivalent to .text+0x8 and is recorded in the symbol table as such +// but it refers to microMIPS code so the addend must indicate this in the LSB. +// The addend must therefore be 0x9. +// DATA: 0000: 00000000 00000001 00000009 + .gpword baz diff --git a/test/MC/Mips/relocation.s b/test/MC/Mips/relocation.s index f8030d16687e..abbbc6d9ea2f 100644 --- a/test/MC/Mips/relocation.s +++ b/test/MC/Mips/relocation.s @@ -1,9 +1,12 @@ // RUN: llvm-mc -triple mips-unknown-linux < %s -show-encoding \ -// RUN: | FileCheck -check-prefix=ENCBE -check-prefix=FIXUP %s +// RUN: | FileCheck -check-prefixes=ENCBE,FIXUP %s // RUN: llvm-mc -triple mipsel-unknown-linux < %s -show-encoding \ -// RUN: | FileCheck -check-prefix=ENCLE -check-prefix=FIXUP %s +// RUN: | FileCheck -check-prefixes=ENCLE,FIXUP %s // RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux < %s \ // RUN: | llvm-readobj -r | FileCheck -check-prefix=RELOC %s +// RUN: llvm-mc -filetype=obj -triple mips-unknown-linux < %s \ +// RUN: | llvm-readobj -sections -section-data \ +// RUN: | FileCheck -check-prefix=DATA %s // Test that we produce the correct relocation. // FIXME: move more relocation only tests here. @@ -17,9 +20,18 @@ // unknown. // FIXME - Placeholder. Generation method is known but doesn't work. +// RELOC-LABEL: .rel.text { +// DATA-LABEL: Name: .text +// DATA: SectionData ( + +// DATA-NEXT: 0000: 00000004 00000000 00000004 0C000000 .short foo // RELOC: R_MIPS_16 foo - .long foo // RELOC: R_MIPS_32 foo + .short bar // RELOC: R_MIPS_16 .data + +baz: .long foo // RELOC: R_MIPS_32 foo + + .long bar // RELOC: R_MIPS_32 .data // ?????: R_MIPS_REL32 foo @@ -28,36 +40,74 @@ // ENCLE: jal foo # encoding: [A,A,A,0b000011AA] // FIXUP: # fixup A - offset: 0, value: foo, kind: fixup_Mips_26 +// The nop from the jal is at 0x0010 +// DATA-NEXT: 0010: 00000000 0C000001 00000000 24620000 + jal baz // RELOC: R_MIPS_26 .text + // ENCBE: jal baz # encoding: [0b000011AA,A,A,A] + // ENCLE: jal baz # encoding: [A,A,A,0b000011AA] + // FIXUP: # fixup A - offset: 0, value: baz, kind: fixup_Mips_26 + addiu $2, $3, %hi(foo) // RELOC: R_MIPS_HI16 foo // ENCBE: addiu $2, $3, %hi(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %hi(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@ABS_HI, kind: fixup_Mips_HI16 + // FIXUP: # fixup A - offset: 0, value: %hi(foo), kind: fixup_Mips_HI16 +// DATA-NEXT: 0020: 24620000 24620000 24620004 24620000 addiu $2, $3, %lo(foo) // RELOC: R_MIPS_LO16 foo // ENCBE: addiu $2, $3, %lo(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %lo(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16 + // FIXUP: # fixup A - offset: 0, value: %lo(foo), kind: fixup_Mips_LO16 + + addiu $2, $3, %hi(bar) // RELOC: R_MIPS_HI16 .data + // ENCBE: addiu $2, $3, %hi(bar) # encoding: [0x24,0x62,A,A] + // ENCLE: addiu $2, $3, %hi(bar) # encoding: [A,A,0x62,0x24] + // FIXUP: # fixup A - offset: 0, value: %hi(bar), kind: fixup_Mips_HI16 + + addiu $2, $3, %lo(bar) // RELOC: R_MIPS_LO16 .data + // ENCBE: addiu $2, $3, %lo(bar) # encoding: [0x24,0x62,A,A] + // ENCLE: addiu $2, $3, %lo(bar) # encoding: [A,A,0x62,0x24] + // FIXUP: # fixup A - offset: 0, value: %lo(bar), kind: fixup_Mips_LO16 addiu $2, $3, %gp_rel(foo) // RELOC: R_MIPS_GPREL16 foo // ENCBE: addiu $2, $3, %gp_rel(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %gp_rel(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GPREL, kind: fixup_Mips_GPREL + // FIXUP: # fixup A - offset: 0, value: %gp_rel(foo), kind: fixup_Mips_GPREL + +// DATA-NEXT: 0030: 24620004 24620000 24420000 24620000 + addiu $2, $3, %gp_rel(bar) // RELOC: R_MIPS_GPREL16 .data + // ENCBE: addiu $2, $3, %gp_rel(bar) # encoding: [0x24,0x62,A,A] + // ENCLE: addiu $2, $3, %gp_rel(bar) # encoding: [A,A,0x62,0x24] + // FIXUP: # fixup A - offset: 0, value: %gp_rel(bar), kind: fixup_Mips_GPREL // ?????: R_MIPS_LITERAL foo addiu $2, $3, %got(foo) // RELOC: R_MIPS_GOT16 foo // ENCBE: addiu $2, $3, %got(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %got(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GOT, kind: fixup_Mips_GOT_Local + // FIXUP: # fixup A - offset: 0, value: %got(foo), kind: fixup_Mips_GOT + // %got requires a %lo pair + addiu $2, $2, %lo(foo) + + addiu $2, $3, %got(bar) // RELOC: R_MIPS_GOT16 .data + // ENCBE: addiu $2, $3, %got(bar) # encoding: [0x24,0x62,A,A] + // ENCLE: addiu $2, $3, %got(bar) # encoding: [A,A,0x62,0x24] + // FIXUP: # fixup A - offset: 0, value: %got(bar), kind: fixup_Mips_GOT +// DATA-NEXT: 0040: 24420004 0000FFBE 24620000 + // %got requires a %lo pair + addiu $2, $2, %lo(bar) .short foo-. // RELOC: R_MIPS_PC16 foo + .short baz-. // RELOC-NOT: R_MIPS_PC16 addiu $2, $3, %call16(foo) // RELOC: R_MIPS_CALL16 foo // ENCBE: addiu $2, $3, %call16(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %call16(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GOT_CALL, kind: fixup_Mips_CALL16 + // FIXUP: # fixup A - offset: 0, value: %call16(foo), kind: fixup_Mips_CALL16 + .p2align 4 +// DATA-NEXT: 0050: 00000000 00000000 00000000 00000004 .quad foo // RELOC: R_MIPS_64 foo + .quad bar // RELOC: R_MIPS_64 .data // ?????: R_MIPS_GPREL32 foo // ?????: R_MIPS_UNUSED1 foo @@ -66,30 +116,32 @@ // ?????: R_MIPS_SHIFT5 foo // ?????: R_MIPS_SHIFT6 foo +// DATA-NEXT: 0060: 24620000 24620000 24620000 24620000 addiu $2, $3, %got_disp(foo) // RELOC: R_MIPS_GOT_DISP foo // ENCBE: addiu $2, $3, %got_disp(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %got_disp(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GOT_DISP, kind: fixup_Mips_GOT_DISP + // FIXUP: # fixup A - offset: 0, value: %got_disp(foo), kind: fixup_Mips_GOT_DISP addiu $2, $3, %got_page(foo) // RELOC: R_MIPS_GOT_PAGE foo // ENCBE: addiu $2, $3, %got_page(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %got_page(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GOT_PAGE, kind: fixup_Mips_GOT_PAGE + // FIXUP: # fixup A - offset: 0, value: %got_page(foo), kind: fixup_Mips_GOT_PAGE addiu $2, $3, %got_ofst(foo) // RELOC: R_MIPS_GOT_OFST foo // ENCBE: addiu $2, $3, %got_ofst(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %got_ofst(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GOT_OFST, kind: fixup_Mips_GOT_OFST + // FIXUP: # fixup A - offset: 0, value: %got_ofst(foo), kind: fixup_Mips_GOT_OFST addiu $2, $3, %got_hi(foo) // RELOC: R_MIPS_GOT_HI16 foo // ENCBE: addiu $2, $3, %got_hi(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %got_hi(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GOT_HI16, kind: fixup_Mips_GOT_HI16 + // FIXUP: # fixup A - offset: 0, value: %got_hi(foo), kind: fixup_Mips_GOT_HI16 +// DATA-NEXT: 0070: 24620000 64620000 64620000 24620000 addiu $2, $3, %got_lo(foo) // RELOC: R_MIPS_GOT_LO16 foo // ENCBE: addiu $2, $3, %got_lo(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %got_lo(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GOT_LO16, kind: fixup_Mips_GOT_LO16 + // FIXUP: # fixup A - offset: 0, value: %got_lo(foo), kind: fixup_Mips_GOT_LO16 // addiu $2, $3, %neg(foo) // FIXME: R_MIPS_SUB foo // ?????: R_MIPS_INSERT_A @@ -100,23 +152,24 @@ daddiu $2, $3, %higher(foo) // RELOC: R_MIPS_HIGHER foo // ENCBE: daddiu $2, $3, %higher(foo) # encoding: [0x64,0x62,A,A] // ENCLE: daddiu $2, $3, %higher(foo) # encoding: [A,A,0x62,0x64] - // FIXUP: # fixup A - offset: 0, value: foo@HIGHER, kind: fixup_Mips_HIGHER + // FIXUP: # fixup A - offset: 0, value: %higher(foo), kind: fixup_Mips_HIGHER daddiu $2, $3, %highest(foo) // RELOC: R_MIPS_HIGHEST foo // ENCBE: daddiu $2, $3, %highest(foo) # encoding: [0x64,0x62,A,A] // ENCLE: daddiu $2, $3, %highest(foo) # encoding: [A,A,0x62,0x64] - // FIXUP: # fixup A - offset: 0, value: foo@HIGHEST, kind: fixup_Mips_HIGHEST + // FIXUP: # fixup A - offset: 0, value: %highest(foo), kind: fixup_Mips_HIGHEST .set mips0 addiu $2, $3, %call_hi(foo) // RELOC: R_MIPS_CALL_HI16 foo // ENCBE: addiu $2, $3, %call_hi(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %call_hi(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@CALL_HI16, kind: fixup_Mips_CALL_HI16 + // FIXUP: # fixup A - offset: 0, value: %call_hi(foo), kind: fixup_Mips_CALL_HI16 +// DATA-NEXT: 0080: 24620000 24620000 24620000 24620000 addiu $2, $3, %call_lo(foo) // RELOC: R_MIPS_CALL_LO16 foo // ENCBE: addiu $2, $3, %call_lo(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %call_lo(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@CALL_LO16, kind: fixup_Mips_CALL_LO16 + // FIXUP: # fixup A - offset: 0, value: %call_lo(foo), kind: fixup_Mips_CALL_LO16 // ?????: R_MIPS_SCN_DISP foo // ?????: R_MIPS_REL16 foo @@ -132,39 +185,39 @@ addiu $2, $3, %tlsgd(foo) // RELOC: R_MIPS_TLS_GD foo // ENCBE: addiu $2, $3, %tlsgd(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %tlsgd(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@TLSGD, kind: fixup_Mips_TLSGD + // FIXUP: # fixup A - offset: 0, value: %tlsgd(foo), kind: fixup_Mips_TLSGD addiu $2, $3, %tlsldm(foo) // RELOC: R_MIPS_TLS_LDM foo // ENCBE: addiu $2, $3, %tlsldm(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %tlsldm(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@TLSLDM, kind: fixup_Mips_TLSLDM + // FIXUP: # fixup A - offset: 0, value: %tlsldm(foo), kind: fixup_Mips_TLSLDM addiu $2, $3, %dtprel_hi(foo) // RELOC: R_MIPS_TLS_DTPREL_HI16 foo // ENCBE: addiu $2, $3, %dtprel_hi(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %dtprel_hi(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@DTPREL_HI, kind: fixup_Mips_DTPREL_HI + // FIXUP: # fixup A - offset: 0, value: %dtprel_hi(foo), kind: fixup_Mips_DTPREL_HI addiu $2, $3, %dtprel_lo(foo) // RELOC: R_MIPS_TLS_DTPREL_LO16 foo // ENCBE: addiu $2, $3, %dtprel_lo(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %dtprel_lo(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@DTPREL_LO, kind: fixup_Mips_DTPREL_LO + // FIXUP: # fixup A - offset: 0, value: %dtprel_lo(foo), kind: fixup_Mips_DTPREL_LO addiu $2, $3, %gottprel(foo) // RELOC: R_MIPS_TLS_GOTTPREL foo // ENCBE: addiu $2, $3, %gottprel(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %gottprel(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@GOTTPREL, kind: fixup_Mips_GOTTPREL + // FIXUP: # fixup A - offset: 0, value: %gottprel(foo), kind: fixup_Mips_GOTTPREL // .tprelword foo // FIXME: R_MIPS_TLS_TPREL32 foo // .tpreldword foo // FIXME: R_MIPS_TLS_TPREL64 foo addiu $2, $3, %tprel_hi(foo) // RELOC: R_MIPS_TLS_TPREL_HI16 foo // ENCBE: addiu $2, $3, %tprel_hi(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %tprel_hi(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@TPREL_HI, kind: fixup_Mips_TPREL_HI + // FIXUP: # fixup A - offset: 0, value: %tprel_hi(foo), kind: fixup_Mips_TPREL_HI addiu $2, $3, %tprel_lo(foo) // RELOC: R_MIPS_TLS_TPREL_LO16 foo // ENCBE: addiu $2, $3, %tprel_lo(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %tprel_lo(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@TPREL_LO, kind: fixup_Mips_TPREL_LO + // FIXUP: # fixup A - offset: 0, value: %tprel_lo(foo), kind: fixup_Mips_TPREL_LO // ?????: R_MIPS_GLOB_DAT foo .set mips32r6 @@ -193,12 +246,12 @@ addiu $2, $3, %pcrel_hi(foo) // RELOC: R_MIPS_PCHI16 foo // ENCBE: addiu $2, $3, %pcrel_hi(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %pcrel_hi(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@PCREL_HI16, kind: fixup_MIPS_PCHI16 + // FIXUP: # fixup A - offset: 0, value: %pcrel_hi(foo), kind: fixup_MIPS_PCHI16 addiu $2, $3, %pcrel_lo(foo) // RELOC: R_MIPS_PCLO16 foo // ENCBE: addiu $2, $3, %pcrel_lo(foo) # encoding: [0x24,0x62,A,A] // ENCLE: addiu $2, $3, %pcrel_lo(foo) # encoding: [A,A,0x62,0x24] - // FIXUP: # fixup A - offset: 0, value: foo@PCREL_LO16, kind: fixup_MIPS_PCLO16 + // FIXUP: # fixup A - offset: 0, value: %pcrel_lo(foo), kind: fixup_MIPS_PCLO16 .set mips0 // FIXME: R_MIPS16_* @@ -207,3 +260,87 @@ // FIXME: R_MICROMIPS_* .long foo-. // RELOC: R_MIPS_PC32 foo // .ehword foo // FIXME: R_MIPS_EH foo + + .data + .word 0 +bar: + .word 1 + + .section .text_mm, "ax", @progbits + .set micromips +mm: +// RELOC-LABEL: .rel.text_mm { +// ENCBE-LABEL: mm: +// ENCLE-LABEL: mm: +// DATA-LABEL: Name: .text_mm +// DATA: SectionData ( + +// DATA-NEXT: 0000: 30430000 30420000 30430000 30420004 + addiu $2, $3, %got(foo_mm) // RELOC: R_MICROMIPS_GOT16 foo_mm + // ENCBE: addiu $2, $3, %got(foo_mm) # encoding: [0x30,0x43,A,A] + // The placement of the 'A' annotations is incorrect. They use 32-bit little endian instead of 2x 16-bit little endian. + // ENCLE: addiu $2, $3, %got(foo_mm) # encoding: [0x43'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %got(foo_mm), kind: fixup_MICROMIPS_GOT16 + // %got requires a %lo pair + addiu $2, $2, %lo(foo_mm) // RELOC: R_MICROMIPS_LO16 foo_mm + // ENCBE: addiu $2, $2, %lo(foo_mm) # encoding: [0x30,0x42,A,A] + // ENCLE: addiu $2, $2, %lo(foo_mm) # encoding: [0x42'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %lo(foo_mm), kind: fixup_MICROMIPS_LO16 + +foo_mm: + addiu $2, $3, %got(bar) // RELOC: R_MICROMIPS_GOT16 .data + // ENCBE: addiu $2, $3, %got(bar) # encoding: [0x30,0x43,A,A] + // ENCLE: addiu $2, $3, %got(bar) # encoding: [0x43'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %got(bar), kind: fixup_MICROMIPS_GOT16 + // %got requires a %lo pair + addiu $2, $2, %lo(bar) // RELOC: R_MICROMIPS_LO16 .data + // ENCBE: addiu $2, $2, %lo(bar) # encoding: [0x30,0x42,A,A] + // ENCLE: addiu $2, $2, %lo(bar) # encoding: [0x42'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %lo(bar), kind: fixup_MICROMIPS_LO16 + +// DATA-NEXT: 0010: 30430000 30420004 30430001 30420030 + addiu $2, $3, %got(baz) // RELOC: R_MICROMIPS_GOT16 .text + // ENCBE: addiu $2, $3, %got(baz) # encoding: [0x30,0x43,A,A] + // The placement of the 'A' annotations is incorrect. They use 32-bit little endian instead of 2x 16-bit little endian. + // ENCLE: addiu $2, $3, %got(baz) # encoding: [0x43'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %got(baz), kind: fixup_MICROMIPS_GOT16 + // %got requires a %lo pair + addiu $2, $2, %lo(baz) // RELOC: R_MICROMIPS_LO16 .text + // ENCBE: addiu $2, $2, %lo(baz) # encoding: [0x30,0x42,A,A] + // ENCLE: addiu $2, $2, %lo(baz) # encoding: [0x42'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %lo(baz), kind: fixup_MICROMIPS_LO16 + + addiu $2, $3, %got(long_mm) // RELOC: R_MICROMIPS_GOT16 .text + // ENCBE: addiu $2, $3, %got(long_mm) # encoding: [0x30,0x43,A,A] + // The placement of the 'A' annotations is incorrect. They use 32-bit little endian instead of 2x 16-bit little endian. + // ENCLE: addiu $2, $3, %got(long_mm) # encoding: [0x43'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %got(long_mm), kind: fixup_MICROMIPS_GOT16 + // %got requires a %lo pair + addiu $2, $2, %lo(long_mm) // RELOC: R_MICROMIPS_LO16 .text + // ENCBE: addiu $2, $2, %lo(long_mm) # encoding: [0x30,0x42,A,A] + // ENCLE: addiu $2, $2, %lo(long_mm) # encoding: [0x42'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %lo(long_mm), kind: fixup_MICROMIPS_LO16 + +// DATA-NEXT: 0020: 30430000 30420000 30430000 30420004 + addiu $2, $3, %hi(foo_mm) // RELOC: R_MICROMIPS_HI16 foo_mm + // ENCBE: addiu $2, $3, %hi(foo_mm) # encoding: [0x30,0x43,A,A] + // ENCLE: addiu $2, $3, %hi(foo_mm) # encoding: [0x43'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %hi(foo_mm), kind: fixup_MICROMIPS_HI16 + + addiu $2, $2, %lo(foo_mm) // RELOC: R_MICROMIPS_LO16 foo_mm + // ENCBE: addiu $2, $2, %lo(foo_mm) # encoding: [0x30,0x42,A,A] + // ENCLE: addiu $2, $2, %lo(foo_mm) # encoding: [0x42'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %lo(foo_mm), kind: fixup_MICROMIPS_LO16 + + addiu $2, $3, %hi(bar) // RELOC: R_MICROMIPS_HI16 .data + // ENCBE: addiu $2, $3, %hi(bar) # encoding: [0x30,0x43,A,A] + // ENCLE: addiu $2, $3, %hi(bar) # encoding: [0x43'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %hi(bar), kind: fixup_MICROMIPS_HI16 + + addiu $2, $2, %lo(bar) // RELOC: R_MICROMIPS_LO16 .data + // ENCBE: addiu $2, $2, %lo(bar) # encoding: [0x30,0x42,A,A] + // ENCLE: addiu $2, $2, %lo(bar) # encoding: [0x42'A',0x30'A',0x00,0x00] + // FIXUP: # fixup A - offset: 0, value: %lo(bar), kind: fixup_MICROMIPS_LO16 + + .space 65536, 0 +long_mm: diff --git a/test/MC/Mips/section-size.s b/test/MC/Mips/section-size.s new file mode 100644 index 000000000000..f6ffa8fe2de4 --- /dev/null +++ b/test/MC/Mips/section-size.s @@ -0,0 +1,106 @@ +# RUN: llvm-mc -triple mips-unknown-linux -filetype=obj \ +# RUN: -mips-round-section-sizes %s | llvm-readobj -sections | FileCheck %s + .section ".talign1", "ax" + .p2align 4 +t1: .byte 1 + + .section ".talign2", "ax" + .p2align 3 +t2: addiu $2, $2, 1 + addiu $2, $2, 1 + + .section ".talign3", "ax" + .p2align 3 +t3: addiu $2, $2, 1 + + .section ".talign4", "ax" +t4: .byte 1 + + .section ".dalign1", "a" + .p2align 4 +d1: .byte 1 + + .section ".dalign2", "a" + .p2align 3 +d2: .word 1 + .word 2 + + .section ".dalign3", "a" + .p2align 3 +d3: .word 1 + + .section ".dalign4", "a" +d4: .byte 1 + + .section ".dalign5", "a" + .p2align 16 +d5: .word 1 + + .section ".nalign1", "" + .p2align 4 +n1: .byte 1 + + .section ".nalign2", "" + .p2align 3 +n2: .word 1 + .word 2 + + .section ".nalign3", "" + .p2align 3 +n3: .word 1 + + .section ".nalign4", "" +n4: .byte 1 + +# CHECK-LABEL: Name: .talign1 +# CHECK: Size: 16 +# CHECK: AddressAlignment: 16 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .talign2 +# CHECK: Size: 8 +# CHECK: AddressAlignment: 8 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .talign3 +# CHECK: Size: 8 +# CHECK: AddressAlignment: 8 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .talign4 +# CHECK: Size: 1 +# CHECK: AddressAlignment: 1 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .dalign1 +# CHECK: Size: 16 +# CHECK: AddressAlignment: 16 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .dalign2 +# CHECK: Size: 8 +# CHECK: AddressAlignment: 8 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .dalign3 +# CHECK: Size: 8 +# CHECK: AddressAlignment: 8 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .dalign4 +# CHECK: Size: 1 +# CHECK: AddressAlignment: 1 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .dalign5 +# CHECK: Size: 65536 +# CHECK: AddressAlignment: 65536 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .nalign1 +# CHECK: Size: 16 +# CHECK: AddressAlignment: 16 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .nalign2 +# CHECK: Size: 8 +# CHECK: AddressAlignment: 8 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .nalign3 +# CHECK: Size: 8 +# CHECK: AddressAlignment: 8 +# CHECK-LABEL: } +# CHECK-LABEL: Name: .nalign4 +# CHECK: Size: 1 +# CHECK: AddressAlignment: 1 +# CHECK-LABEL: } diff --git a/test/MC/Mips/set-arch.s b/test/MC/Mips/set-arch.s index 834718c5d55c..e1123a90d06c 100644 --- a/test/MC/Mips/set-arch.s +++ b/test/MC/Mips/set-arch.s @@ -36,7 +36,8 @@ drotr32 $1, $14, 15 .set arch=mips64r6 mod $2, $4, $6 - .set arch=cnmips + .set arch=octeon + baddu $9, $6, $7 .set arch=r4000 dadd $2, $2, $2 @@ -62,6 +63,7 @@ # CHECK: drotr32 $1, $14, 15 # CHECK: .set arch=mips64r6 # CHECK: mod $2, $4, $6 -# CHECK: .set arch=cnmips +# CHECK: .set arch=octeon +# CHECK: baddu $9, $6, $7 # CHECK: .set arch=r4000 # CHECK: dadd $2, $2, $2 diff --git a/test/MC/Mips/set-defined-symbol.s b/test/MC/Mips/set-defined-symbol.s index 54db45da27b9..20988779783b 100644 --- a/test/MC/Mips/set-defined-symbol.s +++ b/test/MC/Mips/set-defined-symbol.s @@ -1,5 +1,5 @@ # RUN: llvm-mc %s -arch=mips -mcpu=mips32 -filetype=obj -o - | \ -# RUN: llvm-objdump -d -r -arch=mips - | FileCheck %s +# RUN: llvm-objdump -d -r - | FileCheck %s .global foo .weak bar diff --git a/test/MC/Mips/set-push-pop-directives-bad.s b/test/MC/Mips/set-push-pop-directives-bad.s index 8994eea1c8bb..9e259e0f3f49 100644 --- a/test/MC/Mips/set-push-pop-directives-bad.s +++ b/test/MC/Mips/set-push-pop-directives-bad.s @@ -1,23 +1,30 @@ # RUN: not llvm-mc %s -triple=mipsel-unknown-linux -mcpu=mips32r2 2>%t1 # RUN: FileCheck %s < %t1 +# Check only one error per statement. + .text .set pop # CHECK: :[[@LINE-1]]:14: error: .set pop with no .set push +# CHECK-NOT: :[[@LINE-1]]: .set push .set pop .set pop # CHECK: :[[@LINE-1]]:14: error: .set pop with no .set push +# CHECK-NOT: :[[@LINE-1]]: .set push foo # CHECK: :[[@LINE-1]]:19: error: unexpected token, expected end of statement +# CHECK-NOT: :[[@LINE-1]]: .set pop bar # CHECK: :[[@LINE-1]]:18: error: unexpected token, expected end of statement - +# CHECK-NOT: :[[@LINE-1]]: .set hardfloat .set push .set softfloat add.s $f2, $f2, $f2 # CHECK: :[[@LINE-1]]:9: error: instruction requires a CPU feature not currently enabled +# CHECK-NOT: :[[@LINE-1]]: .set pop add.s $f2, $f2, $f2 # CHECK-NOT: :[[@LINE-1]]:9: error: instruction requires a CPU feature not currently enabled +# CHECK-NOT: :[[@LINE-1]]: diff --git a/test/MC/Mips/sext_64_32.ll b/test/MC/Mips/sext_64_32.ll index 9e0cfa01fdfc..5679829e8eab 100644 --- a/test/MC/Mips/sext_64_32.ll +++ b/test/MC/Mips/sext_64_32.ll @@ -1,4 +1,5 @@ -; RUN: llc -march=mips64el -filetype=obj -mcpu=mips64r2 %s -o - | llvm-objdump -disassemble -triple mips64el - | FileCheck %s +; RUN: llc -march=mips64el -filetype=obj -mcpu=mips64r2 %s -o - | \ +; RUN: llvm-objdump -disassemble - | FileCheck %s ; Sign extend from 32 to 64 was creating nonsense opcodes diff --git a/test/MC/Mips/sort-relocation-table.s b/test/MC/Mips/sort-relocation-table.s index 590f8fddf480..16368c02d7b9 100644 --- a/test/MC/Mips/sort-relocation-table.s +++ b/test/MC/Mips/sort-relocation-table.s @@ -1,125 +1,398 @@ # RUN: llvm-mc -filetype=obj -arch mipsel %s | llvm-readobj -r | FileCheck %s # Test the order of records in the relocation table. -# *HI16 and local *GOT16 relocations should be immediately followed by the -# corresponding *LO16 relocation against the same symbol. # -# We try to implement the same semantics as gas, ie. to order the relocation -# table the same way as gas. +# MIPS has a few relocations that have an AHL component in the expression used +# to evaluate them. This AHL component is an addend with the same number of +# bits as a symbol value but not all of our ABI's are able to supply a +# sufficiently sized addend in a single relocation. # -# gnu as command line: -# mips-linux-gnu-as -EL sort-relocation-table.s -o sort-relocation-table.o +# The O32 ABI for example, uses REL relocations which store the addend in the +# section data. All the relocations with AHL components affect 16-bit fields +# so the addend is limited to 16-bit. This ABI resolves the limitation by +# linking relocations (e.g. R_MIPS_HI16 and R_MIPS_LO16) and distributing the +# addend between the linked relocations. The ABI mandates that such relocations +# must be next to each other in a particular order (e.g. R_MIPS_HI16 must be +# followed by a matching R_MIPS_LO16) but the rule is less strict in practice. +# +# See MipsELFObjectWriter.cpp for a full description of the rules. # # TODO: Add mips16 and micromips tests. -# Note: offsets are part of expected output, so it's simpler to add new test -# cases at the bottom of the file. -# CHECK: Relocations [ -# CHECK-NEXT: { +# HILO 1: HI/LO already match + .section .mips_hilo_1, "ax", @progbits + lui $2, %hi(sym1) + addiu $2, $2, %lo(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_1 { +# CHECK-NEXT: 0x0 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_LO16 sym1 +# CHECK-NEXT: } -# Put HI before LO. -addiu $2,$2,%lo(sym1) -lui $2,%hi(sym1) +# HILO 2: R_MIPS_HI16 must be followed by a matching R_MIPS_LO16. + .section .mips_hilo_2, "ax", @progbits + addiu $2, $2, %lo(sym1) + lui $2, %hi(sym1) +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_2 { # CHECK-NEXT: 0x4 R_MIPS_HI16 sym1 # CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 +# CHECK-NEXT: } + +# HILO 3: R_MIPS_HI16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same. + .section .mips_hilo_3, "ax", @progbits + addiu $2, $2, %lo(sym1) + lui $2, %hi(sym2) + addiu $2, $2, %lo(sym2) + lui $2, %hi(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_3 { +# CHECK-NEXT: 0xC R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_HI16 sym2 +# CHECK-NEXT: 0x8 R_MIPS_LO16 sym2 +# CHECK-NEXT: } -# When searching for a matching LO, ignore LOs against a different symbol. -addiu $2,$2,%lo(sym2) -lui $2,%hi(sym2) -addiu $2,$2,%lo(sym2_d) +# HILO 3b: Same as 3 but a different starting order. + .section .mips_hilo_3b, "ax", @progbits + addiu $2, $2, %lo(sym1) + lui $2, %hi(sym1) + addiu $2, $2, %lo(sym2) + lui $2, %hi(sym2) +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_3b { +# CHECK-NEXT: 0x4 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 # CHECK-NEXT: 0xC R_MIPS_HI16 sym2 # CHECK-NEXT: 0x8 R_MIPS_LO16 sym2 -# CHECK-NEXT: 0x10 R_MIPS_LO16 sym2_d - -# Match HI with 2nd LO because it has higher offset (than the 1st LO). -addiu $2,$2,%lo(sym3) -addiu $2,$2,%lo(sym3) -lui $2,%hi(sym3) - -# CHECK-NEXT: 0x14 R_MIPS_LO16 sym3 -# CHECK-NEXT: 0x1C R_MIPS_HI16 sym3 -# CHECK-NEXT: 0x18 R_MIPS_LO16 sym3 - -# HI is already followed by a matching LO, so don't look further, ie. ignore the -# "free" LO with higher offset. -lui $2,%hi(sym4) -addiu $2,$2,%lo(sym4) -addiu $2,$2,%lo(sym4) - -# CHECK-NEXT: 0x20 R_MIPS_HI16 sym4 -# CHECK-NEXT: 0x24 R_MIPS_LO16 sym4 -# CHECK-NEXT: 0x28 R_MIPS_LO16 sym4 - -# Match 2nd HI with 2nd LO, since it's the one with highest offset among the -# "free" ones. -addiu $2,$2,%lo(sym5) -addiu $2,$2,%lo(sym5) -lui $2,%hi(sym5) -addiu $2,$2,%lo(sym5) -lui $2,%hi(sym5) - -# CHECK-NEXT: 0x2C R_MIPS_LO16 sym5 -# CHECK-NEXT: 0x3C R_MIPS_HI16 sym5 -# CHECK-NEXT: 0x30 R_MIPS_LO16 sym5 -# CHECK-NEXT: 0x34 R_MIPS_HI16 sym5 -# CHECK-NEXT: 0x38 R_MIPS_LO16 sym5 - -# When more HIs are matched with one LO, sort them in descending order of -# offset. -addiu $2,$2,%lo(sym6) -lui $2,%hi(sym6) -lui $2,%hi(sym6) - -# CHECK-NEXT: 0x48 R_MIPS_HI16 sym6 -# CHECK-NEXT: 0x44 R_MIPS_HI16 sym6 -# CHECK-NEXT: 0x40 R_MIPS_LO16 sym6 - -# sym7 is a local symbol, so GOT relocation against it needs a matching LO. -sym7: -addiu $2,$2,%lo(sym7) -lui $2,%got(sym7) - -# CHECK-NEXT: 0x50 R_MIPS_GOT16 sym7 -# CHECK-NEXT: 0x4C R_MIPS_LO16 sym7 - -# sym8 is not a local symbol, don't look for a matching LO for GOT. -.global sym8 -addiu $2,$2,%lo(sym8) -lui $2,%got(sym8) - -# CHECK-NEXT: 0x54 R_MIPS_LO16 sym8 -# CHECK-NEXT: 0x58 R_MIPS_GOT16 sym8 - -# A small combination of previous checks. -symc1: -addiu $2,$2,%lo(symc1) -addiu $2,$2,%lo(symc1) -addiu $2,$2,%lo(symc1) -lui $2,%hi(symc1) -lui $2,%got(symc1) -addiu $2,$2,%lo(symc2) -lui $2,%hi(symc1) -lui $2,%hi(symc1) -lui $2,%got(symc2) -lui $2,%hi(symc1) -addiu $2,$2,%lo(symc1) -addiu $2,$2,%lo(symc2) -lui $2,%hi(symc1) -lui $2,%hi(symc1) - -# CHECK-NEXT: 0x78 R_MIPS_HI16 symc1 -# CHECK-NEXT: 0x74 R_MIPS_HI16 symc1 -# CHECK-NEXT: 0x6C R_MIPS_GOT16 symc1 -# CHECK-NEXT: 0x68 R_MIPS_HI16 symc1 -# CHECK-NEXT: 0x5C R_MIPS_LO16 symc1 -# CHECK-NEXT: 0x8C R_MIPS_HI16 symc1 -# CHECK-NEXT: 0x60 R_MIPS_LO16 symc1 -# CHECK-NEXT: 0x90 R_MIPS_HI16 symc1 -# CHECK-NEXT: 0x64 R_MIPS_LO16 symc1 -# CHECK-NEXT: 0x70 R_MIPS_LO16 symc2 -# CHECK-NEXT: 0x7C R_MIPS_GOT16 symc2 -# CHECK-NEXT: 0x80 R_MIPS_HI16 symc1 -# CHECK-NEXT: 0x84 R_MIPS_LO16 symc1 -# CHECK-NEXT: 0x88 R_MIPS_LO16 symc2 +# CHECK-NEXT: } + +# HILO 4: R_MIPS_HI16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same and the +# offset is the same. + .section .mips_hilo_4, "ax", @progbits + addiu $2, $2, %lo(sym1) + addiu $2, $2, %lo(sym1+4) + lui $2, %hi(sym1+4) + lui $2, %hi(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_4 { +# CHECK-NEXT: 0xC R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 +# CHECK-NEXT: 0x8 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_LO16 sym1 +# CHECK-NEXT: } + +# HILO 5: R_MIPS_HI16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same and the +# offset is greater or equal. Exact matches are preferred so both +# R_MIPS_HI16's match the same R_MIPS_LO16. + .section .mips_hilo_5, "ax", @progbits + lui $2, %hi(sym1) + lui $2, %hi(sym1) + addiu $2, $2, %lo(sym1+1) + addiu $2, $2, %lo(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_5 { +# CHECK-NEXT: 0x8 R_MIPS_LO16 sym1 +# CHECK-NEXT: 0x0 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0xC R_MIPS_LO16 sym1 +# CHECK-NEXT: } + +# HILO 6: R_MIPS_HI16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same and the +# offset is greater or equal. Smaller offsets are preferred so both +# R_MIPS_HI16's still match the same R_MIPS_LO16. + .section .mips_hilo_6, "ax", @progbits + lui $2, %hi(sym1) + lui $2, %hi(sym1) + addiu $2, $2, %lo(sym1+2) + addiu $2, $2, %lo(sym1+1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_6 { +# CHECK-NEXT: 0x8 R_MIPS_LO16 sym1 +# CHECK-NEXT: 0x0 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0xC R_MIPS_LO16 sym1 +# CHECK-NEXT: } + +# HILO 7: R_MIPS_HI16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same and the +# offset is greater or equal so that the carry bit is correct. The two +# R_MIPS_HI16's therefore match different R_MIPS_LO16's. + .section .mips_hilo_7, "ax", @progbits + addiu $2, $2, %lo(sym1+1) + addiu $2, $2, %lo(sym1+6) + lui $2, %hi(sym1+4) + lui $2, %hi(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_7 { +# CHECK-NEXT: 0xC R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 +# CHECK-NEXT: 0x8 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_LO16 sym1 +# CHECK-NEXT: } + +# HILO 8: R_MIPS_LO16's may be orphaned. + .section .mips_hilo_8, "ax", @progbits + lw $2, %lo(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_8 { +# CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 +# CHECK-NEXT: } + +# HILO 8b: Another example of 8. The R_MIPS_LO16 at 0x4 is orphaned. + .section .mips_hilo_8b, "ax", @progbits + lw $2, %lo(sym1) + lw $2, %lo(sym1) + lui $2, %hi(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_8b { +# CHECK-NEXT: 0x8 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_LO16 sym1 +# CHECK-NEXT: } + +# HILO 9: R_MIPS_HI16's don't need a matching R_MIPS_LO16 to immediately follow +# so long as there is one after the R_MIPS_HI16 somewhere. This isn't +# permitted by the ABI specification but has been allowed in practice +# for a very long time. The R_MIPS_HI16's should be ordered by the +# address they affect for purely cosmetic reasons. + .section .mips_hilo_9, "ax", @progbits + lw $2, %lo(sym1) + lui $2, %hi(sym1) + lui $2, %hi(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_9 { +# CHECK-NEXT: 0x4 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x8 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 +# CHECK-NEXT: } + +# HILO 10: R_MIPS_HI16's must have a matching R_MIPS_LO16 somewhere though. +# When this is impossible we have two possible bad behaviours +# depending on the linker implementation: +# * The linker silently computes the wrong value using a partially +# matching R_MIPS_LO16. +# * The linker rejects the relocation table as invalid. +# The latter is preferable since it's far easier to detect and debug so +# check that we encourage this behaviour by putting invalid +# R_MIPS_HI16's at the end of the relocation table where the risk of a +# partial match is very low. + .section .mips_hilo_10, "ax", @progbits + lui $2, %hi(sym1) + lw $2, %lo(sym1) + lui $2, %hi(sym2) + lui $2, %hi(sym3) + lw $2, %lo(sym3) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_hilo_10 { +# CHECK-NEXT: 0x0 R_MIPS_HI16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_LO16 sym1 +# CHECK-NEXT: 0xC R_MIPS_HI16 sym3 +# CHECK-NEXT: 0x10 R_MIPS_LO16 sym3 +# CHECK-NEXT: 0x8 R_MIPS_HI16 sym2 +# CHECK-NEXT: } + +# Now do the same tests for GOT/LO. +# The rules only apply to R_MIPS_GOT16 on local symbols which are also +# rewritten into section relative relocations. + +# GOTLO 1: GOT/LO already match + .section .mips_gotlo_1, "ax", @progbits + lui $2, %got(local1) + addiu $2, $2, %lo(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_1 { +# CHECK-NEXT: 0x0 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x4 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 2: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16. + .section .mips_gotlo_2, "ax", @progbits + addiu $2, $2, %lo(local1) + lui $2, %got(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_2 { +# CHECK-NEXT: 0x4 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x0 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 3: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same. + .section .mips_gotlo_3, "ax", @progbits + addiu $2, $2, %lo(local1) + lui $2, %got(local2) + addiu $2, $2, %lo(local2) + lui $2, %got(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_3 { +# CHECK-NEXT: 0xC R_MIPS_GOT16 .text +# CHECK-NEXT: 0x0 R_MIPS_LO16 .text +# CHECK-NEXT: 0x4 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x8 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 3b: Same as 3 but a different starting order. + .section .mips_gotlo_3b, "ax", @progbits + addiu $2, $2, %lo(local1) + lui $2, %got(local1) + addiu $2, $2, %lo(local2) + lui $2, %got(local2) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_3b { +# CHECK-NEXT: 0x4 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x0 R_MIPS_LO16 .text +# CHECK-NEXT: 0xC R_MIPS_GOT16 .text +# CHECK-NEXT: 0x8 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 4: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same and the +# offset is the same. + .section .mips_gotlo_4, "ax", @progbits + addiu $2, $2, %lo(local1) + addiu $2, $2, %lo(local1+4) + lui $2, %got(local1+4) + lui $2, %got(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_4 { +# CHECK-NEXT: 0xC R_MIPS_GOT16 .text +# CHECK-NEXT: 0x0 R_MIPS_LO16 .text +# CHECK-NEXT: 0x8 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x4 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 5: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same and the +# offset is greater or equal. Exact matches are preferred so both +# R_MIPS_GOT16's match the same R_MIPS_LO16. + .section .mips_gotlo_5, "ax", @progbits + lui $2, %got(local1) + lui $2, %got(local1) + addiu $2, $2, %lo(local1+1) + addiu $2, $2, %lo(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_5 { +# CHECK-NEXT: 0x8 R_MIPS_LO16 .text +# CHECK-NEXT: 0x0 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x4 R_MIPS_GOT16 .text +# CHECK-NEXT: 0xC R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 6: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same and the +# offset is greater or equal. Smaller offsets are preferred so both +# R_MIPS_GOT16's still match the same R_MIPS_LO16. + .section .mips_gotlo_6, "ax", @progbits + lui $2, %got(local1) + lui $2, %got(local1) + addiu $2, $2, %lo(local1+2) + addiu $2, $2, %lo(local1+1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_6 { +# CHECK-NEXT: 0x8 R_MIPS_LO16 .text +# CHECK-NEXT: 0x0 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x4 R_MIPS_GOT16 .text +# CHECK-NEXT: 0xC R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 7: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16. +# The second relocation matches if the symbol is the same and the +# offset is greater or equal so that the carry bit is correct. The two +# R_MIPS_GOT16's therefore match different R_MIPS_LO16's. + .section .mips_gotlo_7, "ax", @progbits + addiu $2, $2, %lo(local1+1) + addiu $2, $2, %lo(local1+6) + lui $2, %got(local1+4) + lui $2, %got(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_7 { +# CHECK-NEXT: 0xC R_MIPS_GOT16 .text +# CHECK-NEXT: 0x0 R_MIPS_LO16 .text +# CHECK-NEXT: 0x8 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x4 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 8: R_MIPS_LO16's may be orphaned. + .section .mips_gotlo_8, "ax", @progbits + lw $2, %lo(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_8 { +# CHECK-NEXT: 0x0 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 8b: Another example of 8. The R_MIPS_LO16 at 0x4 is orphaned. + .section .mips_gotlo_8b, "ax", @progbits + lw $2, %lo(local1) + lw $2, %lo(local1) + lui $2, %got(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_8b { +# CHECK-NEXT: 0x8 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x0 R_MIPS_LO16 .text +# CHECK-NEXT: 0x4 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 9: R_MIPS_GOT16's don't need a matching R_MIPS_LO16 to immediately +# follow so long as there is one after the R_MIPS_GOT16 somewhere. +# This isn't permitted by the ABI specification but has been allowed +# in practice for a very long time. The R_MIPS_GOT16's should be +# ordered by the address they affect for purely cosmetic reasons. + .section .mips_gotlo_9, "ax", @progbits + lw $2, %lo(local1) + lui $2, %got(local1) + lui $2, %got(local1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_9 { +# CHECK-NEXT: 0x4 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x8 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x0 R_MIPS_LO16 .text +# CHECK-NEXT: } + +# GOTLO 10: R_MIPS_GOT16's must have a matching R_MIPS_LO16 somewhere though. +# When this is impossible we have two possible bad behaviours +# depending on the linker implementation: +# * The linker silently computes the wrong value using a partially +# matching R_MIPS_LO16. +# * The linker rejects the relocation table as invalid. +# The latter is preferable since it's far easier to detect and debug +# so check that we encourage this behaviour by putting invalid +# R_MIPS_GOT16's at the end of the relocation table where the risk of +# a partial match is very low. + .section .mips_gotlo_10, "ax", @progbits + lui $2, %got(local1) + lw $2, %lo(local1) + lui $2, %got(local2) + lui $2, %got(local3) + lw $2, %lo(local3) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_10 { +# CHECK-NEXT: 0x0 R_MIPS_GOT16 .text +# CHECK-NEXT: 0x4 R_MIPS_LO16 .text +# CHECK-NEXT: 0xC R_MIPS_GOT16 .text +# CHECK-NEXT: 0x10 R_MIPS_LO16 .text +# CHECK-NEXT: 0x8 R_MIPS_GOT16 .text +# CHECK-NEXT: } + +# Finally, do test 2 for R_MIPS_GOT16 on external symbols to prove they are +# exempt from the rules for local symbols. + +# External GOTLO 2: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16. + .section .mips_ext_gotlo_2, "ax", @progbits + addiu $2, $2, %lo(sym1) + lui $2, %got(sym1) + +# CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_ext_gotlo_2 { +# CHECK-NEXT: 0x0 R_MIPS_LO16 sym1 +# CHECK-NEXT: 0x4 R_MIPS_GOT16 sym1 +# CHECK-NEXT: } + +# Define some local symbols. + .text + nop +local1: nop +local2: nop +local3: nop diff --git a/test/MC/Mips/target-soft-float.s b/test/MC/Mips/target-soft-float.s index 5865d5ab1269..f532cdf2ed97 100644 --- a/test/MC/Mips/target-soft-float.s +++ b/test/MC/Mips/target-soft-float.s @@ -269,10 +269,10 @@ foo: # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled ldc1 $f2, 16($7) # FIXME: LDC1 is correctly rejected but the wrong error message is emitted. - # 32: :[[@LINE-2]]:19: error: invalid operand for instruction + # 32: :[[@LINE-2]]:19: error: expected memory with 16-bit signed offset lwc1 $f2, 16($7) # FIXME: LWC1 is correctly rejected but the wrong error message is emitted. - # 32: :[[@LINE-2]]:19: error: invalid operand for instruction + # 32: :[[@LINE-2]]:19: error: expected memory with 16-bit signed offset madd.s $f2, $f2, $f2, $f2 # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled mfc1 $7, $f2 @@ -313,7 +313,7 @@ foo: # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled sdc1 $f2, 16($7) # FIXME: SDC1 is correctly rejected but the wrong error message is emitted. - # 32: :[[@LINE-2]]:19: error: invalid operand for instruction + # 32: :[[@LINE-2]]:19: error: expected memory with 16-bit signed offset sqrt.d $f2, $f2 # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled sqrt.s $f2, $f2 @@ -324,7 +324,7 @@ foo: # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled swc1 $f2, 16($7) # FIXME: SWC1 is correctly rejected but the wrong error message is emitted. - # 32: :[[@LINE-2]]:19: error: invalid operand for instruction + # 32: :[[@LINE-2]]:19: error: expected memory with 16-bit signed offset trunc.w.d $f2, $f2 # 32: :[[@LINE-1]]:3: error: instruction requires a CPU feature not currently enabled trunc.w.s $f2, $f2 diff --git a/test/MC/Mips/user-macro-argument-separation.s b/test/MC/Mips/user-macro-argument-separation.s new file mode 100644 index 000000000000..a33701c05a42 --- /dev/null +++ b/test/MC/Mips/user-macro-argument-separation.s @@ -0,0 +1,40 @@ +# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | \ +# RUN: FileCheck %s +# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | \ +# RUN: FileCheck %s +# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | \ +# RUN: FileCheck %s + +# Check that the IAS expands macro instructions in the same way as GAS + +.extern sym +# imm and rs are deliberately swapped to test whitespace separated arguments. +.macro EX2 insn, rd, imm, rs +.ex\@: \insn \rd, \rs, \imm +.endm + +.option pic0 + +EX2 addiu $2, 1 $3 # CHECK: addiu $2, $3, 1 +EX2 addiu $2, ~1 $3 # CHECK: addiu $2, $3, -2 +EX2 addiu $2, ~ 1 $3 # CHECK: addiu $2, $3, -2 +EX2 addiu $2, 1+1 $3 # CHECK: addiu $2, $3, 2 +EX2 addiu $2, 1+ 1 $3 # CHECK: addiu $2, $3, 2 +EX2 addiu $2, 1 +1 $3 # CHECK: addiu $2, $3, 2 +EX2 addiu $2, 1 + 1 $3 # CHECK: addiu $2, $3, 2 +EX2 addiu $2, 1+~1 $3 # CHECK: addiu $2, $3, -1 +EX2 addiu $2, 1+~ 1 $3 # CHECK: addiu $2, $3, -1 +EX2 addiu $2, 1+ ~1 $3 # CHECK: addiu $2, $3, -1 +EX2 addiu $2, 1 +~1 $3 # CHECK: addiu $2, $3, -1 +EX2 addiu $2, 1 +~ 1 $3 # CHECK: addiu $2, $3, -1 +EX2 addiu $2, 1 + ~1 $3 # CHECK: addiu $2, $3, -1 +EX2 addiu $2, 1 + ~ 1 $3 # CHECK: addiu $2, $3, -1 +EX2 addiu $2, 1+(1) $3 # CHECK: addiu $2, $3, 2 +EX2 addiu $2, 1 +(1) $3 # CHECK: addiu $2, $3, 2 +EX2 addiu $2, 1+ (1) $3 # CHECK: addiu $2, $3, 2 +EX2 addiu $2, 1 + (1) $3 # CHECK: addiu $2, $3, 2 +EX2 addiu $2, 1+(1)+1 $3 # CHECK: addiu $2, $3, 3 +EX2 addiu $2, 1 +(1)+1 $3 # CHECK: addiu $2, $3, 3 +EX2 addiu $2, 1+ (1)+1 $3 # CHECK: addiu $2, $3, 3 +EX2 addiu $2, 1 + (1)+1 $3 # CHECK: addiu $2, $3, 3 +nop # CHECK: nop diff --git a/test/MC/PowerPC/ppc64-encoding-bookII.s b/test/MC/PowerPC/ppc64-encoding-bookII.s index 9b68dcc7e8d1..de8b0d24a558 100644 --- a/test/MC/PowerPC/ppc64-encoding-bookII.s +++ b/test/MC/PowerPC/ppc64-encoding-bookII.s @@ -73,10 +73,19 @@ # CHECK-BE: stwcx. 2, 3, 4 # encoding: [0x7c,0x43,0x21,0x2d] # CHECK-LE: stwcx. 2, 3, 4 # encoding: [0x2d,0x21,0x43,0x7c] stwcx. 2, 3, 4 + # CHECK-BE: stdcx. 2, 3, 4 # encoding: [0x7c,0x43,0x21,0xad] # CHECK-LE: stdcx. 2, 3, 4 # encoding: [0xad,0x21,0x43,0x7c] stdcx. 2, 3, 4 +# CHECK-BE: stwat 2, 3, 28 # encoding: [0x7c,0x43,0xe5,0x8c] +# CHECK-LE: stwat 2, 3, 28 # encoding: [0x8c,0xe5,0x43,0x7c] + stwat 2, 3, 28 + +# CHECK-BE: stdat 2, 3, 28 # encoding: [0x7c,0x43,0xe5,0xcc] +# CHECK-LE: stdat 2, 3, 28 # encoding: [0xcc,0xe5,0x43,0x7c] + stdat 2, 3, 28 + # CHECK-BE: ptesync # encoding: [0x7c,0x40,0x04,0xac] # CHECK-LE: ptesync # encoding: [0xac,0x04,0x40,0x7c] sync 2 @@ -131,6 +140,14 @@ # CHECK-LE: ldarx 2, 3, 4, 1 # encoding: [0xa9,0x20,0x43,0x7c] ldarx 2, 3, 4, 1 +# CHECK-BE: lwat 2, 3, 28 # encoding: [0x7c,0x43,0xe4,0x8c] +# CHECK-LE: lwat 2, 3, 28 # encoding: [0x8c,0xe4,0x43,0x7c] + lwat 2, 3, 28 + +# CHECK-BE: ldat 2, 3, 28 # encoding: [0x7c,0x43,0xe4,0xcc] +# CHECK-LE: ldat 2, 3, 28 # encoding: [0xcc,0xe4,0x43,0x7c] + ldat 2, 3, 28 + # CHECK-BE: sync # encoding: [0x7c,0x00,0x04,0xac] # CHECK-LE: sync # encoding: [0xac,0x04,0x00,0x7c] sync diff --git a/test/MC/PowerPC/ppc64-encoding-ext.s b/test/MC/PowerPC/ppc64-encoding-ext.s index 143a30606f06..0b7bc927c63f 100644 --- a/test/MC/PowerPC/ppc64-encoding-ext.s +++ b/test/MC/PowerPC/ppc64-encoding-ext.s @@ -3497,6 +3497,12 @@ # CHECK-BE: mfctr 2 # encoding: [0x7c,0x49,0x02,0xa6] # CHECK-LE: mfctr 2 # encoding: [0xa6,0x02,0x49,0x7c] mfctr 2 +# CHECK-BE: mfvrsave 2 # encoding: [0x7c,0x40,0x42,0xa6] +# CHECK-LE: mfvrsave 2 # encoding: [0xa6,0x42,0x40,0x7c] + mfvrsave 2 +# CHECK-BE: mtvrsave 2 # encoding: [0x7c,0x40,0x43,0xa6] +# CHECK-LE: mtvrsave 2 # encoding: [0xa6,0x43,0x40,0x7c] + mtvrsave 2 # Miscellaneous mnemonics @@ -3666,3 +3672,16 @@ # CHECK-LE: attn # encoding: [0x00,0x02,0x00,0x00] attn +# Copy-Paste Facility (Extended Mnemonics): +# CHECK-BE: copy 2, 19, 0 # encoding: [0x7c,0x02,0x9e,0x0c] +# CHECK-LE: copy 2, 19, 0 # encoding: [0x0c,0x9e,0x02,0x7c] + copy 2, 19 +# CHECK-BE: copy 2, 19, 1 # encoding: [0x7c,0x22,0x9e,0x0c] +# CHECK-LE: copy 2, 19, 1 # encoding: [0x0c,0x9e,0x22,0x7c] + copy_first 2, 19 +# CHECK-BE: paste 17, 1, 0 # encoding: [0x7c,0x11,0x0f,0x0c] +# CHECK-LE: paste 17, 1, 0 # encoding: [0x0c,0x0f,0x11,0x7c] + paste 17, 1 +# CHECK-BE: paste. 17, 1, 1 # encoding: [0x7c,0x31,0x0f,0x0d] +# CHECK-LE: paste. 17, 1, 1 # encoding: [0x0d,0x0f,0x31,0x7c] + paste_last 17, 1 diff --git a/test/MC/PowerPC/ppc64-encoding-vmx.s b/test/MC/PowerPC/ppc64-encoding-vmx.s index d8825bf33402..7ac4ce9e0d0c 100644 --- a/test/MC/PowerPC/ppc64-encoding-vmx.s +++ b/test/MC/PowerPC/ppc64-encoding-vmx.s @@ -742,3 +742,240 @@ # CHECK-LE: mfvscr 2 # encoding: [0x04,0x06,0x40,0x10] mfvscr 2 +# Power9 instructions + +# Vector Compare Not Equal (Zero) +# CHECK-BE: vcmpneb 2, 3, 4 # encoding: [0x10,0x43,0x20,0x07] +# CHECK-LE: vcmpneb 2, 3, 4 # encoding: [0x07,0x20,0x43,0x10] + vcmpneb 2, 3, 4 +# CHECK-BE: vcmpneb. 2, 3, 4 # encoding: [0x10,0x43,0x24,0x07] +# CHECK-LE: vcmpneb. 2, 3, 4 # encoding: [0x07,0x24,0x43,0x10] + vcmpneb. 2, 3, 4 +# CHECK-BE: vcmpnezb 2, 3, 4 # encoding: [0x10,0x43,0x21,0x07] +# CHECK-LE: vcmpnezb 2, 3, 4 # encoding: [0x07,0x21,0x43,0x10] + vcmpnezb 2, 3, 4 +# CHECK-BE: vcmpnezb. 2, 3, 4 # encoding: [0x10,0x43,0x25,0x07] +# CHECK-LE: vcmpnezb. 2, 3, 4 # encoding: [0x07,0x25,0x43,0x10] + vcmpnezb. 2, 3, 4 +# CHECK-BE: vcmpneh 2, 3, 4 # encoding: [0x10,0x43,0x20,0x47] +# CHECK-LE: vcmpneh 2, 3, 4 # encoding: [0x47,0x20,0x43,0x10] + vcmpneh 2, 3, 4 +# CHECK-BE: vcmpneh. 2, 3, 4 # encoding: [0x10,0x43,0x24,0x47] +# CHECK-LE: vcmpneh. 2, 3, 4 # encoding: [0x47,0x24,0x43,0x10] + vcmpneh. 2, 3, 4 +# CHECK-BE: vcmpnezh 2, 3, 4 # encoding: [0x10,0x43,0x21,0x47] +# CHECK-LE: vcmpnezh 2, 3, 4 # encoding: [0x47,0x21,0x43,0x10] + vcmpnezh 2, 3, 4 +# CHECK-BE: vcmpnezh. 2, 3, 4 # encoding: [0x10,0x43,0x25,0x47] +# CHECK-LE: vcmpnezh. 2, 3, 4 # encoding: [0x47,0x25,0x43,0x10] + vcmpnezh. 2, 3, 4 +# CHECK-BE: vcmpnew 2, 3, 4 # encoding: [0x10,0x43,0x20,0x87] +# CHECK-LE: vcmpnew 2, 3, 4 # encoding: [0x87,0x20,0x43,0x10] + vcmpnew 2, 3, 4 +# CHECK-BE: vcmpnew. 2, 3, 4 # encoding: [0x10,0x43,0x24,0x87] +# CHECK-LE: vcmpnew. 2, 3, 4 # encoding: [0x87,0x24,0x43,0x10] + vcmpnew. 2, 3, 4 +# CHECK-BE: vcmpnezw 2, 3, 4 # encoding: [0x10,0x43,0x21,0x87] +# CHECK-LE: vcmpnezw 2, 3, 4 # encoding: [0x87,0x21,0x43,0x10] + vcmpnezw 2, 3, 4 +# CHECK-BE: vcmpnezw. 2, 3, 4 # encoding: [0x10,0x43,0x25,0x87] +# CHECK-LE: vcmpnezw. 2, 3, 4 # encoding: [0x87,0x25,0x43,0x10] + vcmpnezw. 2, 3, 4 + +# Vector Extract Unsigned +# CHECK-BE: vextractub 2, 3, 15 # encoding: [0x10,0x4f,0x1a,0x0d] +# CHECK-LE: vextractub 2, 3, 15 # encoding: [0x0d,0x1a,0x4f,0x10] + vextractub 2, 3, 15 +# CHECK-BE: vextractuh 2, 3, 14 # encoding: [0x10,0x4e,0x1a,0x4d] +# CHECK-LE: vextractuh 2, 3, 14 # encoding: [0x4d,0x1a,0x4e,0x10] + vextractuh 2, 3, 14 +# CHECK-BE: vextractuw 2, 3, 12 # encoding: [0x10,0x4c,0x1a,0x8d] +# CHECK-LE: vextractuw 2, 3, 12 # encoding: [0x8d,0x1a,0x4c,0x10] + vextractuw 2, 3, 12 +# CHECK-BE: vextractd 2, 3, 8 # encoding: [0x10,0x48,0x1a,0xcd] +# CHECK-LE: vextractd 2, 3, 8 # encoding: [0xcd,0x1a,0x48,0x10] + vextractd 2, 3, 8 + +# Vector Extract Unsigned Left/Right-Indexed +# CHECK-BE: vextublx 2, 3, 4 # encoding: [0x10,0x43,0x26,0x0d] +# CHECK-LE: vextublx 2, 3, 4 # encoding: [0x0d,0x26,0x43,0x10] + vextublx 2, 3, 4 +# CHECK-BE: vextubrx 2, 3, 4 # encoding: [0x10,0x43,0x27,0x0d] +# CHECK-LE: vextubrx 2, 3, 4 # encoding: [0x0d,0x27,0x43,0x10] + vextubrx 2, 3, 4 +# CHECK-BE: vextuhlx 2, 3, 4 # encoding: [0x10,0x43,0x26,0x4d] +# CHECK-LE: vextuhlx 2, 3, 4 # encoding: [0x4d,0x26,0x43,0x10] + vextuhlx 2, 3, 4 +# CHECK-BE: vextuhrx 2, 3, 4 # encoding: [0x10,0x43,0x27,0x4d] +# CHECK-LE: vextuhrx 2, 3, 4 # encoding: [0x4d,0x27,0x43,0x10] + vextuhrx 2, 3, 4 +# CHECK-BE: vextuwlx 2, 3, 4 # encoding: [0x10,0x43,0x26,0x8d] +# CHECK-LE: vextuwlx 2, 3, 4 # encoding: [0x8d,0x26,0x43,0x10] + vextuwlx 2, 3, 4 +# CHECK-BE: vextuwrx 2, 3, 4 # encoding: [0x10,0x43,0x27,0x8d] +# CHECK-LE: vextuwrx 2, 3, 4 # encoding: [0x8d,0x27,0x43,0x10] + vextuwrx 2, 3, 4 + +# Vector Insert Element +# CHECK-BE: vinsertb 2, 3, 15 # encoding: [0x10,0x4f,0x1b,0x0d] +# CHECK-LE: vinsertb 2, 3, 15 # encoding: [0x0d,0x1b,0x4f,0x10] + vinsertb 2, 3, 15 +# CHECK-BE: vinserth 2, 3, 14 # encoding: [0x10,0x4e,0x1b,0x4d] +# CHECK-LE: vinserth 2, 3, 14 # encoding: [0x4d,0x1b,0x4e,0x10] + vinserth 2, 3, 14 +# CHECK-BE: vinsertw 2, 3, 12 # encoding: [0x10,0x4c,0x1b,0x8d] +# CHECK-LE: vinsertw 2, 3, 12 # encoding: [0x8d,0x1b,0x4c,0x10] + vinsertw 2, 3, 12 +# CHECK-BE: vinsertd 2, 3, 8 # encoding: [0x10,0x48,0x1b,0xcd] +# CHECK-LE: vinsertd 2, 3, 8 # encoding: [0xcd,0x1b,0x48,0x10] + vinsertd 2, 3, 8 + +# Power9 instructions + +# Vector Count Trailing Zeros +# CHECK-BE: vctzb 2, 3 # encoding: [0x10,0x5c,0x1e,0x02] +# CHECK-LE: vctzb 2, 3 # encoding: [0x02,0x1e,0x5c,0x10] + vctzb 2, 3 +# CHECK-BE: vctzh 2, 3 # encoding: [0x10,0x5d,0x1e,0x02] +# CHECK-LE: vctzh 2, 3 # encoding: [0x02,0x1e,0x5d,0x10] + vctzh 2, 3 +# CHECK-BE: vctzw 2, 3 # encoding: [0x10,0x5e,0x1e,0x02] +# CHECK-LE: vctzw 2, 3 # encoding: [0x02,0x1e,0x5e,0x10] + vctzw 2, 3 +# CHECK-BE: vctzd 2, 3 # encoding: [0x10,0x5f,0x1e,0x02] +# CHECK-LE: vctzd 2, 3 # encoding: [0x02,0x1e,0x5f,0x10] + vctzd 2, 3 + +# CHECK-BE: vclzlsbb 2, 3 # encoding: [0x10,0x40,0x1e,0x02] +# CHECK-LE: vclzlsbb 2, 3 # encoding: [0x02,0x1e,0x40,0x10] + vclzlsbb 2, 3 +# CHECK-BE: vctzlsbb 2, 3 # encoding: [0x10,0x41,0x1e,0x02] +# CHECK-LE: vctzlsbb 2, 3 # encoding: [0x02,0x1e,0x41,0x10] + vctzlsbb 2, 3 + +# Vector Extend Sign +# CHECK-BE: vextsb2w 2, 3 # encoding: [0x10,0x50,0x1e,0x02] +# CHECK-LE: vextsb2w 2, 3 # encoding: [0x02,0x1e,0x50,0x10] + vextsb2w 2, 3 +# CHECK-BE: vextsh2w 2, 3 # encoding: [0x10,0x51,0x1e,0x02] +# CHECK-LE: vextsh2w 2, 3 # encoding: [0x02,0x1e,0x51,0x10] + vextsh2w 2, 3 +# CHECK-BE: vextsb2d 2, 3 # encoding: [0x10,0x58,0x1e,0x02] +# CHECK-LE: vextsb2d 2, 3 # encoding: [0x02,0x1e,0x58,0x10] + vextsb2d 2, 3 +# CHECK-BE: vextsh2d 2, 3 # encoding: [0x10,0x59,0x1e,0x02] +# CHECK-LE: vextsh2d 2, 3 # encoding: [0x02,0x1e,0x59,0x10] + vextsh2d 2, 3 +# CHECK-BE: vextsw2d 2, 3 # encoding: [0x10,0x5a,0x1e,0x02] +# CHECK-LE: vextsw2d 2, 3 # encoding: [0x02,0x1e,0x5a,0x10] + vextsw2d 2, 3 + +# Vector Integer Negate +# CHECK-BE: vnegw 2, 3 # encoding: [0x10,0x46,0x1e,0x02] +# CHECK-LE: vnegw 2, 3 # encoding: [0x02,0x1e,0x46,0x10] + vnegw 2, 3 +# CHECK-BE: vnegd 2, 3 # encoding: [0x10,0x47,0x1e,0x02] +# CHECK-LE: vnegd 2, 3 # encoding: [0x02,0x1e,0x47,0x10] + vnegd 2, 3 + +# Vector Parity Byte +# CHECK-BE: vprtybw 2, 3 # encoding: [0x10,0x48,0x1e,0x02] +# CHECK-LE: vprtybw 2, 3 # encoding: [0x02,0x1e,0x48,0x10] + vprtybw 2, 3 +# CHECK-BE: vprtybd 2, 3 # encoding: [0x10,0x49,0x1e,0x02] +# CHECK-LE: vprtybd 2, 3 # encoding: [0x02,0x1e,0x49,0x10] + vprtybd 2, 3 +# CHECK-BE: vprtybq 2, 3 # encoding: [0x10,0x4a,0x1e,0x02] +# CHECK-LE: vprtybq 2, 3 # encoding: [0x02,0x1e,0x4a,0x10] + vprtybq 2, 3 + +# Vector (Bit) Permute (Right-indexed) +# CHECK-BE: vbpermd 2, 5, 17 # encoding: [0x10,0x45,0x8d,0xcc] +# CHECK-LE: vbpermd 2, 5, 17 # encoding: [0xcc,0x8d,0x45,0x10] + vbpermd 2, 5, 17 +# CHECK-BE: vpermr 2, 3, 4, 5 # encoding: [0x10,0x43,0x21,0x7b] +# CHECK-LE: vpermr 2, 3, 4, 5 # encoding: [0x7b,0x21,0x43,0x10] + vpermr 2, 3, 4, 5 + +# Vector Rotate Left Mask/Mask-Insert +# CHECK-BE: vrlwnm 2, 3, 4 # encoding: [0x10,0x43,0x21,0x85] +# CHECK-LE: vrlwnm 2, 3, 4 # encoding: [0x85,0x21,0x43,0x10] + vrlwnm 2, 3, 4 +# CHECK-BE: vrlwmi 2, 3, 4 # encoding: [0x10,0x43,0x20,0x85] +# CHECK-LE: vrlwmi 2, 3, 4 # encoding: [0x85,0x20,0x43,0x10] + vrlwmi 2, 3, 4 +# CHECK-BE: vrldnm 2, 3, 4 # encoding: [0x10,0x43,0x21,0xc5] +# CHECK-LE: vrldnm 2, 3, 4 # encoding: [0xc5,0x21,0x43,0x10] + vrldnm 2, 3, 4 +# CHECK-BE: vrldmi 2, 3, 4 # encoding: [0x10,0x43,0x20,0xc5] +# CHECK-LE: vrldmi 2, 3, 4 # encoding: [0xc5,0x20,0x43,0x10] + vrldmi 2, 3, 4 + +# Vector Shift Left/Right +# CHECK-BE: vslv 2, 3, 4 # encoding: [0x10,0x43,0x27,0x44] +# CHECK-LE: vslv 2, 3, 4 # encoding: [0x44,0x27,0x43,0x10] + vslv 2, 3, 4 +# CHECK-BE: vsrv 2, 3, 4 # encoding: [0x10,0x43,0x27,0x04] +# CHECK-LE: vsrv 2, 3, 4 # encoding: [0x04,0x27,0x43,0x10] + vsrv 2, 3, 4 + +# Vector Multiply-by-10 +# CHECK-BE: vmul10uq 2, 3 # encoding: [0x10,0x43,0x02,0x01] +# CHECK-LE: vmul10uq 2, 3 # encoding: [0x01,0x02,0x43,0x10] + vmul10uq 2, 3 +# CHECK-BE: vmul10cuq 2, 3 # encoding: [0x10,0x43,0x00,0x01] +# CHECK-LE: vmul10cuq 2, 3 # encoding: [0x01,0x00,0x43,0x10] + vmul10cuq 2, 3 +# CHECK-BE: vmul10euq 2, 3, 4 # encoding: [0x10,0x43,0x22,0x41] +# CHECK-LE: vmul10euq 2, 3, 4 # encoding: [0x41,0x22,0x43,0x10] + vmul10euq 2, 3, 4 +# CHECK-BE: vmul10ecuq 2, 3, 4 # encoding: [0x10,0x43,0x20,0x41] +# CHECK-LE: vmul10ecuq 2, 3, 4 # encoding: [0x41,0x20,0x43,0x10] + vmul10ecuq 2, 3, 4 + +# Decimal Convert From/to National/Zoned/Signed-QWord +# CHECK-BE: bcdcfn. 27, 31, 1 # encoding: [0x13,0x67,0xff,0x81] +# CHECK-LE: bcdcfn. 27, 31, 1 # encoding: [0x81,0xff,0x67,0x13] + bcdcfn. 27, 31, 1 +# CHECK-BE: bcdcfz. 27, 31, 1 # encoding: [0x13,0x66,0xff,0x81] +# CHECK-LE: bcdcfz. 27, 31, 1 # encoding: [0x81,0xff,0x66,0x13] + bcdcfz. 27, 31, 1 +# CHECK-BE: bcdctn. 27, 31 # encoding: [0x13,0x65,0xfd,0x81] +# CHECK-LE: bcdctn. 27, 31 # encoding: [0x81,0xfd,0x65,0x13] + bcdctn. 27, 31 +# CHECK-BE: bcdctz. 27, 31, 1 # encoding: [0x13,0x64,0xff,0x81] +# CHECK-LE: bcdctz. 27, 31, 1 # encoding: [0x81,0xff,0x64,0x13] + bcdctz. 27, 31, 1 +# CHECK-BE: bcdcfsq. 27, 31, 1 # encoding: [0x13,0x62,0xff,0x81] +# CHECK-LE: bcdcfsq. 27, 31, 1 # encoding: [0x81,0xff,0x62,0x13] + bcdcfsq. 27, 31, 1 +# CHECK-BE: bcdctsq. 27, 31 # encoding: [0x13,0x60,0xfd,0x81] +# CHECK-LE: bcdctsq. 27, 31 # encoding: [0x81,0xfd,0x60,0x13] + bcdctsq. 27, 31 + +# Decimal Copy-Sign/Set-Sign +# CHECK-BE: bcdcpsgn. 27, 31, 7 # encoding: [0x13,0x7f,0x3b,0x41] +# CHECK-LE: bcdcpsgn. 27, 31, 7 # encoding: [0x41,0x3b,0x7f,0x13] + bcdcpsgn. 27, 31, 7 +# CHECK-BE: bcdsetsgn. 27, 31, 1 # encoding: [0x13,0x7f,0xff,0x81] +# CHECK-LE: bcdsetsgn. 27, 31, 1 # encoding: [0x81,0xff,0x7f,0x13] + bcdsetsgn. 27, 31, 1 + +# Decimal Shift/Unsigned-Shift/Shift-and-Round +# CHECK-BE: bcds. 27, 31, 7, 1 # encoding: [0x13,0x7f,0x3e,0xc1] +# CHECK-LE: bcds. 27, 31, 7, 1 # encoding: [0xc1,0x3e,0x7f,0x13] + bcds. 27, 31, 7, 1 +# CHECK-BE: bcdus. 27, 31, 7 # encoding: [0x13,0x7f,0x3c,0x81] +# CHECK-LE: bcdus. 27, 31, 7 # encoding: [0x81,0x3c,0x7f,0x13] + bcdus. 27, 31, 7 +# CHECK-BE: bcdsr. 27, 31, 7, 1 # encoding: [0x13,0x7f,0x3f,0xc1] +# CHECK-LE: bcdsr. 27, 31, 7, 1 # encoding: [0xc1,0x3f,0x7f,0x13] + bcdsr. 27, 31, 7, 1 + +# Decimal (Unsigned) Truncate +# CHECK-BE: bcdtrunc. 27, 31, 7, 1 # encoding: [0x13,0x7f,0x3f,0x01] +# CHECK-LE: bcdtrunc. 27, 31, 7, 1 # encoding: [0x01,0x3f,0x7f,0x13] + bcdtrunc. 27, 31, 7, 1 +# CHECK-BE: bcdutrunc. 27, 31, 7 # encoding: [0x13,0x7f,0x3d,0x41] +# CHECK-LE: bcdutrunc. 27, 31, 7 # encoding: [0x41,0x3d,0x7f,0x13] + bcdutrunc. 27, 31, 7 diff --git a/test/MC/PowerPC/ppc64-encoding.s b/test/MC/PowerPC/ppc64-encoding.s index b2aac8874ffe..70c2e949debb 100644 --- a/test/MC/PowerPC/ppc64-encoding.s +++ b/test/MC/PowerPC/ppc64-encoding.s @@ -197,6 +197,9 @@ # CHECK-BE: ldux 2, 3, 4 # encoding: [0x7c,0x43,0x20,0x6a] # CHECK-LE: ldux 2, 3, 4 # encoding: [0x6a,0x20,0x43,0x7c] ldux 2, 3, 4 +# CHECK-BE: ldmx 2, 3, 4 # encoding: [0x7c,0x43,0x22,0x6a] +# CHECK-LE: ldmx 2, 3, 4 # encoding: [0x6a,0x22,0x43,0x7c] + ldmx 2, 3, 4 # Fixed-point store instructions @@ -530,6 +533,24 @@ # CHECK-BE: cmplw 2, 3, 4 # encoding: [0x7d,0x03,0x20,0x40] # CHECK-LE: cmplw 2, 3, 4 # encoding: [0x40,0x20,0x03,0x7d] cmpl 2, 0, 3, 4 +# CHECK-BE: cmprb 3, 1, 7, 17 # encoding: [0x7d,0xa7,0x89,0x80] +# CHECK-LE: cmprb 3, 1, 7, 17 # encoding: [0x80,0x89,0xa7,0x7d] + cmprb 3, 1, 7, 17 +# CHECK-BE: cmpeqb 3, 7, 17 # encoding: [0x7d,0x87,0x89,0xc0] +# CHECK-LE: cmpeqb 3, 7, 17 # encoding: [0xc0,0x89,0x87,0x7d] + cmpeqb 3, 7, 17 +# CHECK-BE: cnttzw 7, 17 # encoding: [0x7e,0x27,0x04,0x34] +# CHECK-LE: cnttzw 7, 17 # encoding: [0x34,0x04,0x27,0x7e] + cnttzw 7, 17 +# CHECK-BE: cnttzw. 7, 17 # encoding: [0x7e,0x27,0x04,0x35] +# CHECK-LE: cnttzw. 7, 17 # encoding: [0x35,0x04,0x27,0x7e] + cnttzw. 7, 17 +# CHECK-BE: cnttzd 7, 17 # encoding: [0x7e,0x27,0x04,0x74] +# CHECK-LE: cnttzd 7, 17 # encoding: [0x74,0x04,0x27,0x7e] + cnttzd 7, 17 +# CHECK-BE: cnttzd. 7, 17 # encoding: [0x7e,0x27,0x04,0x75] +# CHECK-LE: cnttzd. 7, 17 # encoding: [0x75,0x04,0x27,0x7e] + cnttzd. 7, 17 # Fixed-point trap instructions @@ -833,6 +854,9 @@ # CHECK-BE: mfocrf 16, 8 # encoding: [0x7e,0x10,0x80,0x26] # CHECK-LE: mfocrf 16, 8 # encoding: [0x26,0x80,0x10,0x7e] mfocrf 16, 8 +# CHECK-BE: mcrxrx 7 # encoding: [0x7f,0x80,0x04,0x80] +# CHECK-LE: mcrxrx 7 # encoding: [0x80,0x04,0x80,0x7f] + mcrxrx 7 # Move to/from segment register # CHECK-BE: mtsr 12, 10 # encoding: [0x7d,0x4c,0x01,0xa4] @@ -848,3 +872,34 @@ # CHECK-BE: mfsrin 10, 12 # encoding: [0x7d,0x40,0x65,0x26] # CHECK-LE: mfsrin 10, 12 # encoding: [0x26,0x65,0x40,0x7d] mfsrin %r10,%r12 + +# Copy-Paste Facility +# CHECK-BE: copy 2, 19, 1 # encoding: [0x7c,0x22,0x9e,0x0c] +# CHECK-LE: copy 2, 19, 1 # encoding: [0x0c,0x9e,0x22,0x7c] + copy 2, 19, 1 +# CHECK-BE: paste 17, 1, 1 # encoding: [0x7c,0x31,0x0f,0x0c] +# CHECK-LE: paste 17, 1, 1 # encoding: [0x0c,0x0f,0x31,0x7c] + paste 17, 1, 1 +# CHECK-BE: cp_abort # encoding: [0x7c,0x00,0x06,0x8c] +# CHECK-LE: cp_abort # encoding: [0x8c,0x06,0x00,0x7c] + cp_abort + +# Message Synchronize +# CHECK-BE: msgsync # encoding: [0x7c,0x00,0x06,0xec] +# CHECK-LE: msgsync # encoding: [0xec,0x06,0x00,0x7c] + msgsync + +# SLB Invalidate Entry Global +# CHECK-BE: slbieg 6, 21 # encoding: [0x7c,0xc0,0xab,0xa4] +# CHECK-LE: slbieg 6, 21 # encoding: [0xa4,0xab,0xc0,0x7c] + slbieg 6, 21 + +# SLB Synchronize +# CHECK-BE: slbsync # encoding: [0x7c,0x00,0x02,0xa4] +# CHECK-LE: slbsync # encoding: [0xa4,0x02,0x00,0x7c] + slbsync + +# Power-Saving Mode Instruction +# CHECK-BE: stop # encoding: [0x4c,0x00,0x02,0xe4] +# CHECK-LE: stop # encoding: [0xe4,0x02,0x00,0x4c] + stop diff --git a/test/MC/PowerPC/ppc64-fixups.s b/test/MC/PowerPC/ppc64-fixups.s index 20a70c270547..0b8375bf72fa 100644 --- a/test/MC/PowerPC/ppc64-fixups.s +++ b/test/MC/PowerPC/ppc64-fixups.s @@ -338,10 +338,10 @@ base: # CHECK-LE-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_TPREL16_LO target 0x0 addi 3, 3, target@tprel@l -# CHECK-BE: addi 3, 3, target@tprel # encoding: [0x38,0x63,A,A] -# CHECK-LE: addi 3, 3, target@tprel # encoding: [A,A,0x63,0x38] -# CHECK-BE-NEXT: # fixup A - offset: 2, value: target@tprel, kind: fixup_ppc_half16 -# CHECK-LE-NEXT: # fixup A - offset: 0, value: target@tprel, kind: fixup_ppc_half16 +# CHECK-BE: addi 3, 3, target@TPREL # encoding: [0x38,0x63,A,A] +# CHECK-LE: addi 3, 3, target@TPREL # encoding: [A,A,0x63,0x38] +# CHECK-BE-NEXT: # fixup A - offset: 2, value: target@TPREL, kind: fixup_ppc_half16 +# CHECK-LE-NEXT: # fixup A - offset: 0, value: target@TPREL, kind: fixup_ppc_half16 # CHECK-BE-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16 target 0x0 # CHECK-LE-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_TPREL16 target 0x0 addi 3, 3, target@tprel @@ -394,10 +394,10 @@ base: # CHECK-LE-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_TPREL16_LO_DS target 0x0 ld 1, target@tprel@l(3) -# CHECK-BE: ld 1, target@tprel(3) # encoding: [0xe8,0x23,A,0bAAAAAA00] -# CHECK-LE: ld 1, target@tprel(3) # encoding: [0bAAAAAA00,A,0x23,0xe8] -# CHECK-BE-NEXT: # fixup A - offset: 2, value: target@tprel, kind: fixup_ppc_half16ds -# CHECK-LE-NEXT: # fixup A - offset: 0, value: target@tprel, kind: fixup_ppc_half16ds +# CHECK-BE: ld 1, target@TPREL(3) # encoding: [0xe8,0x23,A,0bAAAAAA00] +# CHECK-LE: ld 1, target@TPREL(3) # encoding: [0bAAAAAA00,A,0x23,0xe8] +# CHECK-BE-NEXT: # fixup A - offset: 2, value: target@TPREL, kind: fixup_ppc_half16ds +# CHECK-LE-NEXT: # fixup A - offset: 0, value: target@TPREL, kind: fixup_ppc_half16ds # CHECK-BE-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_DS target 0x0 # CHECK-LE-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_TPREL16_DS target 0x0 ld 1, target@tprel(3) @@ -418,10 +418,10 @@ base: # CHECK-LE-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_DTPREL16_LO target 0x0 addi 3, 3, target@dtprel@l -# CHECK-BE: addi 3, 3, target@dtprel # encoding: [0x38,0x63,A,A] -# CHECK-LE: addi 3, 3, target@dtprel # encoding: [A,A,0x63,0x38] -# CHECK-BE-NEXT: # fixup A - offset: 2, value: target@dtprel, kind: fixup_ppc_half16 -# CHECK-LE-NEXT: # fixup A - offset: 0, value: target@dtprel, kind: fixup_ppc_half16 +# CHECK-BE: addi 3, 3, target@DTPREL # encoding: [0x38,0x63,A,A] +# CHECK-LE: addi 3, 3, target@DTPREL # encoding: [A,A,0x63,0x38] +# CHECK-BE-NEXT: # fixup A - offset: 2, value: target@DTPREL, kind: fixup_ppc_half16 +# CHECK-LE-NEXT: # fixup A - offset: 0, value: target@DTPREL, kind: fixup_ppc_half16 # CHECK-BE-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16 target 0x0 # CHECK-LE-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_DTPREL16 target 0x0 addi 3, 3, target@dtprel @@ -474,10 +474,10 @@ base: # CHECK-LE-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_DTPREL16_LO_DS target 0x0 ld 1, target@dtprel@l(3) -# CHECK-BE: ld 1, target@dtprel(3) # encoding: [0xe8,0x23,A,0bAAAAAA00] -# CHECK-LE: ld 1, target@dtprel(3) # encoding: [0bAAAAAA00,A,0x23,0xe8] -# CHECK-BE-NEXT: # fixup A - offset: 2, value: target@dtprel, kind: fixup_ppc_half16ds -# CHECK-LE-NEXT: # fixup A - offset: 0, value: target@dtprel, kind: fixup_ppc_half16ds +# CHECK-BE: ld 1, target@DTPREL(3) # encoding: [0xe8,0x23,A,0bAAAAAA00] +# CHECK-LE: ld 1, target@DTPREL(3) # encoding: [0bAAAAAA00,A,0x23,0xe8] +# CHECK-BE-NEXT: # fixup A - offset: 2, value: target@DTPREL, kind: fixup_ppc_half16ds +# CHECK-LE-NEXT: # fixup A - offset: 0, value: target@DTPREL, kind: fixup_ppc_half16ds # CHECK-BE-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_DS target 0x0 # CHECK-LE-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_DTPREL16_DS target 0x0 ld 1, target@dtprel(3) diff --git a/test/MC/PowerPC/ppc64-initial-cfa.s b/test/MC/PowerPC/ppc64-initial-cfa.s index ca97e1b96b07..819cd1114ae5 100644 --- a/test/MC/PowerPC/ppc64-initial-cfa.s +++ b/test/MC/PowerPC/ppc64-initial-cfa.s @@ -1,10 +1,10 @@ -# RUN: llvm-mc -triple=powerpc64-unknown-linux-gnu -filetype=obj -relocation-model=static %s | \ +# RUN: llvm-mc -triple=powerpc64-unknown-linux-gnu -filetype=obj %s | \ # RUN: llvm-readobj -s -sr -sd | FileCheck %s -check-prefix=STATIC -check-prefix=STATIC-BE -# RUN: llvm-mc -triple=powerpc64-unknown-linux-gnu -filetype=obj -relocation-model=pic %s | \ +# RUN: llvm-mc -triple=powerpc64-unknown-linux-gnu -filetype=obj %s | \ # RUN: llvm-readobj -s -sr -sd | FileCheck %s -check-prefix=PIC -check-prefix=PIC-BE -# RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -relocation-model=static %s | \ +# RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj %s | \ # RUN: llvm-readobj -s -sr -sd | FileCheck %s -check-prefix=STATIC -check-prefix=STATIC-LE -# RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -relocation-model=pic %s | \ +# RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj %s | \ # RUN: llvm-readobj -s -sr -sd | FileCheck %s -check-prefix=PIC -check-prefix=PIC-LE _proc: diff --git a/test/MC/PowerPC/ppc64-localentry.s b/test/MC/PowerPC/ppc64-localentry.s index 03f760ef86ea..cc1de288fc1e 100644 --- a/test/MC/PowerPC/ppc64-localentry.s +++ b/test/MC/PowerPC/ppc64-localentry.s @@ -61,7 +61,8 @@ copy2 = callee2 # CHECK-NEXT: Size: 16 # CHECK-NEXT: Binding: Local # CHECK-NEXT: Type: Function -# CHECK-NEXT: Other: 96 +# CHECK-NEXT: Other [ (0x60) +# CHECK-NEXT: ] # CHECK-NEXT: Section: .text # CHECK: Name: callee2 # CHECK-NEXT: Value: @@ -77,7 +78,8 @@ copy2 = callee2 # CHECK-NEXT: Size: 16 # CHECK-NEXT: Binding: Local # CHECK-NEXT: Type: Function -# CHECK-NEXT: Other: 96 +# CHECK-NEXT: Other [ (0x60) +# CHECK-NEXT: ] # CHECK-NEXT: Section: .text # CHECK: Name: copy2 # CHECK-NEXT: Value: diff --git a/test/MC/PowerPC/st-other-crash.s b/test/MC/PowerPC/st-other-crash.s index 20f51f761373..26d8d2dc0c3b 100644 --- a/test/MC/PowerPC/st-other-crash.s +++ b/test/MC/PowerPC/st-other-crash.s @@ -9,7 +9,8 @@ // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: None (0x0) -// CHECK-NEXT: Other: 64 +// CHECK-NEXT: Other [ (0x40) +// CHECK-NEXT: ] // CHECK-NEXT: Section: .group // CHECK-NEXT: } diff --git a/test/MC/PowerPC/vsx.s b/test/MC/PowerPC/vsx.s index 2c03659c9cde..7dae97b0060a 100644 --- a/test/MC/PowerPC/vsx.s +++ b/test/MC/PowerPC/vsx.s @@ -547,3 +547,418 @@ # CHECK-BE: mtvsrwz 0, 3 # encoding: [0x7c,0x03,0x01,0xe6] # CHECK-LE: mtvsrwz 0, 3 # encoding: [0xe6,0x01,0x03,0x7c] mtvsrwz 0, 3 + +# Power9 Instructions: + +# Copy Sign +# CHECK-BE: xscpsgnqp 7, 31, 27 # encoding: [0xfc,0xff,0xd8,0xc8] +# CHECK-LE: xscpsgnqp 7, 31, 27 # encoding: [0xc8,0xd8,0xff,0xfc] + xscpsgnqp 7, 31, 27 + +# Absolute/Negative Absolute/Negate +# CHECK-BE: xsabsqp 7, 27 # encoding: [0xfc,0xe0,0xde,0x48] +# CHECK-LE: xsabsqp 7, 27 # encoding: [0x48,0xde,0xe0,0xfc] + xsabsqp 7, 27 +# CHECK-BE: xsnegqp 7, 27 # encoding: [0xfc,0xf0,0xde,0x48] +# CHECK-LE: xsnegqp 7, 27 # encoding: [0x48,0xde,0xf0,0xfc] + xsnegqp 7, 27 +# CHECK-BE: xsnabsqp 7, 27 # encoding: [0xfc,0xe8,0xde,0x48] +# CHECK-LE: xsnabsqp 7, 27 # encoding: [0x48,0xde,0xe8,0xfc] + xsnabsqp 7, 27 + +# Add/Divide/Multiply/Square-Root/Subtract +# CHECK-BE: xsaddqp 7, 31, 27 # encoding: [0xfc,0xff,0xd8,0x08] +# CHECK-LE: xsaddqp 7, 31, 27 # encoding: [0x08,0xd8,0xff,0xfc] + xsaddqp 7, 31, 27 +# CHECK-BE: xsaddqpo 7, 31, 27 # encoding: [0xfc,0xff,0xd8,0x09] +# CHECK-LE: xsaddqpo 7, 31, 27 # encoding: [0x09,0xd8,0xff,0xfc] + xsaddqpo 7, 31, 27 +# CHECK-BE: xsdivqp 7, 31, 27 # encoding: [0xfc,0xff,0xdc,0x48] +# CHECK-LE: xsdivqp 7, 31, 27 # encoding: [0x48,0xdc,0xff,0xfc] + xsdivqp 7, 31, 27 +# CHECK-BE: xsdivqpo 7, 31, 27 # encoding: [0xfc,0xff,0xdc,0x49] +# CHECK-LE: xsdivqpo 7, 31, 27 # encoding: [0x49,0xdc,0xff,0xfc] + xsdivqpo 7, 31, 27 +# CHECK-BE: xsmulqp 7, 31, 27 # encoding: [0xfc,0xff,0xd8,0x48] +# CHECK-LE: xsmulqp 7, 31, 27 # encoding: [0x48,0xd8,0xff,0xfc] + xsmulqp 7, 31, 27 +# CHECK-BE: xsmulqpo 7, 31, 27 # encoding: [0xfc,0xff,0xd8,0x49] +# CHECK-LE: xsmulqpo 7, 31, 27 # encoding: [0x49,0xd8,0xff,0xfc] + xsmulqpo 7, 31, 27 +# CHECK-BE: xssqrtqp 7, 31 # encoding: [0xfc,0xfb,0xfe,0x48] +# CHECK-LE: xssqrtqp 7, 31 # encoding: [0x48,0xfe,0xfb,0xfc] + xssqrtqp 7, 31 +# CHECK-BE: xssqrtqpo 7, 31 # encoding: [0xfc,0xfb,0xfe,0x49] +# CHECK-LE: xssqrtqpo 7, 31 # encoding: [0x49,0xfe,0xfb,0xfc] + xssqrtqpo 7, 31 +# CHECK-BE: xssubqp 7, 31, 27 # encoding: [0xfc,0xff,0xdc,0x08] +# CHECK-LE: xssubqp 7, 31, 27 # encoding: [0x08,0xdc,0xff,0xfc] + xssubqp 7, 31, 27 +# CHECK-BE: xssubqpo 7, 31, 27 # encoding: [0xfc,0xff,0xdc,0x09] +# CHECK-LE: xssubqpo 7, 31, 27 # encoding: [0x09,0xdc,0xff,0xfc] + xssubqpo 7, 31, 27 + +# (Negative) Multiply-Add/Subtract +# CHECK-BE: xsmaddqp 7, 31, 27 # encoding: [0xfc,0xff,0xdb,0x08] +# CHECK-LE: xsmaddqp 7, 31, 27 # encoding: [0x08,0xdb,0xff,0xfc] + xsmaddqp 7, 31, 27 +# CHECK-BE: xsmaddqpo 7, 31, 27 # encoding: [0xfc,0xff,0xdb,0x09] +# CHECK-LE: xsmaddqpo 7, 31, 27 # encoding: [0x09,0xdb,0xff,0xfc] + xsmaddqpo 7, 31, 27 +# CHECK-BE: xsmsubqp 7, 31, 27 # encoding: [0xfc,0xff,0xdb,0x48] +# CHECK-LE: xsmsubqp 7, 31, 27 # encoding: [0x48,0xdb,0xff,0xfc] + xsmsubqp 7, 31, 27 +# CHECK-BE: xsmsubqpo 7, 31, 27 # encoding: [0xfc,0xff,0xdb,0x49] +# CHECK-LE: xsmsubqpo 7, 31, 27 # encoding: [0x49,0xdb,0xff,0xfc] + xsmsubqpo 7, 31, 27 +# CHECK-BE: xsnmaddqp 7, 31, 27 # encoding: [0xfc,0xff,0xdb,0x88] +# CHECK-LE: xsnmaddqp 7, 31, 27 # encoding: [0x88,0xdb,0xff,0xfc] + xsnmaddqp 7, 31, 27 +# CHECK-BE: xsnmaddqpo 7, 31, 27 # encoding: [0xfc,0xff,0xdb,0x89] +# CHECK-LE: xsnmaddqpo 7, 31, 27 # encoding: [0x89,0xdb,0xff,0xfc] + xsnmaddqpo 7, 31, 27 +# CHECK-BE: xsnmsubqp 7, 31, 27 # encoding: [0xfc,0xff,0xdb,0xc8] +# CHECK-LE: xsnmsubqp 7, 31, 27 # encoding: [0xc8,0xdb,0xff,0xfc] + xsnmsubqp 7, 31, 27 +# CHECK-BE: xsnmsubqpo 7, 31, 27 # encoding: [0xfc,0xff,0xdb,0xc9] +# CHECK-LE: xsnmsubqpo 7, 31, 27 # encoding: [0xc9,0xdb,0xff,0xfc] + xsnmsubqpo 7, 31, 27 + +# Compare Ordered/Unordered +# CHECK-BE: xscmpoqp 6, 31, 27 # encoding: [0xff,0x1f,0xd9,0x08] +# CHECK-LE: xscmpoqp 6, 31, 27 # encoding: [0x08,0xd9,0x1f,0xff] + xscmpoqp 6, 31, 27 +# CHECK-BE: xscmpuqp 6, 31, 27 # encoding: [0xff,0x1f,0xdd,0x08] +# CHECK-LE: xscmpuqp 6, 31, 27 # encoding: [0x08,0xdd,0x1f,0xff] + xscmpuqp 6, 31, 27 + +# Compare Exponents +# CHECK-BE: xscmpexpdp 6, 63, 27 # encoding: [0xf3,0x1f,0xd9,0xdc] +# CHECK-LE: xscmpexpdp 6, 63, 27 # encoding: [0xdc,0xd9,0x1f,0xf3] + xscmpexpdp 6, 63, 27 +# CHECK-BE: xscmpexpqp 6, 31, 27 # encoding: [0xff,0x1f,0xd9,0x48] +# CHECK-LE: xscmpexpqp 6, 31, 27 # encoding: [0x48,0xd9,0x1f,0xff] + xscmpexpqp 6, 31, 27 + +# Compare ==, >=, >, != +# CHECK-BE: xscmpeqdp 7, 63, 27 # encoding: [0xf0,0xff,0xd8,0x1c] +# CHECK-LE: xscmpeqdp 7, 63, 27 # encoding: [0x1c,0xd8,0xff,0xf0] + xscmpeqdp 7, 63, 27 +# CHECK-BE: xscmpgedp 7, 63, 27 # encoding: [0xf0,0xff,0xd8,0x9c] +# CHECK-LE: xscmpgedp 7, 63, 27 # encoding: [0x9c,0xd8,0xff,0xf0] + xscmpgedp 7, 63, 27 +# CHECK-BE: xscmpgtdp 7, 63, 27 # encoding: [0xf0,0xff,0xd8,0x5c] +# CHECK-LE: xscmpgtdp 7, 63, 27 # encoding: [0x5c,0xd8,0xff,0xf0] + xscmpgtdp 7, 63, 27 +# CHECK-BE: xscmpnedp 7, 63, 27 # encoding: [0xf0,0xff,0xd8,0xdc] +# CHECK-LE: xscmpnedp 7, 63, 27 # encoding: [0xdc,0xd8,0xff,0xf0] + xscmpnedp 7, 63, 27 + +# Vector Compare Not Equal +# CHECK-BE: xvcmpnedp 7, 63, 27 # encoding: [0xf0,0xff,0xdb,0xdc] +# CHECK-LE: xvcmpnedp 7, 63, 27 # encoding: [0xdc,0xdb,0xff,0xf0] + xvcmpnedp 7, 63, 27 +# CHECK-BE: xvcmpnedp. 7, 63, 27 # encoding: [0xf0,0xff,0xdf,0xdc] +# CHECK-LE: xvcmpnedp. 7, 63, 27 # encoding: [0xdc,0xdf,0xff,0xf0] + xvcmpnedp. 7, 63, 27 +# CHECK-BE: xvcmpnesp 7, 63, 27 # encoding: [0xf0,0xff,0xda,0xdc] +# CHECK-LE: xvcmpnesp 7, 63, 27 # encoding: [0xdc,0xda,0xff,0xf0] + xvcmpnesp 7, 63, 27 +# CHECK-BE: xvcmpnesp. 7, 63, 27 # encoding: [0xf0,0xff,0xde,0xdc] +# CHECK-LE: xvcmpnesp. 7, 63, 27 # encoding: [0xdc,0xde,0xff,0xf0] + xvcmpnesp. 7, 63, 27 + +# Convert DP -> QP +# CHECK-BE: xscvdpqp 7, 27 # encoding: [0xfc,0xf6,0xde,0x88] +# CHECK-LE: xscvdpqp 7, 27 # encoding: [0x88,0xde,0xf6,0xfc] + xscvdpqp 7, 27 + +# Round & Convert QP -> DP +# CHECK-BE: xscvqpdp 7, 27 # encoding: [0xfc,0xf4,0xde,0x88] +# CHECK-LE: xscvqpdp 7, 27 # encoding: [0x88,0xde,0xf4,0xfc] + xscvqpdp 7, 27 +# CHECK-BE: xscvqpdpo 7, 27 # encoding: [0xfc,0xf4,0xde,0x89] +# CHECK-LE: xscvqpdpo 7, 27 # encoding: [0x89,0xde,0xf4,0xfc] + xscvqpdpo 7, 27 + +# Truncate & Convert QP -> (Un)Signed (D)Word +# CHECK-BE: xscvqpsdz 7, 27 # encoding: [0xfc,0xf9,0xde,0x88] +# CHECK-LE: xscvqpsdz 7, 27 # encoding: [0x88,0xde,0xf9,0xfc] + xscvqpsdz 7, 27 +# CHECK-BE: xscvqpswz 7, 27 # encoding: [0xfc,0xe9,0xde,0x88] +# CHECK-LE: xscvqpswz 7, 27 # encoding: [0x88,0xde,0xe9,0xfc] + xscvqpswz 7, 27 +# CHECK-BE: xscvqpudz 7, 27 # encoding: [0xfc,0xf1,0xde,0x88] +# CHECK-LE: xscvqpudz 7, 27 # encoding: [0x88,0xde,0xf1,0xfc] + xscvqpudz 7, 27 +# CHECK-BE: xscvqpuwz 7, 27 # encoding: [0xfc,0xe1,0xde,0x88] +# CHECK-LE: xscvqpuwz 7, 27 # encoding: [0x88,0xde,0xe1,0xfc] + xscvqpuwz 7, 27 + +# Convert (Un)Signed DWord -> QP +# CHECK-BE: xscvsdqp 7, 27 # encoding: [0xfc,0xea,0xde,0x88] +# CHECK-LE: xscvsdqp 7, 27 # encoding: [0x88,0xde,0xea,0xfc] + xscvsdqp 7, 27 +# CHECK-BE: xscvudqp 7, 27 # encoding: [0xfc,0xe2,0xde,0x88] +# CHECK-LE: xscvudqp 7, 27 # encoding: [0x88,0xde,0xe2,0xfc] + xscvudqp 7, 27 + +# (Round &) Convert DP <-> HP +# CHECK-BE: xscvdphp 7, 63 # encoding: [0xf0,0xf1,0xfd,0x6e] +# CHECK-LE: xscvdphp 7, 63 # encoding: [0x6e,0xfd,0xf1,0xf0] + xscvdphp 7, 63 +# CHECK-BE: xscvhpdp 7, 63 # encoding: [0xf0,0xf0,0xfd,0x6e] +# CHECK-LE: xscvhpdp 7, 63 # encoding: [0x6e,0xfd,0xf0,0xf0] + xscvhpdp 7, 63 + +# HP -> SP +# CHECK-BE: xvcvhpsp 7, 63 # encoding: [0xf0,0xf8,0xff,0x6e] +# CHECK-LE: xvcvhpsp 7, 63 # encoding: [0x6e,0xff,0xf8,0xf0] + xvcvhpsp 7, 63 +# CHECK-BE: xvcvsphp 7, 63 # encoding: [0xf0,0xf9,0xff,0x6e] +# CHECK-LE: xvcvsphp 7, 63 # encoding: [0x6e,0xff,0xf9,0xf0] + xvcvsphp 7, 63 + +# Round to Quad-Precision Integer [with Inexact] +# CHECK-BE: xsrqpi 1, 7, 27, 2 # encoding: [0xfc,0xe1,0xdc,0x0a] +# CHECK-LE: xsrqpi 1, 7, 27, 2 # encoding: [0x0a,0xdc,0xe1,0xfc] + xsrqpi 1, 7, 27, 2 +# CHECK-BE: xsrqpix 1, 7, 27, 2 # encoding: [0xfc,0xe1,0xdc,0x0b] +# CHECK-LE: xsrqpix 1, 7, 27, 2 # encoding: [0x0b,0xdc,0xe1,0xfc] + xsrqpix 1, 7, 27, 2 + +# Round Quad-Precision to Double-Extended Precision +# CHECK-BE: xsrqpxp 1, 7, 27, 2 # encoding: [0xfc,0xe1,0xdc,0x4a] +# CHECK-LE: xsrqpxp 1, 7, 27, 2 # encoding: [0x4a,0xdc,0xe1,0xfc] + xsrqpxp 1, 7, 27, 2 + +# Insert Exponent DP/QP +# CHECK-BE: xsiexpdp 63, 3, 4 # encoding: [0xf3,0xe3,0x27,0x2d] +# CHECK-LE: xsiexpdp 63, 3, 4 # encoding: [0x2d,0x27,0xe3,0xf3] + xsiexpdp 63, 3, 4 +# CHECK-BE: xsiexpqp 7, 31, 27 # encoding: [0xfc,0xff,0xde,0xc8] +# CHECK-LE: xsiexpqp 7, 31, 27 # encoding: [0xc8,0xde,0xff,0xfc] + xsiexpqp 7, 31, 27 + +# Vector Insert Exponent DP +# CHECK-BE: xviexpdp 7, 63, 27 # encoding: [0xf0,0xff,0xdf,0xc4] +# CHECK-LE: xviexpdp 7, 63, 27 # encoding: [0xc4,0xdf,0xff,0xf0] + xviexpdp 7, 63, 27 +# CHECK-BE: xviexpsp 7, 63, 27 # encoding: [0xf0,0xff,0xde,0xc4] +# CHECK-LE: xviexpsp 7, 63, 27 # encoding: [0xc4,0xde,0xff,0xf0] + xviexpsp 7, 63, 27 + +# Vector Extract Unsigned Word +# CHECK-BE: xxextractuw 7, 63, 15 # encoding: [0xf0,0xef,0xfa,0x96] +# CHECK-LE: xxextractuw 7, 63, 15 # encoding: [0x96,0xfa,0xef,0xf0] + xxextractuw 7, 63, 15 + +# Vector Insert Word +# CHECK-BE: xxinsertw 7, 63, 15 # encoding: [0xf0,0xef,0xfa,0xd6] +# CHECK-LE: xxinsertw 7, 63, 15 # encoding: [0xd6,0xfa,0xef,0xf0] + xxinsertw 7, 63, 15 + +# Extract Exponent/Significand DP/QP +# CHECK-BE: xsxexpdp 7, 63 # encoding: [0xf0,0xe0,0xfd,0x6e] +# CHECK-LE: xsxexpdp 7, 63 # encoding: [0x6e,0xfd,0xe0,0xf0] + xsxexpdp 7, 63 +# CHECK-BE: xsxsigdp 7, 63 # encoding: [0xf0,0xe1,0xfd,0x6e] +# CHECK-LE: xsxsigdp 7, 63 # encoding: [0x6e,0xfd,0xe1,0xf0] + xsxsigdp 7, 63 +# CHECK-BE: xsxexpqp 7, 31 # encoding: [0xfc,0xe2,0xfe,0x48] +# CHECK-LE: xsxexpqp 7, 31 # encoding: [0x48,0xfe,0xe2,0xfc] + xsxexpqp 7, 31 +# CHECK-BE: xsxsigqp 7, 31 # encoding: [0xfc,0xf2,0xfe,0x48] +# CHECK-LE: xsxsigqp 7, 31 # encoding: [0x48,0xfe,0xf2,0xfc] + xsxsigqp 7, 31 + +# Vector Extract Exponent/Significand DP +# CHECK-BE: xvxexpdp 7, 63 # encoding: [0xf0,0xe0,0xff,0x6e] +# CHECK-LE: xvxexpdp 7, 63 # encoding: [0x6e,0xff,0xe0,0xf0] + xvxexpdp 7, 63 +# CHECK-BE: xvxexpsp 7, 63 # encoding: [0xf0,0xe8,0xff,0x6e] +# CHECK-LE: xvxexpsp 7, 63 # encoding: [0x6e,0xff,0xe8,0xf0] + xvxexpsp 7, 63 +# CHECK-BE: xvxsigdp 7, 63 # encoding: [0xf0,0xe1,0xff,0x6e] +# CHECK-LE: xvxsigdp 7, 63 # encoding: [0x6e,0xff,0xe1,0xf0] + xvxsigdp 7, 63 +# CHECK-BE: xvxsigsp 7, 63 # encoding: [0xf0,0xe9,0xff,0x6e] +# CHECK-LE: xvxsigsp 7, 63 # encoding: [0x6e,0xff,0xe9,0xf0] + xvxsigsp 7, 63 + +# Test Data Class SP/DP/QP +# CHECK-BE: xststdcsp 7, 63, 127 # encoding: [0xf3,0xff,0xfc,0xaa] +# CHECK-LE: xststdcsp 7, 63, 127 # encoding: [0xaa,0xfc,0xff,0xf3] + xststdcsp 7, 63, 127 +# CHECK-BE: xststdcdp 7, 63, 127 # encoding: [0xf3,0xff,0xfd,0xaa] +# CHECK-LE: xststdcdp 7, 63, 127 # encoding: [0xaa,0xfd,0xff,0xf3] + xststdcdp 7, 63, 127 +# CHECK-BE: xststdcqp 7, 31, 127 # encoding: [0xff,0xff,0xfd,0x88] +# CHECK-LE: xststdcqp 7, 31, 127 # encoding: [0x88,0xfd,0xff,0xff] + xststdcqp 7, 31, 127 + +# Vector Test Data Class SP/DP +# CHECK-BE: xststdcsp 7, 63, 127 # encoding: [0xf3,0xff,0xfc,0xaa] +# CHECK-LE: xststdcsp 7, 63, 127 # encoding: [0xaa,0xfc,0xff,0xf3] + xststdcsp 7, 63, 127 +# CHECK-BE: xststdcdp 7, 63, 127 # encoding: [0xf3,0xff,0xfd,0xaa] +# CHECK-LE: xststdcdp 7, 63, 127 # encoding: [0xaa,0xfd,0xff,0xf3] + xststdcdp 7, 63, 127 +# CHECK-BE: xststdcqp 7, 31, 127 # encoding: [0xff,0xff,0xfd,0x88] +# CHECK-LE: xststdcqp 7, 31, 127 # encoding: [0x88,0xfd,0xff,0xff] + xststdcqp 7, 31, 127 + +# Maximum/Minimum Type-C/Type-J DP +# CHECK-BE: xsmaxcdp 7, 63, 27 # encoding: [0xf0,0xff,0xdc,0x04] +# CHECK-LE: xsmaxcdp 7, 63, 27 # encoding: [0x04,0xdc,0xff,0xf0] + xsmaxcdp 7, 63, 27 +# CHECK-BE: xsmaxjdp 7, 63, 27 # encoding: [0xf0,0xff,0xdc,0x84] +# CHECK-LE: xsmaxjdp 7, 63, 27 # encoding: [0x84,0xdc,0xff,0xf0] + xsmaxjdp 7, 63, 27 +# CHECK-BE: xsmincdp 7, 63, 27 # encoding: [0xf0,0xff,0xdc,0x44] +# CHECK-LE: xsmincdp 7, 63, 27 # encoding: [0x44,0xdc,0xff,0xf0] + xsmincdp 7, 63, 27 +# CHECK-BE: xsminjdp 7, 63, 27 # encoding: [0xf0,0xff,0xdc,0xc4] +# CHECK-LE: xsminjdp 7, 63, 27 # encoding: [0xc4,0xdc,0xff,0xf0] + xsminjdp 7, 63, 27 + +# Vector Byte-Reverse H/W/D/Q Word +# CHECK-BE: xxbrh 7, 63 # encoding: [0xf0,0xe7,0xff,0x6e] +# CHECK-LE: xxbrh 7, 63 # encoding: [0x6e,0xff,0xe7,0xf0] + xxbrh 7, 63 +# CHECK-BE: xxbrw 7, 63 # encoding: [0xf0,0xef,0xff,0x6e] +# CHECK-LE: xxbrw 7, 63 # encoding: [0x6e,0xff,0xef,0xf0] + xxbrw 7, 63 +# CHECK-BE: xxbrd 7, 63 # encoding: [0xf0,0xf7,0xff,0x6e] +# CHECK-LE: xxbrd 7, 63 # encoding: [0x6e,0xff,0xf7,0xf0] + xxbrd 7, 63 +# CHECK-BE: xxbrq 7, 63 # encoding: [0xf0,0xff,0xff,0x6e] +# CHECK-LE: xxbrq 7, 63 # encoding: [0x6e,0xff,0xff,0xf0] + xxbrq 7, 63 + +# Vector Permute +# CHECK-BE: xxperm 7, 63, 27 # encoding: [0xf0,0xff,0xd8,0xd4] +# CHECK-LE: xxperm 7, 63, 27 # encoding: [0xd4,0xd8,0xff,0xf0] + xxperm 7, 63, 27 +# CHECK-BE: xxpermr 7, 63, 27 # encoding: [0xf0,0xff,0xd9,0xd4] +# CHECK-LE: xxpermr 7, 63, 27 # encoding: [0xd4,0xd9,0xff,0xf0] + xxpermr 7, 63, 27 + +# Vector Splat Immediate Byte +# CHECK-BE: xxspltib 63, 255 # encoding: [0xf3,0xe7,0xfa,0xd1] +# CHECK-LE: xxspltib 63, 255 # encoding: [0xd1,0xfa,0xe7,0xf3] + xxspltib 63, 255 + +# Load/Store Vector, test maximum and minimum displacement value +# CHECK-BE: lxv 61, 32752(31) # encoding: [0xf7,0xbf,0x7f,0xf9] +# CHECK-LE: lxv 61, 32752(31) # encoding: [0xf9,0x7f,0xbf,0xf7] + lxv 61, 32752(31) +# CHECK-BE: lxv 61, -32768(0) # encoding: [0xf7,0xa0,0x80,0x09] +# CHECK-LE: lxv 61, -32768(0) # encoding: [0x09,0x80,0xa0,0xf7] + lxv 61, -32768(0) +# CHECK-BE: stxv 61, 32752(31) # encoding: [0xf7,0xbf,0x7f,0xfd] +# CHECK-LE: stxv 61, 32752(31) # encoding: [0xfd,0x7f,0xbf,0xf7] + stxv 61, 32752(31) +# CHECK-BE: stxv 61, -32768(0) # encoding: [0xf7,0xa0,0x80,0x0d] +# CHECK-LE: stxv 61, -32768(0) # encoding: [0x0d,0x80,0xa0,0xf7] + stxv 61, -32768(0) + +# Load/Store DWord +# CHECK-BE: lxsd 31, -32768(0) # encoding: [0xe7,0xe0,0x80,0x02] +# CHECK-LE: lxsd 31, -32768(0) # encoding: [0x02,0x80,0xe0,0xe7] + lxsd 31, -32768(0) +# CHECK-BE: lxsd 31, 32764(12) # encoding: [0xe7,0xec,0x7f,0xfe] +# CHECK-LE: lxsd 31, 32764(12) # encoding: [0xfe,0x7f,0xec,0xe7] + lxsd 31, 32764(12) +# CHECK-BE: stxsd 31, 32764(12) # encoding: [0xf7,0xec,0x7f,0xfe] +# CHECK-LE: stxsd 31, 32764(12) # encoding: [0xfe,0x7f,0xec,0xf7] + stxsd 31, 32764(12) + +# Load SP from src, convert it to DP, and place in dword[0] +# CHECK-BE: lxssp 31, -32768(0) # encoding: [0xe7,0xe0,0x80,0x03] +# CHECK-LE: lxssp 31, -32768(0) # encoding: [0x03,0x80,0xe0,0xe7] + lxssp 31, -32768(0) +# CHECK-BE: lxssp 31, 32764(12) # encoding: [0xe7,0xec,0x7f,0xff] +# CHECK-LE: lxssp 31, 32764(12) # encoding: [0xff,0x7f,0xec,0xe7] + lxssp 31, 32764(12) + +# Convert DP of dword[0] to SP, and Store to dst +# CHECK-BE: stxssp 31, -32768(0) # encoding: [0xf7,0xe0,0x80,0x03] +# CHECK-LE: stxssp 31, -32768(0) # encoding: [0x03,0x80,0xe0,0xf7] + stxssp 31, -32768(0) + +# Load as Integer Byte/Halfword & Zero Indexed +# CHECK-BE: lxsibzx 57, 12, 27 # encoding: [0x7f,0x2c,0xde,0x1b] +# CHECK-LE: lxsibzx 57, 12, 27 # encoding: [0x1b,0xde,0x2c,0x7f] + lxsibzx 57, 12, 27 +# CHECK-BE: lxsihzx 57, 12, 27 # encoding: [0x7f,0x2c,0xde,0x5b] +# CHECK-LE: lxsihzx 57, 12, 27 # encoding: [0x5b,0xde,0x2c,0x7f] + lxsihzx 57, 12, 27 + +# Load Vector Halfword*8/Byte*16 Indexed +# CHECK-BE: lxvh8x 57, 12, 27 # encoding: [0x7f,0x2c,0xde,0x59] +# CHECK-LE: lxvh8x 57, 12, 27 # encoding: [0x59,0xde,0x2c,0x7f] + lxvh8x 57, 12, 27 +# CHECK-BE: lxvb16x 57, 12, 27 # encoding: [0x7f,0x2c,0xde,0xd9] +# CHECK-LE: lxvb16x 57, 12, 27 # encoding: [0xd9,0xde,0x2c,0x7f] + lxvb16x 57, 12, 27 + +# Load Vector Indexed +# CHECK-BE: lxvx 57, 12, 27 # encoding: [0x7f,0x2c,0xda,0x19] +# CHECK-LE: lxvx 57, 12, 27 # encoding: [0x19,0xda,0x2c,0x7f] + lxvx 57, 12, 27 + +# Load Vector (Left-justified) with Length +# CHECK-BE: lxvl 57, 12, 27 # encoding: [0x7f,0x2c,0xda,0x1b] +# CHECK-LE: lxvl 57, 12, 27 # encoding: [0x1b,0xda,0x2c,0x7f] + lxvl 57, 12, 27 +# CHECK-BE: lxvll 57, 12, 27 # encoding: [0x7f,0x2c,0xda,0x5b] +# CHECK-LE: lxvll 57, 12, 27 # encoding: [0x5b,0xda,0x2c,0x7f] + lxvll 57, 12, 27 + +# Load Vector Word & Splat Indexed +# CHECK-BE: lxvwsx 57, 12, 27 # encoding: [0x7f,0x2c,0xda,0xd9] +# CHECK-LE: lxvwsx 57, 12, 27 # encoding: [0xd9,0xda,0x2c,0x7f] + lxvwsx 57, 12, 27 + +# Store as Integer Byte/Halfword Indexed +# CHECK-BE: stxsibx 57, 12, 27 # encoding: [0x7f,0x2c,0xdf,0x1b] +# CHECK-LE: stxsibx 57, 12, 27 # encoding: [0x1b,0xdf,0x2c,0x7f] + stxsibx 57, 12, 27 +# CHECK-BE: stxsihx 57, 12, 27 # encoding: [0x7f,0x2c,0xdf,0x5b] +# CHECK-LE: stxsihx 57, 12, 27 # encoding: [0x5b,0xdf,0x2c,0x7f] + stxsihx 57, 12, 27 + +# Store Vector Halfword*8/Byte*16 Indexed +# CHECK-BE: stxvh8x 57, 12, 27 # encoding: [0x7f,0x2c,0xdf,0x59] +# CHECK-LE: stxvh8x 57, 12, 27 # encoding: [0x59,0xdf,0x2c,0x7f] + stxvh8x 57, 12, 27 +# CHECK-BE: stxvb16x 57, 12, 27 # encoding: [0x7f,0x2c,0xdf,0xd9] +# CHECK-LE: stxvb16x 57, 12, 27 # encoding: [0xd9,0xdf,0x2c,0x7f] + stxvb16x 57, 12, 27 + +# Store Vector Indexed +# CHECK-BE: stxvx 57, 12, 27 # encoding: [0x7f,0x2c,0xdb,0x19] +# CHECK-LE: stxvx 57, 12, 27 # encoding: [0x19,0xdb,0x2c,0x7f] + stxvx 57, 12, 27 + +# Store Vector (Left-justified) with Length +# CHECK-BE: stxvl 57, 12, 27 # encoding: [0x7f,0x2c,0xdb,0x1b] +# CHECK-LE: stxvl 57, 12, 27 # encoding: [0x1b,0xdb,0x2c,0x7f] + stxvl 57, 12, 27 +# CHECK-BE: stxvll 57, 12, 27 # encoding: [0x7f,0x2c,0xdb,0x5b] +# CHECK-LE: stxvll 57, 12, 27 # encoding: [0x5b,0xdb,0x2c,0x7f] + stxvll 57, 12, 27 + +# P9 Direct Move Instructions +# CHECK-BE: mtvsrws 34, 3 # encoding: [0x7c,0x43,0x03,0x27] +# CHECK-LE: mtvsrws 34, 3 # encoding: [0x27,0x03,0x43,0x7c] + mtvsrws 34, 3 + +# CHECK-BE: mtvsrdd 34, 3, 12 # encoding: [0x7c,0x43,0x63,0x67] +# CHECK-LE: mtvsrdd 34, 3, 12 # encoding: [0x67,0x63,0x43,0x7c] + mtvsrdd 34, 3, 12 + +# CHECK-BE: mfvsrld 3, 34 # encoding: [0x7c,0x43,0x02,0x67] +# CHECK-LE: mfvsrld 3, 34 # encoding: [0x67,0x02,0x43,0x7c] + mfvsrld 3, 34 diff --git a/test/MC/Sparc/leon-instructions.s b/test/MC/Sparc/leon-instructions.s new file mode 100755 index 000000000000..78a6d750a87d --- /dev/null +++ b/test/MC/Sparc/leon-instructions.s @@ -0,0 +1,20 @@ +! RUN: llvm-mc %s -arch=sparc -mcpu=leon3 -show-encoding | FileCheck %s -check-prefix=CHECK_NO_CASA +! RUN: llvm-mc %s -arch=sparc -mcpu=ut699 -show-encoding | FileCheck %s -check-prefix=CHECK_NO_CASA +! RUN: llvm-mc %s -arch=sparc -mcpu=gr712rc -show-encoding | FileCheck %s +! RUN: llvm-mc %s -arch=sparc -mcpu=leon4 -show-encoding | FileCheck %s +! RUN: llvm-mc %s -arch=sparc -mcpu=gr740 -show-encoding | FileCheck %s + + + ! CHECK: casa [%i0] 10, %l6, %o2 ! encoding: [0xd5,0xe6,0x01,0x56] + casa [%i0] 10, %l6, %o2 + + ! CHECK: casa [%i0] 5, %l6, %o2 ! encoding: [0xd5,0xe6,0x00,0xb6] + casa [%i0] 5, %l6, %o2 + + ! CHECK: umac %i0, %l6, %o2 ! encoding: [0x95,0xf6,0x00,0x16] + ! CHECK_NO_CASA: umac %i0, %l6, %o2 ! encoding: [0x95,0xf6,0x00,0x16] + umac %i0, %l6, %o2 + + ! CHECK: smac %i0, %l6, %o2 ! encoding: [0x95,0xfe,0x00,0x16] + ! CHECK_NO_CASA: smac %i0, %l6, %o2 ! encoding: [0x95,0xfe,0x00,0x16] + smac %i0, %l6, %o2 diff --git a/test/MC/Sparc/sparc-coproc.s b/test/MC/Sparc/sparc-coproc.s new file mode 100644 index 000000000000..f83e415cf31e --- /dev/null +++ b/test/MC/Sparc/sparc-coproc.s @@ -0,0 +1,72 @@ +! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s + + ! CHECK: ld [%i1], %c4 ! encoding: [0xc9,0x86,0x40,0x00] + ! CHECK: ld [%i1+-15], %c4 ! encoding: [0xc9,0x86,0x7f,0xf1] + ! CHECK: ld [%i1+%o3], %c4 ! encoding: [0xc9,0x86,0x40,0x0b] + ! CHECK: ld [%i7], %c4 ! encoding: [0xc9,0x87,0xc0,0x00] + ! CHECK: ld [%i1], %c19 ! encoding: [0xe7,0x86,0x40,0x00] + ld [%i1], %c4 + ld [%i1 - 15], %c4 + ld [%i1 +%o3], %c4 + ld [%i7], %c4 + ld [%i1], %c19 + + + ! CHECK: ldd [%i1], %c4 ! encoding: [0xc9,0x9e,0x40,0x00] + ! CHECK: ldd [%i7], %c4 ! encoding: [0xc9,0x9f,0xc0,0x00] + ! CHECK: ldd [%i7+200], %c4 ! encoding: [0xc9,0x9f,0xe0,0xc8] + ! CHECK: ldd [%i7+%o3], %c4 ! encoding: [0xc9,0x9f,0xc0,0x0b] + ! CHECK: ldd [%i1], %c30 ! encoding: [0xfd,0x9e,0x40,0x00] + ldd [%i1], %c4 + ldd [%i7], %c4 + ldd [%i7 + 200], %c4 + ldd [%i7+%o3], %c4 + ldd [%i1], %c30 + + + ! CHECK: st %c4, [%i1] ! encoding: [0xc9,0xa6,0x40,0x00] + ! CHECK: st %c4, [%i7] ! encoding: [0xc9,0xa7,0xc0,0x00] + ! CHECK: st %c4, [%i7+48] ! encoding: [0xc9,0xa7,0xe0,0x30] + ! CHECK: st %c4, [%i4+%o2] ! encoding: [0xc9,0xa7,0x00,0x0a] + ! CHECK: st %c19, [%i1] ! encoding: [0xe7,0xa6,0x40,0x00] + st %c4, [%i1] + st %c4, [%i7] + st %c4, [%i7+48] + st %c4, [%i4+%o2] + st %c19, [%i1] + + + ! CHECK: std %c4, [%i1] ! encoding: [0xc9,0xbe,0x40,0x00] + ! CHECK: std %c4, [%i7] ! encoding: [0xc9,0xbf,0xc0,0x00] + ! CHECK: std %c4, [%i2+-240] ! encoding: [0xc9,0xbe,0xbf,0x10] + ! CHECK: std %c4, [%i1+%o5] ! encoding: [0xc9,0xbe,0x40,0x0d] + ! CHECK: std %c30, [%i1] ! encoding: [0xfd,0xbe,0x40,0x00] + std %c4, [%i1] + std %c4, [%i7] + std %c4, [%i2-240] + std %c4, [%i1+%o5] + std %c30, [%i1] + + + ! CHECK: ld [%i5], %csr ! encoding: [0xc1,0x8f,0x40,0x00] + ! CHECK: ld [%l2+3], %csr ! encoding: [0xc1,0x8c,0xa0,0x03] + ! CHECK: ld [%l4+%l5], %csr ! encoding: [0xc1,0x8d,0x00,0x15] + ld [%i5], %csr + ld [%l2+3], %csr + ld [%l4+%l5], %csr + + + ! CHECK: st %csr, [%i2] ! encoding: [0xc1,0xae,0x80,0x00] + ! CHECK: st %csr, [%i2+31] ! encoding: [0xc1,0xae,0xa0,0x1f] + ! CHECK: st %csr, [%i2+%o2] ! encoding: [0xc1,0xae,0x80,0x0a] + st %csr, [%i2] + st %csr, [%i2+31] + st %csr, [%i2+%o2] + + ! CHECK: std %cq, [%o3] ! encoding: [0xc1,0xb2,0xc0,0x00] + ! CHECK: std %cq, [%o3+-93] ! encoding: [0xc1,0xb2,0xff,0xa3] + ! CHECK: std %cq, [%o3+%l5] ! encoding: [0xc1,0xb2,0xc0,0x15] + std %cq, [%o3] + std %cq, [%o3-93] + std %cq, [%o3+%l5] +
\ No newline at end of file diff --git a/test/MC/Sparc/sparc-ctrl-instructions.s b/test/MC/Sparc/sparc-ctrl-instructions.s index ccfa36a0b143..8f3ad55cd3f8 100644 --- a/test/MC/Sparc/sparc-ctrl-instructions.s +++ b/test/MC/Sparc/sparc-ctrl-instructions.s @@ -199,6 +199,74 @@ ! CHECK: fbo .BB0 ! encoding: [0x1f,0b10AAAAAA,A,A] ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 fbo .BB0 + + ! CHECK: cba .BB0 ! encoding: [0x11,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb .BB0 + + ! CHECK: cba .BB0 ! encoding: [0x11,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cba .BB0 + + ! CHECK: cbn .BB0 ! encoding: [0x01,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cbn .BB0 + + ! CHECK: cb3 .BB0 ! encoding: [0x0f,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb3 .BB0 + + ! CHECK: cb2 .BB0 ! encoding: [0x0d,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb2 .BB0 + + ! CHECK: cb23 .BB0 ! encoding: [0x0b,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb23 .BB0 + + ! CHECK: cb1 .BB0 ! encoding: [0x09,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb1 .BB0 + + ! CHECK: cb13 .BB0 ! encoding: [0x07,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb13 .BB0 + + ! CHECK: cb12 .BB0 ! encoding: [0x05,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb12 .BB0 + + ! CHECK: cb123 .BB0 ! encoding: [0x03,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb123 .BB0 + + ! CHECK: cb0 .BB0 ! encoding: [0x13,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb0 .BB0 + + ! CHECK: cb03 .BB0 ! encoding: [0x15,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb03 .BB0 + + ! CHECK: cb02 .BB0 ! encoding: [0x17,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb02 .BB0 + + ! CHECK: cb023 .BB0 ! encoding: [0x19,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb023 .BB0 + + ! CHECK: cb01 .BB0 ! encoding: [0x1b,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb01 .BB0 + + ! CHECK: cb013 .BB0 ! encoding: [0x1d,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb013 .BB0 + + ! CHECK: cb012 .BB0 ! encoding: [0x1f,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb012 .BB0 ! CHECK: ba,a .BB0 ! encoding: [0x30,0b10AAAAAA,A,A] ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 @@ -317,3 +385,119 @@ ! CHECK: rett %i7+8 ! encoding: [0x81,0xcf,0xe0,0x08] rett %i7 + 8 + + ! CHECK: cb3,a .BB0 ! encoding: [0x2f,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb3,a .BB0 + + ! CHECK: cb2,a .BB0 ! encoding: [0x2d,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb2,a .BB0 + + ! CHECK: cb23,a .BB0 ! encoding: [0x2b,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb23,a .BB0 + + ! CHECK: cb1,a .BB0 ! encoding: [0x29,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb1,a .BB0 + + ! CHECK: cb13,a .BB0 ! encoding: [0x27,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb13,a .BB0 + + ! CHECK: cb12,a .BB0 ! encoding: [0x25,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb12,a .BB0 + + ! CHECK: cb123,a .BB0 ! encoding: [0x23,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb123,a .BB0 + + ! CHECK: cb0,a .BB0 ! encoding: [0x33,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb0,a .BB0 + + ! CHECK: cb03,a .BB0 ! encoding: [0x35,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb03,a .BB0 + + ! CHECK: cb02,a .BB0 ! encoding: [0x37,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb02,a .BB0 + + ! CHECK: cb023,a .BB0 ! encoding: [0x39,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb023,a .BB0 + + ! CHECK: cb01,a .BB0 ! encoding: [0x3b,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb01,a .BB0 + + ! CHECK: cb013,a .BB0 ! encoding: [0x3d,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb013,a .BB0 + + ! CHECK: cb012,a .BB0 ! encoding: [0x3f,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb012,a .BB0 + + ! CHECK: cb3,a .BB0 ! encoding: [0x2f,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb3,a .BB0 + + ! CHECK: cb2,a .BB0 ! encoding: [0x2d,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb2,a .BB0 + + ! CHECK: cb23,a .BB0 ! encoding: [0x2b,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb23,a .BB0 + + ! CHECK: cb1,a .BB0 ! encoding: [0x29,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb1,a .BB0 + + ! CHECK: cb13,a .BB0 ! encoding: [0x27,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb13,a .BB0 + + ! CHECK: cb12,a .BB0 ! encoding: [0x25,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb12,a .BB0 + + ! CHECK: cb123,a .BB0 ! encoding: [0x23,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb123,a .BB0 + + ! CHECK: cb0,a .BB0 ! encoding: [0x33,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb0,a .BB0 + + ! CHECK: cb03,a .BB0 ! encoding: [0x35,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb03,a .BB0 + + ! CHECK: cb02,a .BB0 ! encoding: [0x37,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb02,a .BB0 + + ! CHECK: cb023,a .BB0 ! encoding: [0x39,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb023,a .BB0 + + ! CHECK: cb01,a .BB0 ! encoding: [0x3b,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb01,a .BB0 + + ! CHECK: cb013,a .BB0 ! encoding: [0x3d,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb013,a .BB0 + + ! CHECK: cb012,a .BB0 ! encoding: [0x3f,0b11AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + cb012,a .BB0 + + ! CHECK: rett %i7+8 ! encoding: [0x81,0xcf,0xe0,0x08] + rett %i7 + 8 + diff --git a/test/MC/Sparc/sparc-directives.s b/test/MC/Sparc/sparc-directives.s index 9185e4bc9b2b..d804c1afe9b8 100644 --- a/test/MC/Sparc/sparc-directives.s +++ b/test/MC/Sparc/sparc-directives.s @@ -1,6 +1,10 @@ ! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s --check-prefix=SPARC32 ! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s --check-prefix=SPARC64 + ! '.proc' is documented to do nothing in the binutils assembler. + ! so it should do nothing for clang either, i.e. not be an error. + .proc 1 + ! SPARC32: .byte 24 ! SPARC64: .byte 24 .byte 24 diff --git a/test/MC/Sparc/sparc-fp-instructions.s b/test/MC/Sparc/sparc-fp-instructions.s index 64f1538cb910..ae5ef37bf22d 100644 --- a/test/MC/Sparc/sparc-fp-instructions.s +++ b/test/MC/Sparc/sparc-fp-instructions.s @@ -65,8 +65,8 @@ faddq %f0, %f4, %f8 ! make sure we can handle V9 double registers and their aliased quad registers. - ! CHECK: faddd %f32, %f34, %f62 ! encoding: [0xbf,0xa0,0x48,0x43] - ! CHECK: faddq %f32, %f36, %f60 ! encoding: [0xbb,0xa0,0x48,0x65] + ! CHECK: faddd %f32, %f34, %f62 ! encoding: [0xbf,0xa0,0x48,0x43] + ! CHECK: faddq %f32, %f36, %f60 ! encoding: [0xbb,0xa0,0x48,0x65] faddd %f32, %f34, %f62 faddq %f32, %f36, %f60 @@ -103,23 +103,23 @@ fcmpd %f0, %f4 fcmpq %f0, %f4 - ! CHECK: fcmpes %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xa4] - ! CHECK: fcmped %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xc4] - ! CHECK: fcmpeq %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xe4] + ! CHECK: fcmpes %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xa4] + ! CHECK: fcmped %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xc4] + ! CHECK: fcmpeq %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xe4] fcmpes %f0, %f4 fcmped %f0, %f4 fcmpeq %f0, %f4 - ! CHECK: fcmps %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x24] - ! CHECK: fcmpd %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x44] - ! CHECK: fcmpq %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x64] + ! CHECK: fcmps %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x24] + ! CHECK: fcmpd %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x44] + ! CHECK: fcmpq %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x64] fcmps %fcc2, %f0, %f4 fcmpd %fcc2, %f0, %f4 fcmpq %fcc2, %f0, %f4 - ! CHECK: fcmpes %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xa4] - ! CHECK: fcmped %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xc4] - ! CHECK: fcmpeq %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xe4] + ! CHECK: fcmpes %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xa4] + ! CHECK: fcmped %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xc4] + ! CHECK: fcmpeq %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xe4] fcmpes %fcc2, %f0, %f4 fcmped %fcc2, %f0, %f4 fcmpeq %fcc2, %f0, %f4 @@ -147,3 +147,11 @@ ! CHECK: std %f48, [%l0] ! encoding: [0xe3,0x3c,0x00,0x00] st %f29, [%l0] std %f48, [%l0] + + ! CHECK: std %fq, [%o4] ! encoding: [0xc1,0x33,0x00,0x00] + ! CHECK: std %fq, [%l1+62] ! encoding: [0xc1,0x34,0x60,0x3e] + ! CHECK: std %fq, [%i3+%l7] ! encoding: [0xc1,0x36,0xc0,0x17] + std %fq, [%o4] + std %fq, [%l1+62] + std %fq, [%i3+%l7] +
\ No newline at end of file diff --git a/test/MC/Sparc/sparc-pic.s b/test/MC/Sparc/sparc-pic.s index 1c935e0842ce..f51e1e93b509 100644 --- a/test/MC/Sparc/sparc-pic.s +++ b/test/MC/Sparc/sparc-pic.s @@ -1,5 +1,5 @@ -! RUN: llvm-mc %s -arch=sparcv9 --relocation-model=pic -filetype=obj | llvm-readobj -r | FileCheck --check-prefix=PIC %s -! RUN: llvm-mc %s -arch=sparcv9 --relocation-model=static -filetype=obj | llvm-readobj -r | FileCheck --check-prefix=NOPIC %s +! RUN: llvm-mc %s -arch=sparcv9 --position-independent -filetype=obj | llvm-readobj -r | FileCheck --check-prefix=PIC %s +! RUN: llvm-mc %s -arch=sparcv9 -filetype=obj | llvm-readobj -r | FileCheck --check-prefix=NOPIC %s ! PIC: Relocations [ diff --git a/test/MC/Sparc/sparc-special-registers.s b/test/MC/Sparc/sparc-special-registers.s index 235c4cfedcf8..7667abea0144 100644 --- a/test/MC/Sparc/sparc-special-registers.s +++ b/test/MC/Sparc/sparc-special-registers.s @@ -51,3 +51,6 @@ ! CHECK: st %fsr, [%g2+%i5] ! encoding: [0xc1,0x28,0x80,0x1d] st %fsr,[%g2 + %i5] + + ! CHECK: std %fq, [%g6+%i2] ! encoding: [0xc1,0x31,0x80,0x1a] + std %fq, [%g6 + %i2] diff --git a/test/MC/Sparc/sparc-traps.s b/test/MC/Sparc/sparc-traps.s new file mode 100644 index 000000000000..650477496f91 --- /dev/null +++ b/test/MC/Sparc/sparc-traps.s @@ -0,0 +1,151 @@ +! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s + + ! CHECK: ta %i5 ! encoding: [0x91,0xd0,0x00,0x1d] + ! CHECK: ta 82 ! encoding: [0x91,0xd0,0x20,0x52] + ! CHECK: ta %g1 + %i2 ! encoding: [0x91,0xd0,0x40,0x1a] + ! CHECK: ta %i5 + 41 ! encoding: [0x91,0xd7,0x60,0x29] + ta %i5 + ta 82 + ta %g1 + %i2 + ta %i5 + 41 + + ! CHECK: tn %i5 ! encoding: [0x81,0xd0,0x00,0x1d] + ! CHECK: tn 82 ! encoding: [0x81,0xd0,0x20,0x52] + ! CHECK: tn %g1 + %i2 ! encoding: [0x81,0xd0,0x40,0x1a] + ! CHECK: tn %i5 + 41 ! encoding: [0x81,0xd7,0x60,0x29] + tn %i5 + tn 82 + tn %g1 + %i2 + tn %i5 + 41 + + ! CHECK: tne %i5 ! encoding: [0x93,0xd0,0x00,0x1d] + !! tnz should be a synonym for tne + ! CHECK: tne %i5 ! encoding: [0x93,0xd0,0x00,0x1d] + ! CHECK: tne 82 ! encoding: [0x93,0xd0,0x20,0x52] + ! CHECK: tne %g1 + %i2 ! encoding: [0x93,0xd0,0x40,0x1a] + ! CHECK: tne %i5 + 41 ! encoding: [0x93,0xd7,0x60,0x29] + tne %i5 + tnz %i5 + tne 82 + tne %g1 + %i2 + tne %i5 + 41 + + ! CHECK: te %i5 ! encoding: [0x83,0xd0,0x00,0x1d] + !! tz should be a synonym for te + ! CHECK: te %i5 ! encoding: [0x83,0xd0,0x00,0x1d] + ! CHECK: te 82 ! encoding: [0x83,0xd0,0x20,0x52] + ! CHECK: te %g1 + %i2 ! encoding: [0x83,0xd0,0x40,0x1a] + ! CHECK: te %i5 + 41 ! encoding: [0x83,0xd7,0x60,0x29] + te %i5 + tz %i5 + te 82 + te %g1 + %i2 + te %i5 + 41 + + ! CHECK: tg %i5 ! encoding: [0x95,0xd0,0x00,0x1d] + ! CHECK: tg 82 ! encoding: [0x95,0xd0,0x20,0x52] + ! CHECK: tg %g1 + %i2 ! encoding: [0x95,0xd0,0x40,0x1a] + ! CHECK: tg %i5 + 41 ! encoding: [0x95,0xd7,0x60,0x29] + tg %i5 + tg 82 + tg %g1 + %i2 + tg %i5 + 41 + + ! CHECK: tle %i5 ! encoding: [0x85,0xd0,0x00,0x1d] + ! CHECK: tle 82 ! encoding: [0x85,0xd0,0x20,0x52] + ! CHECK: tle %g1 + %i2 ! encoding: [0x85,0xd0,0x40,0x1a] + ! CHECK: tle %i5 + 41 ! encoding: [0x85,0xd7,0x60,0x29] + tle %i5 + tle 82 + tle %g1 + %i2 + tle %i5 + 41 + + ! CHECK: tge %i5 ! encoding: [0x97,0xd0,0x00,0x1d] + ! CHECK: tge 82 ! encoding: [0x97,0xd0,0x20,0x52] + ! CHECK: tge %g1 + %i2 ! encoding: [0x97,0xd0,0x40,0x1a] + ! CHECK: tge %i5 + 41 ! encoding: [0x97,0xd7,0x60,0x29] + tge %i5 + tge 82 + tge %g1 + %i2 + tge %i5 + 41 + + ! CHECK: tl %i5 ! encoding: [0x87,0xd0,0x00,0x1d] + ! CHECK: tl 82 ! encoding: [0x87,0xd0,0x20,0x52] + ! CHECK: tl %g1 + %i2 ! encoding: [0x87,0xd0,0x40,0x1a] + ! CHECK: tl %i5 + 41 ! encoding: [0x87,0xd7,0x60,0x29] + tl %i5 + tl 82 + tl %g1 + %i2 + tl %i5 + 41 + + ! CHECK: tgu %i5 ! encoding: [0x99,0xd0,0x00,0x1d] + ! CHECK: tgu 82 ! encoding: [0x99,0xd0,0x20,0x52] + ! CHECK: tgu %g1 + %i2 ! encoding: [0x99,0xd0,0x40,0x1a] + ! CHECK: tgu %i5 + 41 ! encoding: [0x99,0xd7,0x60,0x29] + tgu %i5 + tgu 82 + tgu %g1 + %i2 + tgu %i5 + 41 + + ! CHECK: tleu %i5 ! encoding: [0x89,0xd0,0x00,0x1d] + ! CHECK: tleu 82 ! encoding: [0x89,0xd0,0x20,0x52] + ! CHECK: tleu %g1 + %i2 ! encoding: [0x89,0xd0,0x40,0x1a] + ! CHECK: tleu %i5 + 41 ! encoding: [0x89,0xd7,0x60,0x29] + tleu %i5 + tleu 82 + tleu %g1 + %i2 + tleu %i5 + 41 + + ! CHECK: tcc %i5 ! encoding: [0x9b,0xd0,0x00,0x1d] + ! CHECK: tcc 82 ! encoding: [0x9b,0xd0,0x20,0x52] + ! CHECK: tcc %g1 + %i2 ! encoding: [0x9b,0xd0,0x40,0x1a] + ! CHECK: tcc %i5 + 41 ! encoding: [0x9b,0xd7,0x60,0x29] + tcc %i5 + tcc 82 + tcc %g1 + %i2 + tcc %i5 + 41 + + ! CHECK: tcs %i5 ! encoding: [0x8b,0xd0,0x00,0x1d] + ! CHECK: tcs 82 ! encoding: [0x8b,0xd0,0x20,0x52] + ! CHECK: tcs %g1 + %i2 ! encoding: [0x8b,0xd0,0x40,0x1a] + ! CHECK: tcs %i5 + 41 ! encoding: [0x8b,0xd7,0x60,0x29] + tcs %i5 + tcs 82 + tcs %g1 + %i2 + tcs %i5 + 41 + + ! CHECK: tpos %i5 ! encoding: [0x9d,0xd0,0x00,0x1d] + ! CHECK: tpos 82 ! encoding: [0x9d,0xd0,0x20,0x52] + ! CHECK: tpos %g1 + %i2 ! encoding: [0x9d,0xd0,0x40,0x1a] + ! CHECK: tpos %i5 + 41 ! encoding: [0x9d,0xd7,0x60,0x29] + tpos %i5 + tpos 82 + tpos %g1 + %i2 + tpos %i5 + 41 + + ! CHECK: tneg %i5 ! encoding: [0x8d,0xd0,0x00,0x1d] + ! CHECK: tneg 82 ! encoding: [0x8d,0xd0,0x20,0x52] + ! CHECK: tneg %g1 + %i2 ! encoding: [0x8d,0xd0,0x40,0x1a] + ! CHECK: tneg %i5 + 41 ! encoding: [0x8d,0xd7,0x60,0x29] + tneg %i5 + tneg 82 + tneg %g1 + %i2 + tneg %i5 + 41 + + ! CHECK: tvc %i5 ! encoding: [0x9f,0xd0,0x00,0x1d] + ! CHECK: tvc 82 ! encoding: [0x9f,0xd0,0x20,0x52] + ! CHECK: tvc %g1 + %i2 ! encoding: [0x9f,0xd0,0x40,0x1a] + ! CHECK: tvc %i5 + 41 ! encoding: [0x9f,0xd7,0x60,0x29] + tvc %i5 + tvc 82 + tvc %g1 + %i2 + tvc %i5 + 41 + + ! CHECK: tvs %i5 ! encoding: [0x8f,0xd0,0x00,0x1d] + ! CHECK: tvs 82 ! encoding: [0x8f,0xd0,0x20,0x52] + ! CHECK: tvs %g1 + %i2 ! encoding: [0x8f,0xd0,0x40,0x1a] + ! CHECK: tvs %i5 + 41 ! encoding: [0x8f,0xd7,0x60,0x29] + tvs %i5 + tvs 82 + tvs %g1 + %i2 + tvs %i5 + 41 diff --git a/test/MC/Sparc/sparc-v9-traps.s b/test/MC/Sparc/sparc-v9-traps.s new file mode 100644 index 000000000000..da11b36003bd --- /dev/null +++ b/test/MC/Sparc/sparc-v9-traps.s @@ -0,0 +1,303 @@ +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s + + ! CHECK: ta %icc, %i5 ! encoding: [0x91,0xd0,0x00,0x1d] + ! CHECK: ta %icc, 82 ! encoding: [0x91,0xd0,0x20,0x52] + ! CHECK: ta %icc, %g1 + %i2 ! encoding: [0x91,0xd0,0x40,0x1a] + ! CHECK: ta %icc, %i5 + 41 ! encoding: [0x91,0xd7,0x60,0x29] + ta %icc, %i5 + ta %icc, 82 + ta %icc, %g1 + %i2 + ta %icc, %i5 + 41 + + ! CHECK: tn %icc, %i5 ! encoding: [0x81,0xd0,0x00,0x1d] + ! CHECK: tn %icc, 82 ! encoding: [0x81,0xd0,0x20,0x52] + ! CHECK: tn %icc, %g1 + %i2 ! encoding: [0x81,0xd0,0x40,0x1a] + ! CHECK: tn %icc, %i5 + 41 ! encoding: [0x81,0xd7,0x60,0x29] + tn %icc, %i5 + tn %icc, 82 + tn %icc, %g1 + %i2 + tn %icc, %i5 + 41 + + ! CHECK: tne %icc, %i5 ! encoding: [0x93,0xd0,0x00,0x1d] + !! tnz should be a synonym for tne + ! CHECK: tne %icc, %i5 ! encoding: [0x93,0xd0,0x00,0x1d] + ! CHECK: tne %icc, 82 ! encoding: [0x93,0xd0,0x20,0x52] + ! CHECK: tne %icc, %g1 + %i2 ! encoding: [0x93,0xd0,0x40,0x1a] + ! CHECK: tne %icc, %i5 + 41 ! encoding: [0x93,0xd7,0x60,0x29] + tne %icc, %i5 + tnz %icc, %i5 + tne %icc, 82 + tne %icc, %g1 + %i2 + tne %icc, %i5 + 41 + + ! CHECK: te %icc, %i5 ! encoding: [0x83,0xd0,0x00,0x1d] + !! tz should be a synonym for te + ! CHECK: te %icc, %i5 ! encoding: [0x83,0xd0,0x00,0x1d] + ! CHECK: te %icc, 82 ! encoding: [0x83,0xd0,0x20,0x52] + ! CHECK: te %icc, %g1 + %i2 ! encoding: [0x83,0xd0,0x40,0x1a] + ! CHECK: te %icc, %i5 + 41 ! encoding: [0x83,0xd7,0x60,0x29] + te %icc, %i5 + tz %icc, %i5 + te %icc, 82 + te %icc, %g1 + %i2 + te %icc, %i5 + 41 + + ! CHECK: tg %icc, %i5 ! encoding: [0x95,0xd0,0x00,0x1d] + ! CHECK: tg %icc, 82 ! encoding: [0x95,0xd0,0x20,0x52] + ! CHECK: tg %icc, %g1 + %i2 ! encoding: [0x95,0xd0,0x40,0x1a] + ! CHECK: tg %icc, %i5 + 41 ! encoding: [0x95,0xd7,0x60,0x29] + tg %icc, %i5 + tg %icc, 82 + tg %icc, %g1 + %i2 + tg %icc, %i5 + 41 + + ! CHECK: tle %icc, %i5 ! encoding: [0x85,0xd0,0x00,0x1d] + ! CHECK: tle %icc, 82 ! encoding: [0x85,0xd0,0x20,0x52] + ! CHECK: tle %icc, %g1 + %i2 ! encoding: [0x85,0xd0,0x40,0x1a] + ! CHECK: tle %icc, %i5 + 41 ! encoding: [0x85,0xd7,0x60,0x29] + tle %icc, %i5 + tle %icc, 82 + tle %icc, %g1 + %i2 + tle %icc, %i5 + 41 + + ! CHECK: tge %icc, %i5 ! encoding: [0x97,0xd0,0x00,0x1d] + ! CHECK: tge %icc, 82 ! encoding: [0x97,0xd0,0x20,0x52] + ! CHECK: tge %icc, %g1 + %i2 ! encoding: [0x97,0xd0,0x40,0x1a] + ! CHECK: tge %icc, %i5 + 41 ! encoding: [0x97,0xd7,0x60,0x29] + tge %icc, %i5 + tge %icc, 82 + tge %icc, %g1 + %i2 + tge %icc, %i5 + 41 + + ! CHECK: tl %icc, %i5 ! encoding: [0x87,0xd0,0x00,0x1d] + ! CHECK: tl %icc, 82 ! encoding: [0x87,0xd0,0x20,0x52] + ! CHECK: tl %icc, %g1 + %i2 ! encoding: [0x87,0xd0,0x40,0x1a] + ! CHECK: tl %icc, %i5 + 41 ! encoding: [0x87,0xd7,0x60,0x29] + tl %icc, %i5 + tl %icc, 82 + tl %icc, %g1 + %i2 + tl %icc, %i5 + 41 + + ! CHECK: tgu %icc, %i5 ! encoding: [0x99,0xd0,0x00,0x1d] + ! CHECK: tgu %icc, 82 ! encoding: [0x99,0xd0,0x20,0x52] + ! CHECK: tgu %icc, %g1 + %i2 ! encoding: [0x99,0xd0,0x40,0x1a] + ! CHECK: tgu %icc, %i5 + 41 ! encoding: [0x99,0xd7,0x60,0x29] + tgu %icc, %i5 + tgu %icc, 82 + tgu %icc, %g1 + %i2 + tgu %icc, %i5 + 41 + + ! CHECK: tleu %icc, %i5 ! encoding: [0x89,0xd0,0x00,0x1d] + ! CHECK: tleu %icc, 82 ! encoding: [0x89,0xd0,0x20,0x52] + ! CHECK: tleu %icc, %g1 + %i2 ! encoding: [0x89,0xd0,0x40,0x1a] + ! CHECK: tleu %icc, %i5 + 41 ! encoding: [0x89,0xd7,0x60,0x29] + tleu %icc, %i5 + tleu %icc, 82 + tleu %icc, %g1 + %i2 + tleu %icc, %i5 + 41 + + ! CHECK: tcc %icc, %i5 ! encoding: [0x9b,0xd0,0x00,0x1d] + ! CHECK: tcc %icc, 82 ! encoding: [0x9b,0xd0,0x20,0x52] + ! CHECK: tcc %icc, %g1 + %i2 ! encoding: [0x9b,0xd0,0x40,0x1a] + ! CHECK: tcc %icc, %i5 + 41 ! encoding: [0x9b,0xd7,0x60,0x29] + tcc %icc, %i5 + tcc %icc, 82 + tcc %icc, %g1 + %i2 + tcc %icc, %i5 + 41 + + ! CHECK: tcs %icc, %i5 ! encoding: [0x8b,0xd0,0x00,0x1d] + ! CHECK: tcs %icc, 82 ! encoding: [0x8b,0xd0,0x20,0x52] + ! CHECK: tcs %icc, %g1 + %i2 ! encoding: [0x8b,0xd0,0x40,0x1a] + ! CHECK: tcs %icc, %i5 + 41 ! encoding: [0x8b,0xd7,0x60,0x29] + tcs %icc, %i5 + tcs %icc, 82 + tcs %icc, %g1 + %i2 + tcs %icc, %i5 + 41 + + ! CHECK: tpos %icc, %i5 ! encoding: [0x9d,0xd0,0x00,0x1d] + ! CHECK: tpos %icc, 82 ! encoding: [0x9d,0xd0,0x20,0x52] + ! CHECK: tpos %icc, %g1 + %i2 ! encoding: [0x9d,0xd0,0x40,0x1a] + ! CHECK: tpos %icc, %i5 + 41 ! encoding: [0x9d,0xd7,0x60,0x29] + tpos %icc, %i5 + tpos %icc, 82 + tpos %icc, %g1 + %i2 + tpos %icc, %i5 + 41 + + ! CHECK: tneg %icc, %i5 ! encoding: [0x8d,0xd0,0x00,0x1d] + ! CHECK: tneg %icc, 82 ! encoding: [0x8d,0xd0,0x20,0x52] + ! CHECK: tneg %icc, %g1 + %i2 ! encoding: [0x8d,0xd0,0x40,0x1a] + ! CHECK: tneg %icc, %i5 + 41 ! encoding: [0x8d,0xd7,0x60,0x29] + tneg %icc, %i5 + tneg %icc, 82 + tneg %icc, %g1 + %i2 + tneg %icc, %i5 + 41 + + ! CHECK: tvc %icc, %i5 ! encoding: [0x9f,0xd0,0x00,0x1d] + ! CHECK: tvc %icc, 82 ! encoding: [0x9f,0xd0,0x20,0x52] + ! CHECK: tvc %icc, %g1 + %i2 ! encoding: [0x9f,0xd0,0x40,0x1a] + ! CHECK: tvc %icc, %i5 + 41 ! encoding: [0x9f,0xd7,0x60,0x29] + tvc %icc, %i5 + tvc %icc, 82 + tvc %icc, %g1 + %i2 + tvc %icc, %i5 + 41 + + ! CHECK: tvs %icc, %i5 ! encoding: [0x8f,0xd0,0x00,0x1d] + ! CHECK: tvs %icc, 82 ! encoding: [0x8f,0xd0,0x20,0x52] + ! CHECK: tvs %icc, %g1 + %i2 ! encoding: [0x8f,0xd0,0x40,0x1a] + ! CHECK: tvs %icc, %i5 + 41 ! encoding: [0x8f,0xd7,0x60,0x29] + tvs %icc, %i5 + tvs %icc, 82 + tvs %icc, %g1 + %i2 + tvs %icc, %i5 + 41 + + + ! CHECK: ta %xcc, %i5 ! encoding: [0x91,0xd0,0x10,0x1d] + ! CHECK: ta %xcc, 82 ! encoding: [0x91,0xd0,0x30,0x52] + ! CHECK: ta %xcc, %g1 + %i2 ! encoding: [0x91,0xd0,0x50,0x1a] + ! CHECK: ta %xcc, %i5 + 41 ! encoding: [0x91,0xd7,0x70,0x29] + ta %xcc, %i5 + ta %xcc, 82 + ta %xcc, %g1 + %i2 + ta %xcc, %i5 + 41 + + ! CHECK: tn %xcc, %i5 ! encoding: [0x81,0xd0,0x10,0x1d] + ! CHECK: tn %xcc, 82 ! encoding: [0x81,0xd0,0x30,0x52] + ! CHECK: tn %xcc, %g1 + %i2 ! encoding: [0x81,0xd0,0x50,0x1a] + ! CHECK: tn %xcc, %i5 + 41 ! encoding: [0x81,0xd7,0x70,0x29] + tn %xcc, %i5 + tn %xcc, 82 + tn %xcc, %g1 + %i2 + tn %xcc, %i5 + 41 + + ! CHECK: tne %xcc, %i5 ! encoding: [0x93,0xd0,0x10,0x1d] + !! tnz should be a synonym for tne + ! CHECK: tne %xcc, %i5 ! encoding: [0x93,0xd0,0x10,0x1d] + ! CHECK: tne %xcc, 82 ! encoding: [0x93,0xd0,0x30,0x52] + ! CHECK: tne %xcc, %g1 + %i2 ! encoding: [0x93,0xd0,0x50,0x1a] + ! CHECK: tne %xcc, %i5 + 41 ! encoding: [0x93,0xd7,0x70,0x29] + tne %xcc, %i5 + tnz %xcc, %i5 + tne %xcc, 82 + tne %xcc, %g1 + %i2 + tne %xcc, %i5 + 41 + + ! CHECK: te %xcc, %i5 ! encoding: [0x83,0xd0,0x10,0x1d] + !! tz should be a synonym for te + ! CHECK: te %xcc, %i5 ! encoding: [0x83,0xd0,0x10,0x1d] + ! CHECK: te %xcc, 82 ! encoding: [0x83,0xd0,0x30,0x52] + ! CHECK: te %xcc, %g1 + %i2 ! encoding: [0x83,0xd0,0x50,0x1a] + ! CHECK: te %xcc, %i5 + 41 ! encoding: [0x83,0xd7,0x70,0x29] + te %xcc, %i5 + tz %xcc, %i5 + te %xcc, 82 + te %xcc, %g1 + %i2 + te %xcc, %i5 + 41 + + ! CHECK: tg %xcc, %i5 ! encoding: [0x95,0xd0,0x10,0x1d] + ! CHECK: tg %xcc, 82 ! encoding: [0x95,0xd0,0x30,0x52] + ! CHECK: tg %xcc, %g1 + %i2 ! encoding: [0x95,0xd0,0x50,0x1a] + ! CHECK: tg %xcc, %i5 + 41 ! encoding: [0x95,0xd7,0x70,0x29] + tg %xcc, %i5 + tg %xcc, 82 + tg %xcc, %g1 + %i2 + tg %xcc, %i5 + 41 + + ! CHECK: tle %xcc, %i5 ! encoding: [0x85,0xd0,0x10,0x1d] + ! CHECK: tle %xcc, 82 ! encoding: [0x85,0xd0,0x30,0x52] + ! CHECK: tle %xcc, %g1 + %i2 ! encoding: [0x85,0xd0,0x50,0x1a] + ! CHECK: tle %xcc, %i5 + 41 ! encoding: [0x85,0xd7,0x70,0x29] + tle %xcc, %i5 + tle %xcc, 82 + tle %xcc, %g1 + %i2 + tle %xcc, %i5 + 41 + + ! CHECK: tge %xcc, %i5 ! encoding: [0x97,0xd0,0x10,0x1d] + ! CHECK: tge %xcc, 82 ! encoding: [0x97,0xd0,0x30,0x52] + ! CHECK: tge %xcc, %g1 + %i2 ! encoding: [0x97,0xd0,0x50,0x1a] + ! CHECK: tge %xcc, %i5 + 41 ! encoding: [0x97,0xd7,0x70,0x29] + tge %xcc, %i5 + tge %xcc, 82 + tge %xcc, %g1 + %i2 + tge %xcc, %i5 + 41 + + ! CHECK: tl %xcc, %i5 ! encoding: [0x87,0xd0,0x10,0x1d] + ! CHECK: tl %xcc, 82 ! encoding: [0x87,0xd0,0x30,0x52] + ! CHECK: tl %xcc, %g1 + %i2 ! encoding: [0x87,0xd0,0x50,0x1a] + ! CHECK: tl %xcc, %i5 + 41 ! encoding: [0x87,0xd7,0x70,0x29] + tl %xcc, %i5 + tl %xcc, 82 + tl %xcc, %g1 + %i2 + tl %xcc, %i5 + 41 + + ! CHECK: tgu %xcc, %i5 ! encoding: [0x99,0xd0,0x10,0x1d] + ! CHECK: tgu %xcc, 82 ! encoding: [0x99,0xd0,0x30,0x52] + ! CHECK: tgu %xcc, %g1 + %i2 ! encoding: [0x99,0xd0,0x50,0x1a] + ! CHECK: tgu %xcc, %i5 + 41 ! encoding: [0x99,0xd7,0x70,0x29] + tgu %xcc, %i5 + tgu %xcc, 82 + tgu %xcc, %g1 + %i2 + tgu %xcc, %i5 + 41 + + ! CHECK: tleu %xcc, %i5 ! encoding: [0x89,0xd0,0x10,0x1d] + ! CHECK: tleu %xcc, 82 ! encoding: [0x89,0xd0,0x30,0x52] + ! CHECK: tleu %xcc, %g1 + %i2 ! encoding: [0x89,0xd0,0x50,0x1a] + ! CHECK: tleu %xcc, %i5 + 41 ! encoding: [0x89,0xd7,0x70,0x29] + tleu %xcc, %i5 + tleu %xcc, 82 + tleu %xcc, %g1 + %i2 + tleu %xcc, %i5 + 41 + + ! CHECK: tcc %xcc, %i5 ! encoding: [0x9b,0xd0,0x10,0x1d] + ! CHECK: tcc %xcc, 82 ! encoding: [0x9b,0xd0,0x30,0x52] + ! CHECK: tcc %xcc, %g1 + %i2 ! encoding: [0x9b,0xd0,0x50,0x1a] + ! CHECK: tcc %xcc, %i5 + 41 ! encoding: [0x9b,0xd7,0x70,0x29] + tcc %xcc, %i5 + tcc %xcc, 82 + tcc %xcc, %g1 + %i2 + tcc %xcc, %i5 + 41 + + ! CHECK: tcs %xcc, %i5 ! encoding: [0x8b,0xd0,0x10,0x1d] + ! CHECK: tcs %xcc, 82 ! encoding: [0x8b,0xd0,0x30,0x52] + ! CHECK: tcs %xcc, %g1 + %i2 ! encoding: [0x8b,0xd0,0x50,0x1a] + ! CHECK: tcs %xcc, %i5 + 41 ! encoding: [0x8b,0xd7,0x70,0x29] + tcs %xcc, %i5 + tcs %xcc, 82 + tcs %xcc, %g1 + %i2 + tcs %xcc, %i5 + 41 + + ! CHECK: tpos %xcc, %i5 ! encoding: [0x9d,0xd0,0x10,0x1d] + ! CHECK: tpos %xcc, 82 ! encoding: [0x9d,0xd0,0x30,0x52] + ! CHECK: tpos %xcc, %g1 + %i2 ! encoding: [0x9d,0xd0,0x50,0x1a] + ! CHECK: tpos %xcc, %i5 + 41 ! encoding: [0x9d,0xd7,0x70,0x29] + tpos %xcc, %i5 + tpos %xcc, 82 + tpos %xcc, %g1 + %i2 + tpos %xcc, %i5 + 41 + + ! CHECK: tneg %xcc, %i5 ! encoding: [0x8d,0xd0,0x10,0x1d] + ! CHECK: tneg %xcc, 82 ! encoding: [0x8d,0xd0,0x30,0x52] + ! CHECK: tneg %xcc, %g1 + %i2 ! encoding: [0x8d,0xd0,0x50,0x1a] + ! CHECK: tneg %xcc, %i5 + 41 ! encoding: [0x8d,0xd7,0x70,0x29] + tneg %xcc, %i5 + tneg %xcc, 82 + tneg %xcc, %g1 + %i2 + tneg %xcc, %i5 + 41 + + ! CHECK: tvc %xcc, %i5 ! encoding: [0x9f,0xd0,0x10,0x1d] + ! CHECK: tvc %xcc, 82 ! encoding: [0x9f,0xd0,0x30,0x52] + ! CHECK: tvc %xcc, %g1 + %i2 ! encoding: [0x9f,0xd0,0x50,0x1a] + ! CHECK: tvc %xcc, %i5 + 41 ! encoding: [0x9f,0xd7,0x70,0x29] + tvc %xcc, %i5 + tvc %xcc, 82 + tvc %xcc, %g1 + %i2 + tvc %xcc, %i5 + 41 + + ! CHECK: tvs %xcc, %i5 ! encoding: [0x8f,0xd0,0x10,0x1d] + ! CHECK: tvs %xcc, 82 ! encoding: [0x8f,0xd0,0x30,0x52] + ! CHECK: tvs %xcc, %g1 + %i2 ! encoding: [0x8f,0xd0,0x50,0x1a] + ! CHECK: tvs %xcc, %i5 + 41 ! encoding: [0x8f,0xd7,0x70,0x29] + tvs %xcc, %i5 + tvs %xcc, 82 + tvs %xcc, %g1 + %i2 + tvs %xcc, %i5 + 41 +
\ No newline at end of file diff --git a/test/MC/Sparc/sparc64-ctrl-instructions.s b/test/MC/Sparc/sparc64-ctrl-instructions.s index 0e7ea25cab94..d1a744f7526a 100644 --- a/test/MC/Sparc/sparc64-ctrl-instructions.s +++ b/test/MC/Sparc/sparc64-ctrl-instructions.s @@ -1230,9 +1230,3 @@ ! CHECK: rett %i7+8 ! encoding: [0x81,0xcf,0xe0,0x08] return %i7 + 8 - ! CHECK: ta %icc, %g0 + 5 ! encoding: [0x91,0xd0,0x20,0x05] - ta 5 - - ! CHECK: te %xcc, %g0 + 3 ! encoding: [0x83,0xd0,0x30,0x03] - te %xcc, 3 - diff --git a/test/MC/SystemZ/insn-bad-z13.s b/test/MC/SystemZ/insn-bad-z13.s index 6468e3ae2ba0..a07e1ac6cfe3 100644 --- a/test/MC/SystemZ/insn-bad-z13.s +++ b/test/MC/SystemZ/insn-bad-z13.s @@ -1199,3 +1199,26 @@ wledb %v0, %v0, 0, 16 wledb %v0, %v0, -1, 0 wledb %v0, %v0, 16, 0 + +#CHECK: error: invalid operand +#CHECK: lochie %r0, 66000 +#CHECK: error: invalid operand +#CHECK: lochie %f0, 0 +#CHECK: error: invalid operand +#CHECK: lochie 0, %r0 + + lochie %r0, 66000 + lochie %f0, 0 + lochie 0, %r0 + +#CHECK: error: invalid operand +#CHECK: locghie %r0, 66000 +#CHECK: error: invalid operand +#CHECK: locghie %f0, 0 +#CHECK: error: invalid operand +#CHECK: locghie 0, %r0 + + locghie %r0, 66000 + locghie %f0, 0 + locghie 0, %r0 + diff --git a/test/MC/SystemZ/insn-bad-z196.s b/test/MC/SystemZ/insn-bad-z196.s index 1bd70a871ed2..e94f837a091b 100644 --- a/test/MC/SystemZ/insn-bad-z196.s +++ b/test/MC/SystemZ/insn-bad-z196.s @@ -607,6 +607,20 @@ risblg %r0,%r0,256,0,0 #CHECK: error: invalid operand +#CHECK: slak %r0,%r0,-524289 +#CHECK: error: invalid operand +#CHECK: slak %r0,%r0,524288 +#CHECK: error: %r0 used in an address +#CHECK: slak %r0,%r0,0(%r0) +#CHECK: error: invalid use of indexed addressing +#CHECK: slak %r0,%r0,0(%r1,%r2) + + slak %r0,%r0,-524289 + slak %r0,%r0,524288 + slak %r0,%r0,0(%r0) + slak %r0,%r0,0(%r1,%r2) + +#CHECK: error: invalid operand #CHECK: sllk %r0,%r0,-524289 #CHECK: error: invalid operand #CHECK: sllk %r0,%r0,524288 diff --git a/test/MC/SystemZ/insn-bad-zEC12.s b/test/MC/SystemZ/insn-bad-zEC12.s index ee31f5707af1..371dc72a1678 100644 --- a/test/MC/SystemZ/insn-bad-zEC12.s +++ b/test/MC/SystemZ/insn-bad-zEC12.s @@ -1576,3 +1576,14 @@ #CHECK: wledb %v0, %v0, 0, 0 wledb %v0, %v0, 0, 0 + +#CHECK: error: {{(instruction requires: load store on condition 2)?}} +#CHECK: lochio %r11, 42 + + lochio %r11, 42 + +#CHECK: error: {{(instruction requires: load store on condition 2)?}} +#CHECK: locghio %r11, 42 + + locghio %r11, 42 + diff --git a/test/MC/SystemZ/insn-bad.s b/test/MC/SystemZ/insn-bad.s index 0410a411167e..d4cc38b2bdd6 100644 --- a/test/MC/SystemZ/insn-bad.s +++ b/test/MC/SystemZ/insn-bad.s @@ -584,6 +584,20 @@ cgijo %r0, 0, 0, 0 cgijno %r0, 0, 0, 0 +#CHECK: error: invalid operand +#CHECK: cgit %r0, -32769 +#CHECK: error: invalid operand +#CHECK: cgit %r0, 32768 +#CHECK: error: invalid instruction +#CHECK: cgito %r0, 0 +#CHECK: error: invalid instruction +#CHECK: cgitno %r0, 0 + + cgit %r0, -32769 + cgit %r0, 32768 + cgito %r0, 0 + cgitno %r0, 0 + #CHECK: error: offset out of range #CHECK: cgrj %r0, %r0, 0, -0x100002 #CHECK: error: offset out of range @@ -620,6 +634,14 @@ cgrl %r0, 1 cgrl %r0, 0x100000000 +#CHECK: error: invalid instruction +#CHECK: cgrto %r0, %r0 +#CHECK: error: invalid instruction +#CHECK: cgrtno %r0, %r0 + + cgrto %r0, %r0 + cgrtno %r0, %r0 + #CHECK: error: invalid operand #CHECK: cgxbr %r0, -1, %f0 #CHECK: error: invalid operand @@ -748,6 +770,20 @@ cijno %r0, 0, 0, 0 #CHECK: error: invalid operand +#CHECK: cit %r0, -32769 +#CHECK: error: invalid operand +#CHECK: cit %r0, 32768 +#CHECK: error: invalid instruction +#CHECK: cito %r0, 0 +#CHECK: error: invalid instruction +#CHECK: citno %r0, 0 + + cit %r0, -32769 + cit %r0, 32768 + cito %r0, 0 + citno %r0, 0 + +#CHECK: error: invalid operand #CHECK: cl %r0, -1 #CHECK: error: invalid operand #CHECK: cl %r0, 4096 @@ -839,6 +875,20 @@ clfi %r0, -1 clfi %r0, (1 << 32) +#CHECK: error: invalid operand +#CHECK: clfit %r0, -1 +#CHECK: error: invalid operand +#CHECK: clfit %r0, 65536 +#CHECK: error: invalid instruction +#CHECK: clfito %r0, 0 +#CHECK: error: invalid instruction +#CHECK: clfitno %r0, 0 + + clfit %r0, -1 + clfit %r0, 65536 + clfito %r0, 0 + clfitno %r0, 0 + #CHECK: error: {{(instruction requires: fp-extension)?}} #CHECK: clfxbr %r0, 0, %f0, 0 @@ -852,6 +902,20 @@ clg %r0, -524289 clg %r0, 524288 +#CHECK: error: invalid operand +#CHECK: clgit %r0, -1 +#CHECK: error: invalid operand +#CHECK: clgit %r0, 65536 +#CHECK: error: invalid instruction +#CHECK: clgito %r0, 0 +#CHECK: error: invalid instruction +#CHECK: clgitno %r0, 0 + + clgit %r0, -1 + clgit %r0, 65536 + clgito %r0, 0 + clgitno %r0, 0 + #CHECK: error: {{(instruction requires: fp-extension)?}} #CHECK: clgdbr %r0, 0, %f0, 0 @@ -981,6 +1045,14 @@ clgrl %r0, 1 clgrl %r0, 0x100000000 +#CHECK: error: invalid instruction +#CHECK: clgrto %r0, %r0 +#CHECK: error: invalid instruction +#CHECK: clgrtno %r0, %r0 + + clgrto %r0, %r0 + clgrtno %r0, %r0 + #CHECK: error: {{(instruction requires: fp-extension)?}} #CHECK: clgxbr %r0, 0, %f0, 0 @@ -1122,6 +1194,14 @@ clrl %r0, 1 clrl %r0, 0x100000000 +#CHECK: error: invalid instruction +#CHECK: clrto %r0, %r0 +#CHECK: error: invalid instruction +#CHECK: clrtno %r0, %r0 + + clrto %r0, %r0 + clrtno %r0, %r0 + #CHECK: error: invalid operand #CHECK: cly %r0, -524289 #CHECK: error: invalid operand @@ -1166,6 +1246,14 @@ crl %r0, 1 crl %r0, 0x100000000 +#CHECK: error: invalid instruction +#CHECK: crto %r0, %r0 +#CHECK: error: invalid instruction +#CHECK: crtno %r0, %r0 + + crto %r0, %r0 + crtno %r0, %r0 + #CHECK: error: invalid operand #CHECK: cs %r0, %r0, -1 #CHECK: error: invalid operand @@ -1324,6 +1412,14 @@ dxbr %f2, %f0 #CHECK: error: invalid operand +#CHECK: ex %r0, -1 +#CHECK: error: invalid operand +#CHECK: ex %r0, 4096 + + ex %r0, -1 + ex %r0, 4096 + +#CHECK: error: invalid operand #CHECK: fidbr %f0, -1, %f0 #CHECK: error: invalid operand #CHECK: fidbr %f0, 16, %f0 @@ -1382,6 +1478,48 @@ ic %r0, 4096 #CHECK: error: invalid operand +#CHECK: icm %r0, 0, -1 +#CHECK: error: invalid operand +#CHECK: icm %r0, 0, 4096 +#CHECK: error: invalid operand +#CHECK: icm %r0, -1, 0 +#CHECK: error: invalid operand +#CHECK: icm %r0, 16, 0 + + icm %r0, 0, -1 + icm %r0, 0, 4096 + icm %r0, -1, 0 + icm %r0, 16, 0 + +#CHECK: error: invalid operand +#CHECK: icmh %r0, 0, -524289 +#CHECK: error: invalid operand +#CHECK: icmh %r0, 0, 524288 +#CHECK: error: invalid operand +#CHECK: icmh %r0, -1, 0 +#CHECK: error: invalid operand +#CHECK: icmh %r0, 16, 0 + + icmh %r0, 0, -524289 + icmh %r0, 0, 524288 + icmh %r0, -1, 0 + icmh %r0, 16, 0 + +#CHECK: error: invalid operand +#CHECK: icmy %r0, 0, -524289 +#CHECK: error: invalid operand +#CHECK: icmy %r0, 0, 524288 +#CHECK: error: invalid operand +#CHECK: icmy %r0, -1, 0 +#CHECK: error: invalid operand +#CHECK: icmy %r0, 16, 0 + + icmy %r0, 0, -524289 + icmy %r0, 0, 524288 + icmy %r0, -1, 0 + icmy %r0, 16, 0 + +#CHECK: error: invalid operand #CHECK: icy %r0, -524289 #CHECK: error: invalid operand #CHECK: icy %r0, 524288 @@ -1892,6 +2030,14 @@ llill %r0, 0x10000 #CHECK: error: invalid operand +#CHECK: lm %r0, %r0, 4096 +#CHECK: error: invalid use of indexed addressing +#CHECK: lm %r0, %r0, 0(%r1,%r2) + + lm %r0, %r0, 4096 + lm %r0, %r0, 0(%r1,%r2) + +#CHECK: error: invalid operand #CHECK: lmg %r0, %r0, -524289 #CHECK: error: invalid operand #CHECK: lmg %r0, %r0, 524288 @@ -1902,6 +2048,28 @@ lmg %r0, %r0, 524288 lmg %r0, %r0, 0(%r1,%r2) +#CHECK: error: invalid operand +#CHECK: lmh %r0, %r0, -524289 +#CHECK: error: invalid operand +#CHECK: lmh %r0, %r0, 524288 +#CHECK: error: invalid use of indexed addressing +#CHECK: lmh %r0, %r0, 0(%r1,%r2) + + lmh %r0, %r0, -524289 + lmh %r0, %r0, 524288 + lmh %r0, %r0, 0(%r1,%r2) + +#CHECK: error: invalid operand +#CHECK: lmy %r0, %r0, -524289 +#CHECK: error: invalid operand +#CHECK: lmy %r0, %r0, 524288 +#CHECK: error: invalid use of indexed addressing +#CHECK: lmy %r0, %r0, 0(%r1,%r2) + + lmy %r0, %r0, -524289 + lmy %r0, %r0, 524288 + lmy %r0, %r0, 0(%r1,%r2) + #CHECK: error: invalid register pair #CHECK: lnxbr %f0, %f2 #CHECK: error: invalid register pair @@ -2912,6 +3080,25 @@ slgrk %r2,%r3,%r4 #CHECK: error: invalid operand +#CHECK: sla %r0,-1 +#CHECK: error: invalid operand +#CHECK: sla %r0,4096 +#CHECK: error: %r0 used in an address +#CHECK: sla %r0,0(%r0) +#CHECK: error: invalid use of indexed addressing +#CHECK: sla %r0,0(%r1,%r2) + + sla %r0,-1 + sla %r0,4096 + sla %r0,0(%r0) + sla %r0,0(%r1,%r2) + +#CHECK: error: {{(instruction requires: distinct-ops)?}} +#CHECK: slak %r2,%r3,4(%r5) + + slak %r2,%r3,4(%r5) + +#CHECK: error: invalid operand #CHECK: sll %r0,-1 #CHECK: error: invalid operand #CHECK: sll %r0,4096 @@ -3176,6 +3363,14 @@ stfh %r0, 0 #CHECK: error: invalid operand +#CHECK: stm %r0, %r0, 4096 +#CHECK: error: invalid use of indexed addressing +#CHECK: stm %r0, %r0, 0(%r1,%r2) + + stm %r0, %r0, 4096 + stm %r0, %r0, 0(%r1,%r2) + +#CHECK: error: invalid operand #CHECK: stmg %r0, %r0, -524289 #CHECK: error: invalid operand #CHECK: stmg %r0, %r0, 524288 @@ -3186,6 +3381,28 @@ stmg %r0, %r0, 524288 stmg %r0, %r0, 0(%r1,%r2) +#CHECK: error: invalid operand +#CHECK: stmh %r0, %r0, -524289 +#CHECK: error: invalid operand +#CHECK: stmh %r0, %r0, 524288 +#CHECK: error: invalid use of indexed addressing +#CHECK: stmh %r0, %r0, 0(%r1,%r2) + + stmh %r0, %r0, -524289 + stmh %r0, %r0, 524288 + stmh %r0, %r0, 0(%r1,%r2) + +#CHECK: error: invalid operand +#CHECK: stmy %r0, %r0, -524289 +#CHECK: error: invalid operand +#CHECK: stmy %r0, %r0, 524288 +#CHECK: error: invalid use of indexed addressing +#CHECK: stmy %r0, %r0, 0(%r1,%r2) + + stmy %r0, %r0, -524289 + stmy %r0, %r0, 524288 + stmy %r0, %r0, 0(%r1,%r2) + #CHECK: error: offset out of range #CHECK: strl %r0, -0x1000000002 #CHECK: error: offset out of range @@ -3241,6 +3458,30 @@ sy %r0, 524288 #CHECK: error: invalid operand +#CHECK: tcdb %f0, -1 +#CHECK: error: invalid operand +#CHECK: tcdb %f0, 4096 + + tcdb %f0, -1 + tcdb %f0, 4096 + +#CHECK: error: invalid operand +#CHECK: tceb %f0, -1 +#CHECK: error: invalid operand +#CHECK: tceb %f0, 4096 + + tceb %f0, -1 + tceb %f0, 4096 + +#CHECK: error: invalid operand +#CHECK: tcxb %f0, -1 +#CHECK: error: invalid operand +#CHECK: tcxb %f0, 4096 + + tcxb %f0, -1 + tcxb %f0, 4096 + +#CHECK: error: invalid operand #CHECK: tm -1, 0 #CHECK: error: invalid operand #CHECK: tm 4096, 0 @@ -3274,6 +3515,14 @@ tmhl %r0, 0x10000 #CHECK: error: invalid operand +#CHECK: tmh %r0, -1 +#CHECK: error: invalid operand +#CHECK: tmh %r0, 0x10000 + + tmh %r0, -1 + tmh %r0, 0x10000 + +#CHECK: error: invalid operand #CHECK: tmlh %r0, -1 #CHECK: error: invalid operand #CHECK: tmlh %r0, 0x10000 @@ -3282,6 +3531,14 @@ tmlh %r0, 0x10000 #CHECK: error: invalid operand +#CHECK: tml %r0, -1 +#CHECK: error: invalid operand +#CHECK: tml %r0, 0x10000 + + tml %r0, -1 + tml %r0, 0x10000 + +#CHECK: error: invalid operand #CHECK: tmll %r0, -1 #CHECK: error: invalid operand #CHECK: tmll %r0, 0x10000 diff --git a/test/MC/SystemZ/insn-good-z13.s b/test/MC/SystemZ/insn-good-z13.s index db783295e546..411945a9b463 100644 --- a/test/MC/SystemZ/insn-good-z13.s +++ b/test/MC/SystemZ/insn-good-z13.s @@ -5089,3 +5089,71 @@ wledb %v0, %v31, 0, 0 wledb %v31, %v0, 0, 0 wledb %v14, %v17, 4, 10 + +#CHECK: lochi %r11, 42, 0 # encoding: [0xec,0xb0,0x00,0x2a,0x00,0x42] +#CHECK: lochio %r11, 42 # encoding: [0xec,0xb1,0x00,0x2a,0x00,0x42] +#CHECK: lochih %r11, 42 # encoding: [0xec,0xb2,0x00,0x2a,0x00,0x42] +#CHECK: lochinle %r11, 42 # encoding: [0xec,0xb3,0x00,0x2a,0x00,0x42] +#CHECK: lochil %r11, -1 # encoding: [0xec,0xb4,0xff,0xff,0x00,0x42] +#CHECK: lochinhe %r11, 42 # encoding: [0xec,0xb5,0x00,0x2a,0x00,0x42] +#CHECK: lochilh %r11, -1 # encoding: [0xec,0xb6,0xff,0xff,0x00,0x42] +#CHECK: lochine %r11, 0 # encoding: [0xec,0xb7,0x00,0x00,0x00,0x42] +#CHECK: lochie %r11, 0 # encoding: [0xec,0xb8,0x00,0x00,0x00,0x42] +#CHECK: lochinlh %r11, 42 # encoding: [0xec,0xb9,0x00,0x2a,0x00,0x42] +#CHECK: lochihe %r11, 255 # encoding: [0xec,0xba,0x00,0xff,0x00,0x42] +#CHECK: lochinl %r11, 255 # encoding: [0xec,0xbb,0x00,0xff,0x00,0x42] +#CHECK: lochile %r11, 32767 # encoding: [0xec,0xbc,0x7f,0xff,0x00,0x42] +#CHECK: lochinh %r11, 32767 # encoding: [0xec,0xbd,0x7f,0xff,0x00,0x42] +#CHECK: lochino %r11, 32512 # encoding: [0xec,0xbe,0x7f,0x00,0x00,0x42] +#CHECK: lochi %r11, 32512, 15 # encoding: [0xec,0xbf,0x7f,0x00,0x00,0x42] + + lochi %r11, 42, 0 + lochio %r11, 42 + lochih %r11, 42 + lochinle %r11, 42 + lochil %r11, -1 + lochinhe %r11, 42 + lochilh %r11, -1 + lochine %r11, 0 + lochie %r11, 0 + lochinlh %r11, 42 + lochihe %r11, 255 + lochinl %r11, 255 + lochile %r11, 32767 + lochinh %r11, 32767 + lochino %r11, 32512 + lochi %r11, 32512, 15 + +#CHECK: locghi %r11, 42, 0 # encoding: [0xec,0xb0,0x00,0x2a,0x00,0x46] +#CHECK: locghio %r11, 42 # encoding: [0xec,0xb1,0x00,0x2a,0x00,0x46] +#CHECK: locghih %r11, 42 # encoding: [0xec,0xb2,0x00,0x2a,0x00,0x46] +#CHECK: locghinle %r11, 42 # encoding: [0xec,0xb3,0x00,0x2a,0x00,0x46] +#CHECK: locghil %r11, -1 # encoding: [0xec,0xb4,0xff,0xff,0x00,0x46] +#CHECK: locghinhe %r11, 42 # encoding: [0xec,0xb5,0x00,0x2a,0x00,0x46] +#CHECK: locghilh %r11, -1 # encoding: [0xec,0xb6,0xff,0xff,0x00,0x46] +#CHECK: locghine %r11, 0 # encoding: [0xec,0xb7,0x00,0x00,0x00,0x46] +#CHECK: locghie %r11, 0 # encoding: [0xec,0xb8,0x00,0x00,0x00,0x46] +#CHECK: locghinlh %r11, 42 # encoding: [0xec,0xb9,0x00,0x2a,0x00,0x46] +#CHECK: locghihe %r11, 255 # encoding: [0xec,0xba,0x00,0xff,0x00,0x46] +#CHECK: locghinl %r11, 255 # encoding: [0xec,0xbb,0x00,0xff,0x00,0x46] +#CHECK: locghile %r11, 32767 # encoding: [0xec,0xbc,0x7f,0xff,0x00,0x46] +#CHECK: locghinh %r11, 32767 # encoding: [0xec,0xbd,0x7f,0xff,0x00,0x46] +#CHECK: locghino %r11, 32512 # encoding: [0xec,0xbe,0x7f,0x00,0x00,0x46] +#CHECK: locghi %r11, 32512, 15 # encoding: [0xec,0xbf,0x7f,0x00,0x00,0x46] + + locghi %r11, 42, 0 + locghio %r11, 42 + locghih %r11, 42 + locghinle %r11, 42 + locghil %r11, -1 + locghinhe %r11, 42 + locghilh %r11, -1 + locghine %r11, 0 + locghie %r11, 0 + locghinlh %r11, 42 + locghihe %r11, 255 + locghinl %r11, 255 + locghile %r11, 32767 + locghinh %r11, 32767 + locghino %r11, 32512 + locghi %r11, 32512, 15 diff --git a/test/MC/SystemZ/insn-good-z196.s b/test/MC/SystemZ/insn-good-z196.s index 36bea38f5fee..fb2c2495d7af 100644 --- a/test/MC/SystemZ/insn-good-z196.s +++ b/test/MC/SystemZ/insn-good-z196.s @@ -825,32 +825,44 @@ #CHECK: loco %r1, 2(%r3) # encoding: [0xeb,0x11,0x30,0x02,0x00,0xf2] #CHECK: loch %r1, 2(%r3) # encoding: [0xeb,0x12,0x30,0x02,0x00,0xf2] +#CHECK: locp %r1, 2(%r3) # encoding: [0xeb,0x12,0x30,0x02,0x00,0xf2] #CHECK: locnle %r1, 2(%r3) # encoding: [0xeb,0x13,0x30,0x02,0x00,0xf2] #CHECK: locl %r1, 2(%r3) # encoding: [0xeb,0x14,0x30,0x02,0x00,0xf2] +#CHECK: locm %r1, 2(%r3) # encoding: [0xeb,0x14,0x30,0x02,0x00,0xf2] #CHECK: locnhe %r1, 2(%r3) # encoding: [0xeb,0x15,0x30,0x02,0x00,0xf2] #CHECK: loclh %r1, 2(%r3) # encoding: [0xeb,0x16,0x30,0x02,0x00,0xf2] #CHECK: locne %r1, 2(%r3) # encoding: [0xeb,0x17,0x30,0x02,0x00,0xf2] +#CHECK: locnz %r1, 2(%r3) # encoding: [0xeb,0x17,0x30,0x02,0x00,0xf2] #CHECK: loce %r1, 2(%r3) # encoding: [0xeb,0x18,0x30,0x02,0x00,0xf2] +#CHECK: locz %r1, 2(%r3) # encoding: [0xeb,0x18,0x30,0x02,0x00,0xf2] #CHECK: locnlh %r1, 2(%r3) # encoding: [0xeb,0x19,0x30,0x02,0x00,0xf2] #CHECK: loche %r1, 2(%r3) # encoding: [0xeb,0x1a,0x30,0x02,0x00,0xf2] #CHECK: locnl %r1, 2(%r3) # encoding: [0xeb,0x1b,0x30,0x02,0x00,0xf2] +#CHECK: locnm %r1, 2(%r3) # encoding: [0xeb,0x1b,0x30,0x02,0x00,0xf2] #CHECK: locle %r1, 2(%r3) # encoding: [0xeb,0x1c,0x30,0x02,0x00,0xf2] #CHECK: locnh %r1, 2(%r3) # encoding: [0xeb,0x1d,0x30,0x02,0x00,0xf2] +#CHECK: locnp %r1, 2(%r3) # encoding: [0xeb,0x1d,0x30,0x02,0x00,0xf2] #CHECK: locno %r1, 2(%r3) # encoding: [0xeb,0x1e,0x30,0x02,0x00,0xf2] loco %r1,2(%r3) loch %r1,2(%r3) + locp %r1,2(%r3) locnle %r1,2(%r3) locl %r1,2(%r3) + locm %r1,2(%r3) locnhe %r1,2(%r3) loclh %r1,2(%r3) locne %r1,2(%r3) + locnz %r1,2(%r3) loce %r1,2(%r3) + locz %r1,2(%r3) locnlh %r1,2(%r3) loche %r1,2(%r3) locnl %r1,2(%r3) + locnm %r1,2(%r3) locle %r1,2(%r3) locnh %r1,2(%r3) + locnp %r1,2(%r3) locno %r1,2(%r3) #CHECK: locg %r0, 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0xe2] @@ -873,32 +885,44 @@ #CHECK: locgo %r1, 2(%r3) # encoding: [0xeb,0x11,0x30,0x02,0x00,0xe2] #CHECK: locgh %r1, 2(%r3) # encoding: [0xeb,0x12,0x30,0x02,0x00,0xe2] +#CHECK: locgp %r1, 2(%r3) # encoding: [0xeb,0x12,0x30,0x02,0x00,0xe2] #CHECK: locgnle %r1, 2(%r3) # encoding: [0xeb,0x13,0x30,0x02,0x00,0xe2] #CHECK: locgl %r1, 2(%r3) # encoding: [0xeb,0x14,0x30,0x02,0x00,0xe2] +#CHECK: locgm %r1, 2(%r3) # encoding: [0xeb,0x14,0x30,0x02,0x00,0xe2] #CHECK: locgnhe %r1, 2(%r3) # encoding: [0xeb,0x15,0x30,0x02,0x00,0xe2] #CHECK: locglh %r1, 2(%r3) # encoding: [0xeb,0x16,0x30,0x02,0x00,0xe2] #CHECK: locgne %r1, 2(%r3) # encoding: [0xeb,0x17,0x30,0x02,0x00,0xe2] +#CHECK: locgnz %r1, 2(%r3) # encoding: [0xeb,0x17,0x30,0x02,0x00,0xe2] #CHECK: locge %r1, 2(%r3) # encoding: [0xeb,0x18,0x30,0x02,0x00,0xe2] +#CHECK: locgz %r1, 2(%r3) # encoding: [0xeb,0x18,0x30,0x02,0x00,0xe2] #CHECK: locgnlh %r1, 2(%r3) # encoding: [0xeb,0x19,0x30,0x02,0x00,0xe2] #CHECK: locghe %r1, 2(%r3) # encoding: [0xeb,0x1a,0x30,0x02,0x00,0xe2] #CHECK: locgnl %r1, 2(%r3) # encoding: [0xeb,0x1b,0x30,0x02,0x00,0xe2] +#CHECK: locgnm %r1, 2(%r3) # encoding: [0xeb,0x1b,0x30,0x02,0x00,0xe2] #CHECK: locgle %r1, 2(%r3) # encoding: [0xeb,0x1c,0x30,0x02,0x00,0xe2] #CHECK: locgnh %r1, 2(%r3) # encoding: [0xeb,0x1d,0x30,0x02,0x00,0xe2] +#CHECK: locgnp %r1, 2(%r3) # encoding: [0xeb,0x1d,0x30,0x02,0x00,0xe2] #CHECK: locgno %r1, 2(%r3) # encoding: [0xeb,0x1e,0x30,0x02,0x00,0xe2] locgo %r1,2(%r3) locgh %r1,2(%r3) + locgp %r1,2(%r3) locgnle %r1,2(%r3) locgl %r1,2(%r3) + locgm %r1,2(%r3) locgnhe %r1,2(%r3) locglh %r1,2(%r3) locgne %r1,2(%r3) + locgnz %r1,2(%r3) locge %r1,2(%r3) + locgz %r1,2(%r3) locgnlh %r1,2(%r3) locghe %r1,2(%r3) locgnl %r1,2(%r3) + locgnm %r1,2(%r3) locgle %r1,2(%r3) locgnh %r1,2(%r3) + locgnp %r1,2(%r3) locgno %r1,2(%r3) #CHECK: locgr %r1, %r2, 0 # encoding: [0xb9,0xe2,0x00,0x12] @@ -909,32 +933,44 @@ #CHECK: locgro %r1, %r3 # encoding: [0xb9,0xe2,0x10,0x13] #CHECK: locgrh %r1, %r3 # encoding: [0xb9,0xe2,0x20,0x13] +#CHECK: locgrp %r1, %r3 # encoding: [0xb9,0xe2,0x20,0x13] #CHECK: locgrnle %r1, %r3 # encoding: [0xb9,0xe2,0x30,0x13] #CHECK: locgrl %r1, %r3 # encoding: [0xb9,0xe2,0x40,0x13] +#CHECK: locgrm %r1, %r3 # encoding: [0xb9,0xe2,0x40,0x13] #CHECK: locgrnhe %r1, %r3 # encoding: [0xb9,0xe2,0x50,0x13] #CHECK: locgrlh %r1, %r3 # encoding: [0xb9,0xe2,0x60,0x13] #CHECK: locgrne %r1, %r3 # encoding: [0xb9,0xe2,0x70,0x13] +#CHECK: locgrnz %r1, %r3 # encoding: [0xb9,0xe2,0x70,0x13] #CHECK: locgre %r1, %r3 # encoding: [0xb9,0xe2,0x80,0x13] +#CHECK: locgrz %r1, %r3 # encoding: [0xb9,0xe2,0x80,0x13] #CHECK: locgrnlh %r1, %r3 # encoding: [0xb9,0xe2,0x90,0x13] #CHECK: locgrhe %r1, %r3 # encoding: [0xb9,0xe2,0xa0,0x13] #CHECK: locgrnl %r1, %r3 # encoding: [0xb9,0xe2,0xb0,0x13] +#CHECK: locgrnm %r1, %r3 # encoding: [0xb9,0xe2,0xb0,0x13] #CHECK: locgrle %r1, %r3 # encoding: [0xb9,0xe2,0xc0,0x13] #CHECK: locgrnh %r1, %r3 # encoding: [0xb9,0xe2,0xd0,0x13] +#CHECK: locgrnp %r1, %r3 # encoding: [0xb9,0xe2,0xd0,0x13] #CHECK: locgrno %r1, %r3 # encoding: [0xb9,0xe2,0xe0,0x13] locgro %r1,%r3 locgrh %r1,%r3 + locgrp %r1,%r3 locgrnle %r1,%r3 locgrl %r1,%r3 + locgrm %r1,%r3 locgrnhe %r1,%r3 locgrlh %r1,%r3 locgrne %r1,%r3 + locgrnz %r1,%r3 locgre %r1,%r3 + locgrz %r1,%r3 locgrnlh %r1,%r3 locgrhe %r1,%r3 locgrnl %r1,%r3 + locgrnm %r1,%r3 locgrle %r1,%r3 locgrnh %r1,%r3 + locgrnp %r1,%r3 locgrno %r1,%r3 #CHECK: locr %r1, %r2, 0 # encoding: [0xb9,0xf2,0x00,0x12] @@ -945,32 +981,44 @@ #CHECK: locro %r1, %r3 # encoding: [0xb9,0xf2,0x10,0x13] #CHECK: locrh %r1, %r3 # encoding: [0xb9,0xf2,0x20,0x13] +#CHECK: locrp %r1, %r3 # encoding: [0xb9,0xf2,0x20,0x13] #CHECK: locrnle %r1, %r3 # encoding: [0xb9,0xf2,0x30,0x13] #CHECK: locrl %r1, %r3 # encoding: [0xb9,0xf2,0x40,0x13] +#CHECK: locrm %r1, %r3 # encoding: [0xb9,0xf2,0x40,0x13] #CHECK: locrnhe %r1, %r3 # encoding: [0xb9,0xf2,0x50,0x13] #CHECK: locrlh %r1, %r3 # encoding: [0xb9,0xf2,0x60,0x13] #CHECK: locrne %r1, %r3 # encoding: [0xb9,0xf2,0x70,0x13] +#CHECK: locrnz %r1, %r3 # encoding: [0xb9,0xf2,0x70,0x13] #CHECK: locre %r1, %r3 # encoding: [0xb9,0xf2,0x80,0x13] +#CHECK: locrz %r1, %r3 # encoding: [0xb9,0xf2,0x80,0x13] #CHECK: locrnlh %r1, %r3 # encoding: [0xb9,0xf2,0x90,0x13] #CHECK: locrhe %r1, %r3 # encoding: [0xb9,0xf2,0xa0,0x13] #CHECK: locrnl %r1, %r3 # encoding: [0xb9,0xf2,0xb0,0x13] +#CHECK: locrnm %r1, %r3 # encoding: [0xb9,0xf2,0xb0,0x13] #CHECK: locrle %r1, %r3 # encoding: [0xb9,0xf2,0xc0,0x13] #CHECK: locrnh %r1, %r3 # encoding: [0xb9,0xf2,0xd0,0x13] +#CHECK: locrnp %r1, %r3 # encoding: [0xb9,0xf2,0xd0,0x13] #CHECK: locrno %r1, %r3 # encoding: [0xb9,0xf2,0xe0,0x13] locro %r1,%r3 locrh %r1,%r3 + locrp %r1,%r3 locrnle %r1,%r3 locrl %r1,%r3 + locrm %r1,%r3 locrnhe %r1,%r3 locrlh %r1,%r3 locrne %r1,%r3 + locrnz %r1,%r3 locre %r1,%r3 + locrz %r1,%r3 locrnlh %r1,%r3 locrhe %r1,%r3 locrnl %r1,%r3 + locrnm %r1,%r3 locrle %r1,%r3 locrnh %r1,%r3 + locrnp %r1,%r3 locrno %r1,%r3 #CHECK: ngrk %r0, %r0, %r0 # encoding: [0xb9,0xe4,0x00,0x00] @@ -1075,6 +1123,32 @@ sgrk %r15,%r0,%r0 sgrk %r7,%r8,%r9 +#CHECK: slak %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0xdd] +#CHECK: slak %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0xdd] +#CHECK: slak %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0xdd] +#CHECK: slak %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0xdd] +#CHECK: slak %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0xdd] +#CHECK: slak %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0xdd] +#CHECK: slak %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0xdd] +#CHECK: slak %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0xdd] +#CHECK: slak %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0xdd] +#CHECK: slak %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0xdd] +#CHECK: slak %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0xdd] +#CHECK: slak %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0xdd] + + slak %r0,%r0,0 + slak %r15,%r1,0 + slak %r1,%r15,0 + slak %r15,%r15,0 + slak %r0,%r0,-524288 + slak %r0,%r0,-1 + slak %r0,%r0,1 + slak %r0,%r0,524287 + slak %r0,%r0,0(%r1) + slak %r0,%r0,0(%r15) + slak %r0,%r0,524287(%r1) + slak %r0,%r0,524287(%r15) + #CHECK: slgrk %r0, %r0, %r0 # encoding: [0xb9,0xeb,0x00,0x00] #CHECK: slgrk %r0, %r0, %r15 # encoding: [0xb9,0xeb,0xf0,0x00] #CHECK: slgrk %r0, %r15, %r0 # encoding: [0xb9,0xeb,0x00,0x0f] @@ -1275,32 +1349,44 @@ #CHECK: stoco %r1, 2(%r3) # encoding: [0xeb,0x11,0x30,0x02,0x00,0xf3] #CHECK: stoch %r1, 2(%r3) # encoding: [0xeb,0x12,0x30,0x02,0x00,0xf3] +#CHECK: stocp %r1, 2(%r3) # encoding: [0xeb,0x12,0x30,0x02,0x00,0xf3] #CHECK: stocnle %r1, 2(%r3) # encoding: [0xeb,0x13,0x30,0x02,0x00,0xf3] #CHECK: stocl %r1, 2(%r3) # encoding: [0xeb,0x14,0x30,0x02,0x00,0xf3] +#CHECK: stocm %r1, 2(%r3) # encoding: [0xeb,0x14,0x30,0x02,0x00,0xf3] #CHECK: stocnhe %r1, 2(%r3) # encoding: [0xeb,0x15,0x30,0x02,0x00,0xf3] #CHECK: stoclh %r1, 2(%r3) # encoding: [0xeb,0x16,0x30,0x02,0x00,0xf3] #CHECK: stocne %r1, 2(%r3) # encoding: [0xeb,0x17,0x30,0x02,0x00,0xf3] +#CHECK: stocnz %r1, 2(%r3) # encoding: [0xeb,0x17,0x30,0x02,0x00,0xf3] #CHECK: stoce %r1, 2(%r3) # encoding: [0xeb,0x18,0x30,0x02,0x00,0xf3] +#CHECK: stocz %r1, 2(%r3) # encoding: [0xeb,0x18,0x30,0x02,0x00,0xf3] #CHECK: stocnlh %r1, 2(%r3) # encoding: [0xeb,0x19,0x30,0x02,0x00,0xf3] #CHECK: stoche %r1, 2(%r3) # encoding: [0xeb,0x1a,0x30,0x02,0x00,0xf3] #CHECK: stocnl %r1, 2(%r3) # encoding: [0xeb,0x1b,0x30,0x02,0x00,0xf3] +#CHECK: stocnm %r1, 2(%r3) # encoding: [0xeb,0x1b,0x30,0x02,0x00,0xf3] #CHECK: stocle %r1, 2(%r3) # encoding: [0xeb,0x1c,0x30,0x02,0x00,0xf3] #CHECK: stocnh %r1, 2(%r3) # encoding: [0xeb,0x1d,0x30,0x02,0x00,0xf3] +#CHECK: stocnp %r1, 2(%r3) # encoding: [0xeb,0x1d,0x30,0x02,0x00,0xf3] #CHECK: stocno %r1, 2(%r3) # encoding: [0xeb,0x1e,0x30,0x02,0x00,0xf3] stoco %r1,2(%r3) stoch %r1,2(%r3) + stocp %r1,2(%r3) stocnle %r1,2(%r3) stocl %r1,2(%r3) + stocm %r1,2(%r3) stocnhe %r1,2(%r3) stoclh %r1,2(%r3) stocne %r1,2(%r3) + stocnz %r1,2(%r3) stoce %r1,2(%r3) + stocz %r1,2(%r3) stocnlh %r1,2(%r3) stoche %r1,2(%r3) stocnl %r1,2(%r3) + stocnm %r1,2(%r3) stocle %r1,2(%r3) stocnh %r1,2(%r3) + stocnp %r1,2(%r3) stocno %r1,2(%r3) #CHECK: stocg %r0, 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0xe3] @@ -1323,32 +1409,44 @@ #CHECK: stocgo %r1, 2(%r3) # encoding: [0xeb,0x11,0x30,0x02,0x00,0xe3] #CHECK: stocgh %r1, 2(%r3) # encoding: [0xeb,0x12,0x30,0x02,0x00,0xe3] +#CHECK: stocgp %r1, 2(%r3) # encoding: [0xeb,0x12,0x30,0x02,0x00,0xe3] #CHECK: stocgnle %r1, 2(%r3) # encoding: [0xeb,0x13,0x30,0x02,0x00,0xe3] #CHECK: stocgl %r1, 2(%r3) # encoding: [0xeb,0x14,0x30,0x02,0x00,0xe3] +#CHECK: stocgm %r1, 2(%r3) # encoding: [0xeb,0x14,0x30,0x02,0x00,0xe3] #CHECK: stocgnhe %r1, 2(%r3) # encoding: [0xeb,0x15,0x30,0x02,0x00,0xe3] #CHECK: stocglh %r1, 2(%r3) # encoding: [0xeb,0x16,0x30,0x02,0x00,0xe3] #CHECK: stocgne %r1, 2(%r3) # encoding: [0xeb,0x17,0x30,0x02,0x00,0xe3] +#CHECK: stocgnz %r1, 2(%r3) # encoding: [0xeb,0x17,0x30,0x02,0x00,0xe3] #CHECK: stocge %r1, 2(%r3) # encoding: [0xeb,0x18,0x30,0x02,0x00,0xe3] +#CHECK: stocgz %r1, 2(%r3) # encoding: [0xeb,0x18,0x30,0x02,0x00,0xe3] #CHECK: stocgnlh %r1, 2(%r3) # encoding: [0xeb,0x19,0x30,0x02,0x00,0xe3] #CHECK: stocghe %r1, 2(%r3) # encoding: [0xeb,0x1a,0x30,0x02,0x00,0xe3] #CHECK: stocgnl %r1, 2(%r3) # encoding: [0xeb,0x1b,0x30,0x02,0x00,0xe3] +#CHECK: stocgnm %r1, 2(%r3) # encoding: [0xeb,0x1b,0x30,0x02,0x00,0xe3] #CHECK: stocgle %r1, 2(%r3) # encoding: [0xeb,0x1c,0x30,0x02,0x00,0xe3] #CHECK: stocgnh %r1, 2(%r3) # encoding: [0xeb,0x1d,0x30,0x02,0x00,0xe3] +#CHECK: stocgnp %r1, 2(%r3) # encoding: [0xeb,0x1d,0x30,0x02,0x00,0xe3] #CHECK: stocgno %r1, 2(%r3) # encoding: [0xeb,0x1e,0x30,0x02,0x00,0xe3] stocgo %r1,2(%r3) stocgh %r1,2(%r3) + stocgp %r1,2(%r3) stocgnle %r1,2(%r3) stocgl %r1,2(%r3) + stocgm %r1,2(%r3) stocgnhe %r1,2(%r3) stocglh %r1,2(%r3) stocgne %r1,2(%r3) + stocgnz %r1,2(%r3) stocge %r1,2(%r3) + stocgz %r1,2(%r3) stocgnlh %r1,2(%r3) stocghe %r1,2(%r3) stocgnl %r1,2(%r3) + stocgnm %r1,2(%r3) stocgle %r1,2(%r3) stocgnh %r1,2(%r3) + stocgnp %r1,2(%r3) stocgno %r1,2(%r3) #CHECK: xgrk %r0, %r0, %r0 # encoding: [0xb9,0xe7,0x00,0x00] diff --git a/test/MC/SystemZ/insn-good.s b/test/MC/SystemZ/insn-good.s index 0e8cad4bdb7a..ffc86bcf5eca 100644 --- a/test/MC/SystemZ/insn-good.s +++ b/test/MC/SystemZ/insn-good.s @@ -741,8 +741,11 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL #CHECK: jh foo # encoding: [0xa7,0x24,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL +#CHECK: jp foo # encoding: [0xa7,0x24,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL brc 2, foo jh foo + jp foo #CHECK: brc 3, foo # encoding: [0xa7,0x34,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL @@ -755,8 +758,11 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL #CHECK: jl foo # encoding: [0xa7,0x44,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL +#CHECK: jm foo # encoding: [0xa7,0x44,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL brc 4, foo jl foo + jm foo #CHECK: brc 5, foo # encoding: [0xa7,0x54,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL @@ -776,15 +782,21 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL #CHECK: jne foo # encoding: [0xa7,0x74,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL +#CHECK: jnz foo # encoding: [0xa7,0x74,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL brc 7, foo jne foo + jnz foo #CHECK: brc 8, foo # encoding: [0xa7,0x84,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL #CHECK: je foo # encoding: [0xa7,0x84,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL +#CHECK: jz foo # encoding: [0xa7,0x84,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL brc 8, foo je foo + jz foo #CHECK: brc 9, foo # encoding: [0xa7,0x94,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL @@ -804,8 +816,11 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL #CHECK: jnl foo # encoding: [0xa7,0xb4,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL +#CHECK: jnm foo # encoding: [0xa7,0xb4,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL brc 11, foo jnl foo + jnm foo #CHECK: brc 12, foo # encoding: [0xa7,0xc4,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL @@ -818,8 +833,11 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL #CHECK: jnh foo # encoding: [0xa7,0xd4,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL +#CHECK: jnp foo # encoding: [0xa7,0xd4,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL brc 13, foo jnh foo + jnp foo #CHECK: brc 14, foo # encoding: [0xa7,0xe4,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL @@ -991,8 +1009,11 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL #CHECK: jgh foo # encoding: [0xc0,0x24,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL +#CHECK: jgp foo # encoding: [0xc0,0x24,A,A,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL brcl 2, foo jgh foo + jgp foo #CHECK: brcl 3, foo # encoding: [0xc0,0x34,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL @@ -1005,8 +1026,11 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL #CHECK: jgl foo # encoding: [0xc0,0x44,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL +#CHECK: jgm foo # encoding: [0xc0,0x44,A,A,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL brcl 4, foo jgl foo + jgm foo #CHECK: brcl 5, foo # encoding: [0xc0,0x54,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL @@ -1026,15 +1050,21 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL #CHECK: jgne foo # encoding: [0xc0,0x74,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL +#CHECK: jgnz foo # encoding: [0xc0,0x74,A,A,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL brcl 7, foo jgne foo + jgnz foo #CHECK: brcl 8, foo # encoding: [0xc0,0x84,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL #CHECK: jge foo # encoding: [0xc0,0x84,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL +#CHECK: jgz foo # encoding: [0xc0,0x84,A,A,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL brcl 8, foo jge foo + jgz foo #CHECK: brcl 9, foo # encoding: [0xc0,0x94,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL @@ -1054,8 +1084,11 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL #CHECK: jgnl foo # encoding: [0xc0,0xb4,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL +#CHECK: jgnm foo # encoding: [0xc0,0xb4,A,A,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL brcl 11, foo jgnl foo + jgnm foo #CHECK: brcl 12, foo # encoding: [0xc0,0xc4,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL @@ -1068,8 +1101,11 @@ #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL #CHECK: jgnh foo # encoding: [0xc0,0xd4,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL +#CHECK: jgnp foo # encoding: [0xc0,0xd4,A,A,A,A] +#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL brcl 13, foo jgnh foo + jgnp foo #CHECK: brcl 14, foo # encoding: [0xc0,0xe4,A,A,A,A] #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL @@ -1637,6 +1673,86 @@ cghsi 4095(%r1), 42 cghsi 4095(%r15), 42 +#CHECK: cgib %r0, 0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xfc] +#CHECK: cgib %r0, -128, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x80,0xfc] +#CHECK: cgib %r0, 127, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x7f,0xfc] +#CHECK: cgib %r15, 0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0xfc] +#CHECK: cgib %r7, -1, 0, 0 # encoding: [0xec,0x70,0x00,0x00,0xff,0xfc] +#CHECK: cgib %r0, 0, 1, 0 # encoding: [0xec,0x01,0x00,0x00,0x00,0xfc] +#CHECK: cgib %r0, 0, 15, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0xfc] +#CHECK: cgib %r0, 0, 0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x00,0xfc] +#CHECK: cgib %r0, 0, 0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x00,0xfc] +#CHECK: cgib %r0, 0, 0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x00,0xfc] + cgib %r0, 0, 0, 0 + cgib %r0, -128, 0, 0 + cgib %r0, 127, 0, 0 + cgib %r15, 0, 0, 0 + cgib %r7, -1, 0, 0 + cgib %r0, 0, 1, 0 + cgib %r0, 0, 15, 0 + cgib %r0, 0, 0, 0(%r13) + cgib %r0, 0, 0, 4095 + cgib %r0, 0, 0, 4095(%r7) + +#CHECK: cgibe %r0, 0, 0 # encoding: [0xec,0x08,0x00,0x00,0x00,0xfc] +#CHECK: cgibe %r0, -128, 0 # encoding: [0xec,0x08,0x00,0x00,0x80,0xfc] +#CHECK: cgibe %r0, 127, 0 # encoding: [0xec,0x08,0x00,0x00,0x7f,0xfc] +#CHECK: cgibe %r15, 0, 0 # encoding: [0xec,0xf8,0x00,0x00,0x00,0xfc] +#CHECK: cgibe %r7, -1, 0 # encoding: [0xec,0x78,0x00,0x00,0xff,0xfc] +#CHECK: cgibe %r0, 0, 0(%r13) # encoding: [0xec,0x08,0xd0,0x00,0x00,0xfc] +#CHECK: cgibe %r0, 0, 4095 # encoding: [0xec,0x08,0x0f,0xff,0x00,0xfc] +#CHECK: cgibe %r0, 0, 4095(%r7) # encoding: [0xec,0x08,0x7f,0xff,0x00,0xfc] + cgibe %r0, 0, 0 + cgibe %r0, -128, 0 + cgibe %r0, 127, 0 + cgibe %r15, 0, 0 + cgibe %r7, -1, 0 + cgibe %r0, 0, 0(%r13) + cgibe %r0, 0, 4095 + cgibe %r0, 0, 4095(%r7) + +#CHECK: cgib %r1, 2, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfc] +#CHECK: cgibh %r1, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfc] +#CHECK: cgibnle %r1, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfc] + cgib %r1, 2, 2, 3(%r4) + cgibh %r1, 2, 3(%r4) + cgibnle %r1, 2, 3(%r4) + +#CHECK: cgib %r1, 2, 4, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfc] +#CHECK: cgibl %r1, 2, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfc] +#CHECK: cgibnhe %r1, 2, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfc] + cgib %r1, 2, 4, 3(%r4) + cgibl %r1, 2, 3(%r4) + cgibnhe %r1, 2, 3(%r4) + +#CHECK: cgib %r1, 2, 6, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfc] +#CHECK: cgiblh %r1, 2, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfc] +#CHECK: cgibne %r1, 2, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfc] + cgib %r1, 2, 6, 3(%r4) + cgiblh %r1, 2, 3(%r4) + cgibne %r1, 2, 3(%r4) + +#CHECK: cgib %r1, 2, 8, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfc] +#CHECK: cgibe %r1, 2, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfc] +#CHECK: cgibnlh %r1, 2, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfc] + cgib %r1, 2, 8, 3(%r4) + cgibe %r1, 2, 3(%r4) + cgibnlh %r1, 2, 3(%r4) + +#CHECK: cgib %r1, 2, 10, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfc] +#CHECK: cgibhe %r1, 2, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfc] +#CHECK: cgibnl %r1, 2, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfc] + cgib %r1, 2, 10, 3(%r4) + cgibhe %r1, 2, 3(%r4) + cgibnl %r1, 2, 3(%r4) + +#CHECK: cgib %r1, 2, 12, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfc] +#CHECK: cgible %r1, 2, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfc] +#CHECK: cgibnh %r1, 2, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfc] + cgib %r1, 2, 12, 3(%r4) + cgible %r1, 2, 3(%r4) + cgibnh %r1, 2, 3(%r4) + #CHECK: cgij %r0, 0, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x00,0x7c] #CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL #CHECK: cgij %r0, -128, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x80,0x7c] @@ -1870,6 +1986,28 @@ #CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL cgijnh %r1, -66, bar@PLT +#CHECK: cgit %r0, 0, 12 # encoding: [0xec,0x00,0x00,0x00,0xc0,0x70] +#CHECK: cgit %r0, -1, 12 # encoding: [0xec,0x00,0xff,0xff,0xc0,0x70] +#CHECK: cgit %r0, -32768, 12 # encoding: [0xec,0x00,0x80,0x00,0xc0,0x70] +#CHECK: cgit %r0, 32767, 12 # encoding: [0xec,0x00,0x7f,0xff,0xc0,0x70] +#CHECK: cgith %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x20,0x70] +#CHECK: cgitl %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x40,0x70] +#CHECK: cgite %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x80,0x70] +#CHECK: cgitne %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x60,0x70] +#CHECK: cgitnl %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0xa0,0x70] +#CHECK: cgitnh %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0xc0,0x70] + + cgit %r0, 0, 12 + cgit %r0, -1, 12 + cgit %r0, -32768, 12 + cgit %r0, 32767, 12 + cgith %r15, 1 + cgitl %r15, 1 + cgite %r15, 1 + cgitne %r15, 1 + cgitnl %r15, 1 + cgitnh %r15, 1 + #CHECK: cgr %r0, %r0 # encoding: [0xb9,0x20,0x00,0x00] #CHECK: cgr %r0, %r15 # encoding: [0xb9,0x20,0x00,0x0f] #CHECK: cgr %r15, %r0 # encoding: [0xb9,0x20,0x00,0xf0] @@ -1880,6 +2018,82 @@ cgr %r15,%r0 cgr %r7,%r8 +#CHECK: cgrb %r0, %r0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xe4] +#CHECK: cgrb %r0, %r15, 0, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0xe4] +#CHECK: cgrb %r15, %r0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0xe4] +#CHECK: cgrb %r7, %r2, 0, 0 # encoding: [0xec,0x72,0x00,0x00,0x00,0xe4] +#CHECK: cgrb %r0, %r0, 1, 0 # encoding: [0xec,0x00,0x00,0x00,0x10,0xe4] +#CHECK: cgrb %r0, %r0, 15, 0 # encoding: [0xec,0x00,0x00,0x00,0xf0,0xe4] +#CHECK: cgrb %r0, %r0, 0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x00,0xe4] +#CHECK: cgrb %r0, %r0, 0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x00,0xe4] +#CHECK: cgrb %r0, %r0, 0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x00,0xe4] + cgrb %r0, %r0, 0, 0 + cgrb %r0, %r15, 0, 0 + cgrb %r15, %r0, 0, 0 + cgrb %r7, %r2, 0, 0 + cgrb %r0, %r0, 1, 0 + cgrb %r0, %r0, 15, 0 + cgrb %r0, %r0, 0, 0(%r13) + cgrb %r0, %r0, 0, 4095 + cgrb %r0, %r0, 0, 4095(%r7) + +#CHECK: cgrbe %r0, %r0, 0 # encoding: [0xec,0x00,0x00,0x00,0x80,0xe4] +#CHECK: cgrbe %r0, %r15, 0 # encoding: [0xec,0x0f,0x00,0x00,0x80,0xe4] +#CHECK: cgrbe %r15, %r0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x80,0xe4] +#CHECK: cgrbe %r7, %r2, 0 # encoding: [0xec,0x72,0x00,0x00,0x80,0xe4] +#CHECK: cgrbe %r0, %r0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x80,0xe4] +#CHECK: cgrbe %r0, %r0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x80,0xe4] +#CHECK: cgrbe %r0, %r0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x80,0xe4] + cgrbe %r0, %r0, 0 + cgrbe %r0, %r15, 0 + cgrbe %r15, %r0, 0 + cgrbe %r7, %r2, 0 + cgrbe %r0, %r0, 0(%r13) + cgrbe %r0, %r0, 4095 + cgrbe %r0, %r0, 4095(%r7) + +#CHECK: cgrb %r1, %r2, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xe4] +#CHECK: cgrbh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xe4] +#CHECK: cgrbnle %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xe4] + cgrb %r1, %r2, 2, 3(%r4) + cgrbh %r1, %r2, 3(%r4) + cgrbnle %r1, %r2, 3(%r4) + +#CHECK: cgrb %r1, %r2, 4, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xe4] +#CHECK: cgrbl %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xe4] +#CHECK: cgrbnhe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xe4] + cgrb %r1, %r2, 4, 3(%r4) + cgrbl %r1, %r2, 3(%r4) + cgrbnhe %r1, %r2, 3(%r4) + +#CHECK: cgrb %r1, %r2, 6, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xe4] +#CHECK: cgrblh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xe4] +#CHECK: cgrbne %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xe4] + cgrb %r1, %r2, 6, 3(%r4) + cgrblh %r1, %r2, 3(%r4) + cgrbne %r1, %r2, 3(%r4) + +#CHECK: cgrb %r1, %r2, 8, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xe4] +#CHECK: cgrbe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xe4] +#CHECK: cgrbnlh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xe4] + cgrb %r1, %r2, 8, 3(%r4) + cgrbe %r1, %r2, 3(%r4) + cgrbnlh %r1, %r2, 3(%r4) + +#CHECK: cgrb %r1, %r2, 10, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xe4] +#CHECK: cgrbhe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xe4] +#CHECK: cgrbnl %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xe4] + cgrb %r1, %r2, 10, 3(%r4) + cgrbhe %r1, %r2, 3(%r4) + cgrbnl %r1, %r2, 3(%r4) + +#CHECK: cgrb %r1, %r2, 12, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xe4] +#CHECK: cgrble %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xe4] +#CHECK: cgrbnh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xe4] + cgrb %r1, %r2, 12, 3(%r4) + cgrble %r1, %r2, 3(%r4) + cgrbnh %r1, %r2, 3(%r4) + #CHECK: cgrj %r0, %r0, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x00,0x64] #CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL #CHECK: cgrj %r0, %r15, 0, .[[LAB:L.*]] # encoding: [0xec,0x0f,A,A,0x00,0x64] @@ -2147,6 +2361,28 @@ cgrl %r7,frob@PLT cgrl %r8,frob@PLT +#CHECK: cgrt %r0, %r1, 12 # encoding: [0xb9,0x60,0xc0,0x01] +#CHECK: cgrt %r0, %r1, 12 # encoding: [0xb9,0x60,0xc0,0x01] +#CHECK: cgrt %r0, %r1, 12 # encoding: [0xb9,0x60,0xc0,0x01] +#CHECK: cgrt %r0, %r1, 12 # encoding: [0xb9,0x60,0xc0,0x01] +#CHECK: cgrth %r0, %r15 # encoding: [0xb9,0x60,0x20,0x0f] +#CHECK: cgrtl %r0, %r15 # encoding: [0xb9,0x60,0x40,0x0f] +#CHECK: cgrte %r0, %r15 # encoding: [0xb9,0x60,0x80,0x0f] +#CHECK: cgrtne %r0, %r15 # encoding: [0xb9,0x60,0x60,0x0f] +#CHECK: cgrtnl %r0, %r15 # encoding: [0xb9,0x60,0xa0,0x0f] +#CHECK: cgrtnh %r0, %r15 # encoding: [0xb9,0x60,0xc0,0x0f] + + cgrt %r0, %r1, 12 + cgrt %r0, %r1, 12 + cgrt %r0, %r1, 12 + cgrt %r0, %r1, 12 + cgrth %r0, %r15 + cgrtl %r0, %r15 + cgrte %r0, %r15 + cgrtne %r0, %r15 + cgrtnl %r0, %r15 + cgrtnh %r0, %r15 + #CHECK: cgxbr %r0, 0, %f0 # encoding: [0xb3,0xaa,0x00,0x00] #CHECK: cgxbr %r0, 0, %f13 # encoding: [0xb3,0xaa,0x00,0x0d] #CHECK: cgxbr %r0, 15, %f0 # encoding: [0xb3,0xaa,0xf0,0x00] @@ -2296,6 +2532,86 @@ chy %r0, 524287(%r15,%r1) chy %r15, 0 +#CHECK: cib %r0, 0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xfe] +#CHECK: cib %r0, -128, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x80,0xfe] +#CHECK: cib %r0, 127, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x7f,0xfe] +#CHECK: cib %r15, 0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0xfe] +#CHECK: cib %r7, -1, 0, 0 # encoding: [0xec,0x70,0x00,0x00,0xff,0xfe] +#CHECK: cib %r0, 0, 1, 0 # encoding: [0xec,0x01,0x00,0x00,0x00,0xfe] +#CHECK: cib %r0, 0, 15, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0xfe] +#CHECK: cib %r0, 0, 0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x00,0xfe] +#CHECK: cib %r0, 0, 0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x00,0xfe] +#CHECK: cib %r0, 0, 0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x00,0xfe] + cib %r0, 0, 0, 0 + cib %r0, -128, 0, 0 + cib %r0, 127, 0, 0 + cib %r15, 0, 0, 0 + cib %r7, -1, 0, 0 + cib %r0, 0, 1, 0 + cib %r0, 0, 15, 0 + cib %r0, 0, 0, 0(%r13) + cib %r0, 0, 0, 4095 + cib %r0, 0, 0, 4095(%r7) + +#CHECK: cibe %r0, 0, 0 # encoding: [0xec,0x08,0x00,0x00,0x00,0xfe] +#CHECK: cibe %r0, -128, 0 # encoding: [0xec,0x08,0x00,0x00,0x80,0xfe] +#CHECK: cibe %r0, 127, 0 # encoding: [0xec,0x08,0x00,0x00,0x7f,0xfe] +#CHECK: cibe %r15, 0, 0 # encoding: [0xec,0xf8,0x00,0x00,0x00,0xfe] +#CHECK: cibe %r7, -1, 0 # encoding: [0xec,0x78,0x00,0x00,0xff,0xfe] +#CHECK: cibe %r0, 0, 0(%r13) # encoding: [0xec,0x08,0xd0,0x00,0x00,0xfe] +#CHECK: cibe %r0, 0, 4095 # encoding: [0xec,0x08,0x0f,0xff,0x00,0xfe] +#CHECK: cibe %r0, 0, 4095(%r7) # encoding: [0xec,0x08,0x7f,0xff,0x00,0xfe] + cibe %r0, 0, 0 + cibe %r0, -128, 0 + cibe %r0, 127, 0 + cibe %r15, 0, 0 + cibe %r7, -1, 0 + cibe %r0, 0, 0(%r13) + cibe %r0, 0, 4095 + cibe %r0, 0, 4095(%r7) + +#CHECK: cib %r1, 2, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfe] +#CHECK: cibh %r1, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfe] +#CHECK: cibnle %r1, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfe] + cib %r1, 2, 2, 3(%r4) + cibh %r1, 2, 3(%r4) + cibnle %r1, 2, 3(%r4) + +#CHECK: cib %r1, 2, 4, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfe] +#CHECK: cibl %r1, 2, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfe] +#CHECK: cibnhe %r1, 2, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfe] + cib %r1, 2, 4, 3(%r4) + cibl %r1, 2, 3(%r4) + cibnhe %r1, 2, 3(%r4) + +#CHECK: cib %r1, 2, 6, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfe] +#CHECK: ciblh %r1, 2, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfe] +#CHECK: cibne %r1, 2, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfe] + cib %r1, 2, 6, 3(%r4) + ciblh %r1, 2, 3(%r4) + cibne %r1, 2, 3(%r4) + +#CHECK: cib %r1, 2, 8, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfe] +#CHECK: cibe %r1, 2, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfe] +#CHECK: cibnlh %r1, 2, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfe] + cib %r1, 2, 8, 3(%r4) + cibe %r1, 2, 3(%r4) + cibnlh %r1, 2, 3(%r4) + +#CHECK: cib %r1, 2, 10, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfe] +#CHECK: cibhe %r1, 2, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfe] +#CHECK: cibnl %r1, 2, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfe] + cib %r1, 2, 10, 3(%r4) + cibhe %r1, 2, 3(%r4) + cibnl %r1, 2, 3(%r4) + +#CHECK: cib %r1, 2, 12, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfe] +#CHECK: cible %r1, 2, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfe] +#CHECK: cibnh %r1, 2, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfe] + cib %r1, 2, 12, 3(%r4) + cible %r1, 2, 3(%r4) + cibnh %r1, 2, 3(%r4) + #CHECK: cij %r0, 0, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x00,0x7e] #CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL #CHECK: cij %r0, -128, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x80,0x7e] @@ -2529,6 +2845,28 @@ #CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL cijnh %r1, -66, bar@PLT +#CHECK: cit %r0, 0, 12 # encoding: [0xec,0x00,0x00,0x00,0xc0,0x72] +#CHECK: cit %r0, -1, 12 # encoding: [0xec,0x00,0xff,0xff,0xc0,0x72] +#CHECK: cit %r0, -32768, 12 # encoding: [0xec,0x00,0x80,0x00,0xc0,0x72] +#CHECK: cit %r0, 32767, 12 # encoding: [0xec,0x00,0x7f,0xff,0xc0,0x72] +#CHECK: cith %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x20,0x72] +#CHECK: citl %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x40,0x72] +#CHECK: cite %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x80,0x72] +#CHECK: citne %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x60,0x72] +#CHECK: citnl %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0xa0,0x72] +#CHECK: citnh %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0xc0,0x72] + + cit %r0, 0, 12 + cit %r0, -1, 12 + cit %r0, -32768, 12 + cit %r0, 32767, 12 + cith %r15, 1 + citl %r15, 1 + cite %r15, 1 + citne %r15, 1 + citnl %r15, 1 + citnh %r15, 1 + #CHECK: cl %r0, 0 # encoding: [0x55,0x00,0x00,0x00] #CHECK: cl %r0, 4095 # encoding: [0x55,0x00,0x0f,0xff] #CHECK: cl %r0, 0(%r1) # encoding: [0x55,0x00,0x10,0x00] @@ -2595,6 +2933,26 @@ clfi %r0, (1 << 32) - 1 clfi %r15, 0 +#CHECK: clfit %r0, 0, 12 # encoding: [0xec,0x00,0x00,0x00,0xc0,0x73] +#CHECK: clfit %r0, 65535, 12 # encoding: [0xec,0x00,0xff,0xff,0xc0,0x73] +#CHECK: clfit %r0, 32768, 12 # encoding: [0xec,0x00,0x80,0x00,0xc0,0x73] +#CHECK: clfith %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x20,0x73] +#CHECK: clfitl %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x40,0x73] +#CHECK: clfite %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x80,0x73] +#CHECK: clfitne %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x60,0x73] +#CHECK: clfitnl %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0xa0,0x73] +#CHECK: clfitnh %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0xc0,0x73] + + clfit %r0, 0, 12 + clfit %r0, 65535, 12 + clfit %r0, 32768, 12 + clfith %r15, 1 + clfitl %r15, 1 + clfite %r15, 1 + clfitne %r15, 1 + clfitnl %r15, 1 + clfitnh %r15, 1 + #CHECK: clg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x21] #CHECK: clg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x21] #CHECK: clg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x21] @@ -2747,6 +3105,86 @@ clghsi 4095(%r1), 42 clghsi 4095(%r15), 42 +#CHECK: clgib %r0, 0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xfd] +#CHECK: clgib %r0, 128, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x80,0xfd] +#CHECK: clgib %r0, 127, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x7f,0xfd] +#CHECK: clgib %r15, 0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0xfd] +#CHECK: clgib %r7, 255, 0, 0 # encoding: [0xec,0x70,0x00,0x00,0xff,0xfd] +#CHECK: clgib %r0, 0, 1, 0 # encoding: [0xec,0x01,0x00,0x00,0x00,0xfd] +#CHECK: clgib %r0, 0, 15, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0xfd] +#CHECK: clgib %r0, 0, 0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x00,0xfd] +#CHECK: clgib %r0, 0, 0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x00,0xfd] +#CHECK: clgib %r0, 0, 0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x00,0xfd] + clgib %r0, 0, 0, 0 + clgib %r0, 128, 0, 0 + clgib %r0, 127, 0, 0 + clgib %r15, 0, 0, 0 + clgib %r7, 255, 0, 0 + clgib %r0, 0, 1, 0 + clgib %r0, 0, 15, 0 + clgib %r0, 0, 0, 0(%r13) + clgib %r0, 0, 0, 4095 + clgib %r0, 0, 0, 4095(%r7) + +#CHECK: clgibe %r0, 0, 0 # encoding: [0xec,0x08,0x00,0x00,0x00,0xfd] +#CHECK: clgibe %r0, 128, 0 # encoding: [0xec,0x08,0x00,0x00,0x80,0xfd] +#CHECK: clgibe %r0, 127, 0 # encoding: [0xec,0x08,0x00,0x00,0x7f,0xfd] +#CHECK: clgibe %r15, 0, 0 # encoding: [0xec,0xf8,0x00,0x00,0x00,0xfd] +#CHECK: clgibe %r7, 255, 0 # encoding: [0xec,0x78,0x00,0x00,0xff,0xfd] +#CHECK: clgibe %r0, 0, 0(%r13) # encoding: [0xec,0x08,0xd0,0x00,0x00,0xfd] +#CHECK: clgibe %r0, 0, 4095 # encoding: [0xec,0x08,0x0f,0xff,0x00,0xfd] +#CHECK: clgibe %r0, 0, 4095(%r7) # encoding: [0xec,0x08,0x7f,0xff,0x00,0xfd] + clgibe %r0, 0, 0 + clgibe %r0, 128, 0 + clgibe %r0, 127, 0 + clgibe %r15, 0, 0 + clgibe %r7, 255, 0 + clgibe %r0, 0, 0(%r13) + clgibe %r0, 0, 4095 + clgibe %r0, 0, 4095(%r7) + +#CHECK: clgib %r1, 2, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfd] +#CHECK: clgibh %r1, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfd] +#CHECK: clgibnle %r1, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xfd] + clgib %r1, 2, 2, 3(%r4) + clgibh %r1, 2, 3(%r4) + clgibnle %r1, 2, 3(%r4) + +#CHECK: clgib %r1, 2, 4, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfd] +#CHECK: clgibl %r1, 2, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfd] +#CHECK: clgibnhe %r1, 2, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xfd] + clgib %r1, 2, 4, 3(%r4) + clgibl %r1, 2, 3(%r4) + clgibnhe %r1, 2, 3(%r4) + +#CHECK: clgib %r1, 2, 6, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfd] +#CHECK: clgiblh %r1, 2, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfd] +#CHECK: clgibne %r1, 2, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xfd] + clgib %r1, 2, 6, 3(%r4) + clgiblh %r1, 2, 3(%r4) + clgibne %r1, 2, 3(%r4) + +#CHECK: clgib %r1, 2, 8, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfd] +#CHECK: clgibe %r1, 2, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfd] +#CHECK: clgibnlh %r1, 2, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xfd] + clgib %r1, 2, 8, 3(%r4) + clgibe %r1, 2, 3(%r4) + clgibnlh %r1, 2, 3(%r4) + +#CHECK: clgib %r1, 2, 10, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfd] +#CHECK: clgibhe %r1, 2, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfd] +#CHECK: clgibnl %r1, 2, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xfd] + clgib %r1, 2, 10, 3(%r4) + clgibhe %r1, 2, 3(%r4) + clgibnl %r1, 2, 3(%r4) + +#CHECK: clgib %r1, 2, 12, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfd] +#CHECK: clgible %r1, 2, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfd] +#CHECK: clgibnh %r1, 2, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xfd] + clgib %r1, 2, 12, 3(%r4) + clgible %r1, 2, 3(%r4) + clgibnh %r1, 2, 3(%r4) + #CHECK: clgij %r0, 0, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x00,0x7d] #CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL #CHECK: clgij %r0, 255, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0xff,0x7d] @@ -2974,6 +3412,26 @@ #CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL clgijnh %r1, 193, bar@PLT +#CHECK: clgit %r0, 0, 12 # encoding: [0xec,0x00,0x00,0x00,0xc0,0x71] +#CHECK: clgit %r0, 65535, 12 # encoding: [0xec,0x00,0xff,0xff,0xc0,0x71] +#CHECK: clgit %r0, 32768, 12 # encoding: [0xec,0x00,0x80,0x00,0xc0,0x71] +#CHECK: clgith %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x20,0x71] +#CHECK: clgitl %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x40,0x71] +#CHECK: clgite %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x80,0x71] +#CHECK: clgitne %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0x60,0x71] +#CHECK: clgitnl %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0xa0,0x71] +#CHECK: clgitnh %r15, 1 # encoding: [0xec,0xf0,0x00,0x01,0xc0,0x71] + + clgit %r0, 0, 12 + clgit %r0, 65535, 12 + clgit %r0, 32768, 12 + clgith %r15, 1 + clgitl %r15, 1 + clgite %r15, 1 + clgitne %r15, 1 + clgitnl %r15, 1 + clgitnh %r15, 1 + #CHECK: clgr %r0, %r0 # encoding: [0xb9,0x21,0x00,0x00] #CHECK: clgr %r0, %r15 # encoding: [0xb9,0x21,0x00,0x0f] #CHECK: clgr %r15, %r0 # encoding: [0xb9,0x21,0x00,0xf0] @@ -2984,6 +3442,82 @@ clgr %r15,%r0 clgr %r7,%r8 +#CHECK: clgrb %r0, %r0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xe5] +#CHECK: clgrb %r0, %r15, 0, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0xe5] +#CHECK: clgrb %r15, %r0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0xe5] +#CHECK: clgrb %r7, %r2, 0, 0 # encoding: [0xec,0x72,0x00,0x00,0x00,0xe5] +#CHECK: clgrb %r0, %r0, 1, 0 # encoding: [0xec,0x00,0x00,0x00,0x10,0xe5] +#CHECK: clgrb %r0, %r0, 15, 0 # encoding: [0xec,0x00,0x00,0x00,0xf0,0xe5] +#CHECK: clgrb %r0, %r0, 0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x00,0xe5] +#CHECK: clgrb %r0, %r0, 0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x00,0xe5] +#CHECK: clgrb %r0, %r0, 0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x00,0xe5] + clgrb %r0, %r0, 0, 0 + clgrb %r0, %r15, 0, 0 + clgrb %r15, %r0, 0, 0 + clgrb %r7, %r2, 0, 0 + clgrb %r0, %r0, 1, 0 + clgrb %r0, %r0, 15, 0 + clgrb %r0, %r0, 0, 0(%r13) + clgrb %r0, %r0, 0, 4095 + clgrb %r0, %r0, 0, 4095(%r7) + +#CHECK: clgrbe %r0, %r0, 0 # encoding: [0xec,0x00,0x00,0x00,0x80,0xe5] +#CHECK: clgrbe %r0, %r15, 0 # encoding: [0xec,0x0f,0x00,0x00,0x80,0xe5] +#CHECK: clgrbe %r15, %r0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x80,0xe5] +#CHECK: clgrbe %r7, %r2, 0 # encoding: [0xec,0x72,0x00,0x00,0x80,0xe5] +#CHECK: clgrbe %r0, %r0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x80,0xe5] +#CHECK: clgrbe %r0, %r0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x80,0xe5] +#CHECK: clgrbe %r0, %r0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x80,0xe5] + clgrbe %r0, %r0, 0 + clgrbe %r0, %r15, 0 + clgrbe %r15, %r0, 0 + clgrbe %r7, %r2, 0 + clgrbe %r0, %r0, 0(%r13) + clgrbe %r0, %r0, 4095 + clgrbe %r0, %r0, 4095(%r7) + +#CHECK: clgrb %r1, %r2, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xe5] +#CHECK: clgrbh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xe5] +#CHECK: clgrbnle %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xe5] + clgrb %r1, %r2, 2, 3(%r4) + clgrbh %r1, %r2, 3(%r4) + clgrbnle %r1, %r2, 3(%r4) + +#CHECK: clgrb %r1, %r2, 4, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xe5] +#CHECK: clgrbl %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xe5] +#CHECK: clgrbnhe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xe5] + clgrb %r1, %r2, 4, 3(%r4) + clgrbl %r1, %r2, 3(%r4) + clgrbnhe %r1, %r2, 3(%r4) + +#CHECK: clgrb %r1, %r2, 6, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xe5] +#CHECK: clgrblh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xe5] +#CHECK: clgrbne %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xe5] + clgrb %r1, %r2, 6, 3(%r4) + clgrblh %r1, %r2, 3(%r4) + clgrbne %r1, %r2, 3(%r4) + +#CHECK: clgrb %r1, %r2, 8, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xe5] +#CHECK: clgrbe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xe5] +#CHECK: clgrbnlh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xe5] + clgrb %r1, %r2, 8, 3(%r4) + clgrbe %r1, %r2, 3(%r4) + clgrbnlh %r1, %r2, 3(%r4) + +#CHECK: clgrb %r1, %r2, 10, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xe5] +#CHECK: clgrbhe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xe5] +#CHECK: clgrbnl %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xe5] + clgrb %r1, %r2, 10, 3(%r4) + clgrbhe %r1, %r2, 3(%r4) + clgrbnl %r1, %r2, 3(%r4) + +#CHECK: clgrb %r1, %r2, 12, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xe5] +#CHECK: clgrble %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xe5] +#CHECK: clgrbnh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xe5] + clgrb %r1, %r2, 12, 3(%r4) + clgrble %r1, %r2, 3(%r4) + clgrbnh %r1, %r2, 3(%r4) + #CHECK: clgrj %r0, %r0, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x00,0x65] #CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL #CHECK: clgrj %r0, %r15, 0, .[[LAB:L.*]] # encoding: [0xec,0x0f,A,A,0x00,0x65] @@ -3320,6 +3854,86 @@ cli 4095(%r1), 42 cli 4095(%r15), 42 +#CHECK: clib %r0, 0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xff] +#CHECK: clib %r0, 128, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x80,0xff] +#CHECK: clib %r0, 127, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x7f,0xff] +#CHECK: clib %r15, 0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0xff] +#CHECK: clib %r7, 255, 0, 0 # encoding: [0xec,0x70,0x00,0x00,0xff,0xff] +#CHECK: clib %r0, 0, 1, 0 # encoding: [0xec,0x01,0x00,0x00,0x00,0xff] +#CHECK: clib %r0, 0, 15, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0xff] +#CHECK: clib %r0, 0, 0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x00,0xff] +#CHECK: clib %r0, 0, 0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x00,0xff] +#CHECK: clib %r0, 0, 0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x00,0xff] + clib %r0, 0, 0, 0 + clib %r0, 128, 0, 0 + clib %r0, 127, 0, 0 + clib %r15, 0, 0, 0 + clib %r7, 255, 0, 0 + clib %r0, 0, 1, 0 + clib %r0, 0, 15, 0 + clib %r0, 0, 0, 0(%r13) + clib %r0, 0, 0, 4095 + clib %r0, 0, 0, 4095(%r7) + +#CHECK: clibe %r0, 0, 0 # encoding: [0xec,0x08,0x00,0x00,0x00,0xff] +#CHECK: clibe %r0, 128, 0 # encoding: [0xec,0x08,0x00,0x00,0x80,0xff] +#CHECK: clibe %r0, 127, 0 # encoding: [0xec,0x08,0x00,0x00,0x7f,0xff] +#CHECK: clibe %r15, 0, 0 # encoding: [0xec,0xf8,0x00,0x00,0x00,0xff] +#CHECK: clibe %r7, 255, 0 # encoding: [0xec,0x78,0x00,0x00,0xff,0xff] +#CHECK: clibe %r0, 0, 0(%r13) # encoding: [0xec,0x08,0xd0,0x00,0x00,0xff] +#CHECK: clibe %r0, 0, 4095 # encoding: [0xec,0x08,0x0f,0xff,0x00,0xff] +#CHECK: clibe %r0, 0, 4095(%r7) # encoding: [0xec,0x08,0x7f,0xff,0x00,0xff] + clibe %r0, 0, 0 + clibe %r0, 128, 0 + clibe %r0, 127, 0 + clibe %r15, 0, 0 + clibe %r7, 255, 0 + clibe %r0, 0, 0(%r13) + clibe %r0, 0, 4095 + clibe %r0, 0, 4095(%r7) + +#CHECK: clib %r1, 2, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xff] +#CHECK: clibh %r1, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xff] +#CHECK: clibnle %r1, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x02,0xff] + clib %r1, 2, 2, 3(%r4) + clibh %r1, 2, 3(%r4) + clibnle %r1, 2, 3(%r4) + +#CHECK: clib %r1, 2, 4, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xff] +#CHECK: clibl %r1, 2, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xff] +#CHECK: clibnhe %r1, 2, 3(%r4) # encoding: [0xec,0x14,0x40,0x03,0x02,0xff] + clib %r1, 2, 4, 3(%r4) + clibl %r1, 2, 3(%r4) + clibnhe %r1, 2, 3(%r4) + +#CHECK: clib %r1, 2, 6, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xff] +#CHECK: cliblh %r1, 2, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xff] +#CHECK: clibne %r1, 2, 3(%r4) # encoding: [0xec,0x16,0x40,0x03,0x02,0xff] + clib %r1, 2, 6, 3(%r4) + cliblh %r1, 2, 3(%r4) + clibne %r1, 2, 3(%r4) + +#CHECK: clib %r1, 2, 8, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xff] +#CHECK: clibe %r1, 2, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xff] +#CHECK: clibnlh %r1, 2, 3(%r4) # encoding: [0xec,0x18,0x40,0x03,0x02,0xff] + clib %r1, 2, 8, 3(%r4) + clibe %r1, 2, 3(%r4) + clibnlh %r1, 2, 3(%r4) + +#CHECK: clib %r1, 2, 10, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xff] +#CHECK: clibhe %r1, 2, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xff] +#CHECK: clibnl %r1, 2, 3(%r4) # encoding: [0xec,0x1a,0x40,0x03,0x02,0xff] + clib %r1, 2, 10, 3(%r4) + clibhe %r1, 2, 3(%r4) + clibnl %r1, 2, 3(%r4) + +#CHECK: clib %r1, 2, 12, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xff] +#CHECK: clible %r1, 2, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xff] +#CHECK: clibnh %r1, 2, 3(%r4) # encoding: [0xec,0x1c,0x40,0x03,0x02,0xff] + clib %r1, 2, 12, 3(%r4) + clible %r1, 2, 3(%r4) + clibnh %r1, 2, 3(%r4) + #CHECK: clij %r0, 0, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x00,0x7f] #CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL #CHECK: clij %r0, 255, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0xff,0x7f] @@ -3579,6 +4193,104 @@ clr %r15,%r0 clr %r7,%r8 +#CHECK: clrb %r0, %r0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xf7] +#CHECK: clrb %r0, %r15, 0, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0xf7] +#CHECK: clrb %r15, %r0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0xf7] +#CHECK: clrb %r7, %r2, 0, 0 # encoding: [0xec,0x72,0x00,0x00,0x00,0xf7] +#CHECK: clrb %r0, %r0, 1, 0 # encoding: [0xec,0x00,0x00,0x00,0x10,0xf7] +#CHECK: clrb %r0, %r0, 15, 0 # encoding: [0xec,0x00,0x00,0x00,0xf0,0xf7] +#CHECK: clrb %r0, %r0, 0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x00,0xf7] +#CHECK: clrb %r0, %r0, 0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x00,0xf7] +#CHECK: clrb %r0, %r0, 0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x00,0xf7] + clrb %r0, %r0, 0, 0 + clrb %r0, %r15, 0, 0 + clrb %r15, %r0, 0, 0 + clrb %r7, %r2, 0, 0 + clrb %r0, %r0, 1, 0 + clrb %r0, %r0, 15, 0 + clrb %r0, %r0, 0, 0(%r13) + clrb %r0, %r0, 0, 4095 + clrb %r0, %r0, 0, 4095(%r7) + +#CHECK: clrbe %r0, %r0, 0 # encoding: [0xec,0x00,0x00,0x00,0x80,0xf7] +#CHECK: clrbe %r0, %r15, 0 # encoding: [0xec,0x0f,0x00,0x00,0x80,0xf7] +#CHECK: clrbe %r15, %r0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x80,0xf7] +#CHECK: clrbe %r7, %r2, 0 # encoding: [0xec,0x72,0x00,0x00,0x80,0xf7] +#CHECK: clrbe %r0, %r0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x80,0xf7] +#CHECK: clrbe %r0, %r0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x80,0xf7] +#CHECK: clrbe %r0, %r0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x80,0xf7] + clrbe %r0, %r0, 0 + clrbe %r0, %r15, 0 + clrbe %r15, %r0, 0 + clrbe %r7, %r2, 0 + clrbe %r0, %r0, 0(%r13) + clrbe %r0, %r0, 4095 + clrbe %r0, %r0, 4095(%r7) + +#CHECK: clrb %r1, %r2, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xf7] +#CHECK: clrbh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xf7] +#CHECK: clrbnle %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xf7] + clrb %r1, %r2, 2, 3(%r4) + clrbh %r1, %r2, 3(%r4) + clrbnle %r1, %r2, 3(%r4) + +#CHECK: clrb %r1, %r2, 4, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xf7] +#CHECK: clrbl %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xf7] +#CHECK: clrbnhe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xf7] + clrb %r1, %r2, 4, 3(%r4) + clrbl %r1, %r2, 3(%r4) + clrbnhe %r1, %r2, 3(%r4) + +#CHECK: clrb %r1, %r2, 6, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xf7] +#CHECK: clrblh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xf7] +#CHECK: clrbne %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xf7] + clrb %r1, %r2, 6, 3(%r4) + clrblh %r1, %r2, 3(%r4) + clrbne %r1, %r2, 3(%r4) + +#CHECK: clrb %r1, %r2, 8, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xf7] +#CHECK: clrbe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xf7] +#CHECK: clrbnlh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xf7] + clrb %r1, %r2, 8, 3(%r4) + clrbe %r1, %r2, 3(%r4) + clrbnlh %r1, %r2, 3(%r4) + +#CHECK: clrb %r1, %r2, 10, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xf7] +#CHECK: clrbhe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xf7] +#CHECK: clrbnl %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xf7] + clrb %r1, %r2, 10, 3(%r4) + clrbhe %r1, %r2, 3(%r4) + clrbnl %r1, %r2, 3(%r4) + +#CHECK: clrb %r1, %r2, 12, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xf7] +#CHECK: clrble %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xf7] +#CHECK: clrbnh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xf7] + clrb %r1, %r2, 12, 3(%r4) + clrble %r1, %r2, 3(%r4) + clrbnh %r1, %r2, 3(%r4) + +#CHECK: clgrt %r0, %r1, 12 # encoding: [0xb9,0x61,0xc0,0x01] +#CHECK: clgrt %r0, %r1, 12 # encoding: [0xb9,0x61,0xc0,0x01] +#CHECK: clgrt %r0, %r1, 12 # encoding: [0xb9,0x61,0xc0,0x01] +#CHECK: clgrt %r0, %r1, 12 # encoding: [0xb9,0x61,0xc0,0x01] +#CHECK: clgrth %r0, %r15 # encoding: [0xb9,0x61,0x20,0x0f] +#CHECK: clgrtl %r0, %r15 # encoding: [0xb9,0x61,0x40,0x0f] +#CHECK: clgrte %r0, %r15 # encoding: [0xb9,0x61,0x80,0x0f] +#CHECK: clgrtne %r0, %r15 # encoding: [0xb9,0x61,0x60,0x0f] +#CHECK: clgrtnl %r0, %r15 # encoding: [0xb9,0x61,0xa0,0x0f] +#CHECK: clgrtnh %r0, %r15 # encoding: [0xb9,0x61,0xc0,0x0f] + + clgrt %r0, %r1, 12 + clgrt %r0, %r1, 12 + clgrt %r0, %r1, 12 + clgrt %r0, %r1, 12 + clgrth %r0, %r15 + clgrtl %r0, %r15 + clgrte %r0, %r15 + clgrtne %r0, %r15 + clgrtnl %r0, %r15 + clgrtnh %r0, %r15 + #CHECK: clrj %r0, %r0, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x00,0x77] #CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL #CHECK: clrj %r0, %r15, 0, .[[LAB:L.*]] # encoding: [0xec,0x0f,A,A,0x00,0x77] @@ -3846,6 +4558,28 @@ clrl %r7,frob@PLT clrl %r8,frob@PLT +#CHECK: clrt %r0, %r1, 12 # encoding: [0xb9,0x73,0xc0,0x01] +#CHECK: clrt %r0, %r1, 12 # encoding: [0xb9,0x73,0xc0,0x01] +#CHECK: clrt %r0, %r1, 12 # encoding: [0xb9,0x73,0xc0,0x01] +#CHECK: clrt %r0, %r1, 12 # encoding: [0xb9,0x73,0xc0,0x01] +#CHECK: clrth %r0, %r15 # encoding: [0xb9,0x73,0x20,0x0f] +#CHECK: clrtl %r0, %r15 # encoding: [0xb9,0x73,0x40,0x0f] +#CHECK: clrte %r0, %r15 # encoding: [0xb9,0x73,0x80,0x0f] +#CHECK: clrtne %r0, %r15 # encoding: [0xb9,0x73,0x60,0x0f] +#CHECK: clrtnl %r0, %r15 # encoding: [0xb9,0x73,0xa0,0x0f] +#CHECK: clrtnh %r0, %r15 # encoding: [0xb9,0x73,0xc0,0x0f] + + clrt %r0, %r1, 12 + clrt %r0, %r1, 12 + clrt %r0, %r1, 12 + clrt %r0, %r1, 12 + clrth %r0, %r15 + clrtl %r0, %r15 + clrte %r0, %r15 + clrtne %r0, %r15 + clrtnl %r0, %r15 + clrtnh %r0, %r15 + #CHECK: clst %r0, %r0 # encoding: [0xb2,0x5d,0x00,0x00] #CHECK: clst %r0, %r15 # encoding: [0xb2,0x5d,0x00,0x0f] #CHECK: clst %r15, %r0 # encoding: [0xb2,0x5d,0x00,0xf0] @@ -3903,6 +4637,82 @@ cr %r15,%r0 cr %r7,%r8 +#CHECK: crb %r0, %r0, 0, 0 # encoding: [0xec,0x00,0x00,0x00,0x00,0xf6] +#CHECK: crb %r0, %r15, 0, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0xf6] +#CHECK: crb %r15, %r0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0xf6] +#CHECK: crb %r7, %r2, 0, 0 # encoding: [0xec,0x72,0x00,0x00,0x00,0xf6] +#CHECK: crb %r0, %r0, 1, 0 # encoding: [0xec,0x00,0x00,0x00,0x10,0xf6] +#CHECK: crb %r0, %r0, 15, 0 # encoding: [0xec,0x00,0x00,0x00,0xf0,0xf6] +#CHECK: crb %r0, %r0, 0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x00,0xf6] +#CHECK: crb %r0, %r0, 0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x00,0xf6] +#CHECK: crb %r0, %r0, 0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x00,0xf6] + crb %r0, %r0, 0, 0 + crb %r0, %r15, 0, 0 + crb %r15, %r0, 0, 0 + crb %r7, %r2, 0, 0 + crb %r0, %r0, 1, 0 + crb %r0, %r0, 15, 0 + crb %r0, %r0, 0, 0(%r13) + crb %r0, %r0, 0, 4095 + crb %r0, %r0, 0, 4095(%r7) + +#CHECK: crbe %r0, %r0, 0 # encoding: [0xec,0x00,0x00,0x00,0x80,0xf6] +#CHECK: crbe %r0, %r15, 0 # encoding: [0xec,0x0f,0x00,0x00,0x80,0xf6] +#CHECK: crbe %r15, %r0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x80,0xf6] +#CHECK: crbe %r7, %r2, 0 # encoding: [0xec,0x72,0x00,0x00,0x80,0xf6] +#CHECK: crbe %r0, %r0, 0(%r13) # encoding: [0xec,0x00,0xd0,0x00,0x80,0xf6] +#CHECK: crbe %r0, %r0, 4095 # encoding: [0xec,0x00,0x0f,0xff,0x80,0xf6] +#CHECK: crbe %r0, %r0, 4095(%r7) # encoding: [0xec,0x00,0x7f,0xff,0x80,0xf6] + crbe %r0, %r0, 0 + crbe %r0, %r15, 0 + crbe %r15, %r0, 0 + crbe %r7, %r2, 0 + crbe %r0, %r0, 0(%r13) + crbe %r0, %r0, 4095 + crbe %r0, %r0, 4095(%r7) + +#CHECK: crb %r1, %r2, 2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xf6] +#CHECK: crbh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xf6] +#CHECK: crbnle %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x20,0xf6] + crb %r1, %r2, 2, 3(%r4) + crbh %r1, %r2, 3(%r4) + crbnle %r1, %r2, 3(%r4) + +#CHECK: crb %r1, %r2, 4, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xf6] +#CHECK: crbl %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xf6] +#CHECK: crbnhe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x40,0xf6] + crb %r1, %r2, 4, 3(%r4) + crbl %r1, %r2, 3(%r4) + crbnhe %r1, %r2, 3(%r4) + +#CHECK: crb %r1, %r2, 6, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xf6] +#CHECK: crblh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xf6] +#CHECK: crbne %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x60,0xf6] + crb %r1, %r2, 6, 3(%r4) + crblh %r1, %r2, 3(%r4) + crbne %r1, %r2, 3(%r4) + +#CHECK: crb %r1, %r2, 8, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xf6] +#CHECK: crbe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xf6] +#CHECK: crbnlh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0x80,0xf6] + crb %r1, %r2, 8, 3(%r4) + crbe %r1, %r2, 3(%r4) + crbnlh %r1, %r2, 3(%r4) + +#CHECK: crb %r1, %r2, 10, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xf6] +#CHECK: crbhe %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xf6] +#CHECK: crbnl %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xa0,0xf6] + crb %r1, %r2, 10, 3(%r4) + crbhe %r1, %r2, 3(%r4) + crbnl %r1, %r2, 3(%r4) + +#CHECK: crb %r1, %r2, 12, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xf6] +#CHECK: crble %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xf6] +#CHECK: crbnh %r1, %r2, 3(%r4) # encoding: [0xec,0x12,0x40,0x03,0xc0,0xf6] + crb %r1, %r2, 12, 3(%r4) + crble %r1, %r2, 3(%r4) + crbnh %r1, %r2, 3(%r4) + #CHECK: crj %r0, %r0, 0, .[[LAB:L.*]] # encoding: [0xec,0x00,A,A,0x00,0x76] #CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL #CHECK: crj %r0, %r15, 0, .[[LAB:L.*]] # encoding: [0xec,0x0f,A,A,0x00,0x76] @@ -4170,6 +4980,28 @@ crl %r7,frob@PLT crl %r8,frob@PLT +#CHECK: crt %r0, %r1, 12 # encoding: [0xb9,0x72,0xc0,0x01] +#CHECK: crt %r0, %r1, 12 # encoding: [0xb9,0x72,0xc0,0x01] +#CHECK: crt %r0, %r1, 12 # encoding: [0xb9,0x72,0xc0,0x01] +#CHECK: crt %r0, %r1, 12 # encoding: [0xb9,0x72,0xc0,0x01] +#CHECK: crth %r0, %r15 # encoding: [0xb9,0x72,0x20,0x0f] +#CHECK: crtl %r0, %r15 # encoding: [0xb9,0x72,0x40,0x0f] +#CHECK: crte %r0, %r15 # encoding: [0xb9,0x72,0x80,0x0f] +#CHECK: crtne %r0, %r15 # encoding: [0xb9,0x72,0x60,0x0f] +#CHECK: crtnl %r0, %r15 # encoding: [0xb9,0x72,0xa0,0x0f] +#CHECK: crtnh %r0, %r15 # encoding: [0xb9,0x72,0xc0,0x0f] + + crt %r0, %r1, 12 + crt %r0, %r1, 12 + crt %r0, %r1, 12 + crt %r0, %r1, 12 + crth %r0, %r15 + crtl %r0, %r15 + crte %r0, %r15 + crtne %r0, %r15 + crtnl %r0, %r15 + crtnh %r0, %r15 + #CHECK: cs %r0, %r0, 0 # encoding: [0xba,0x00,0x00,0x00] #CHECK: cs %r0, %r0, 4095 # encoding: [0xba,0x00,0x0f,0xff] #CHECK: cs %r0, %r0, 0(%r1) # encoding: [0xba,0x00,0x10,0x00] @@ -4494,6 +5326,59 @@ ear %r7, %a8 ear %r15, %a15 +#CHECK: ex %r0, 0 # encoding: [0x44,0x00,0x00,0x00] +#CHECK: ex %r0, 4095 # encoding: [0x44,0x00,0x0f,0xff] +#CHECK: ex %r0, 0(%r1) # encoding: [0x44,0x00,0x10,0x00] +#CHECK: ex %r0, 0(%r15) # encoding: [0x44,0x00,0xf0,0x00] +#CHECK: ex %r0, 4095(%r1,%r15) # encoding: [0x44,0x01,0xff,0xff] +#CHECK: ex %r0, 4095(%r15,%r1) # encoding: [0x44,0x0f,0x1f,0xff] +#CHECK: ex %r15, 0 # encoding: [0x44,0xf0,0x00,0x00] + + ex %r0, 0 + ex %r0, 4095 + ex %r0, 0(%r1) + ex %r0, 0(%r15) + ex %r0, 4095(%r1,%r15) + ex %r0, 4095(%r15,%r1) + ex %r15, 0 + +#CHECK: exrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x00,A,A,A,A] +#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL + exrl %r0, -0x100000000 +#CHECK: exrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x00,A,A,A,A] +#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL + exrl %r0, -2 +#CHECK: exrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x00,A,A,A,A] +#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL + exrl %r0, 0 +#CHECK: exrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x00,A,A,A,A] +#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL + exrl %r0, 0xfffffffe + +#CHECK: exrl %r0, foo # encoding: [0xc6,0x00,A,A,A,A] +# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL +#CHECK: exrl %r15, foo # encoding: [0xc6,0xf0,A,A,A,A] +# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL + + exrl %r0,foo + exrl %r15,foo + +#CHECK: exrl %r3, bar+100 # encoding: [0xc6,0x30,A,A,A,A] +# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL +#CHECK: exrl %r4, bar+100 # encoding: [0xc6,0x40,A,A,A,A] +# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL + + exrl %r3,bar+100 + exrl %r4,bar+100 + +#CHECK: exrl %r7, frob@PLT # encoding: [0xc6,0x70,A,A,A,A] +# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL +#CHECK: exrl %r8, frob@PLT # encoding: [0xc6,0x80,A,A,A,A] +# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL + + exrl %r7,frob@PLT + exrl %r8,frob@PLT + #CHECK: fidbr %f0, 0, %f0 # encoding: [0xb3,0x5f,0x00,0x00] #CHECK: fidbr %f0, 0, %f15 # encoding: [0xb3,0x5f,0x00,0x0f] #CHECK: fidbr %f0, 15, %f0 # encoding: [0xb3,0x5f,0xf0,0x00] @@ -4556,6 +5441,66 @@ ic %r0, 4095(%r15,%r1) ic %r15, 0 +#CHECK: icm %r0, 0, 0 # encoding: [0xbf,0x00,0x00,0x00] +#CHECK: icm %r0, 15, 4095 # encoding: [0xbf,0x0f,0x0f,0xff] +#CHECK: icm %r0, 0, 0(%r1) # encoding: [0xbf,0x00,0x10,0x00] +#CHECK: icm %r0, 0, 0(%r15) # encoding: [0xbf,0x00,0xf0,0x00] +#CHECK: icm %r15, 15, 4095(%r1) # encoding: [0xbf,0xff,0x1f,0xff] +#CHECK: icm %r0, 0, 4095(%r15) # encoding: [0xbf,0x00,0xff,0xff] +#CHECK: icm %r15, 0, 0 # encoding: [0xbf,0xf0,0x00,0x00] + + icm %r0, 0, 0 + icm %r0, 15, 4095 + icm %r0, 0, 0(%r1) + icm %r0, 0, 0(%r15) + icm %r15, 15, 4095(%r1) + icm %r0, 0, 4095(%r15) + icm %r15, 0, 0 + +#CHECK: icmh %r0, 0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x80] +#CHECK: icmh %r0, 0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x80] +#CHECK: icmh %r0, 15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x80] +#CHECK: icmh %r0, 15, 1 # encoding: [0xeb,0x0f,0x00,0x01,0x00,0x80] +#CHECK: icmh %r0, 8, 524287 # encoding: [0xeb,0x08,0x0f,0xff,0x7f,0x80] +#CHECK: icmh %r0, 8, 0(%r1) # encoding: [0xeb,0x08,0x10,0x00,0x00,0x80] +#CHECK: icmh %r0, 4, 0(%r15) # encoding: [0xeb,0x04,0xf0,0x00,0x00,0x80] +#CHECK: icmh %r0, 4, 524287(%r15) # encoding: [0xeb,0x04,0xff,0xff,0x7f,0x80] +#CHECK: icmh %r0, 0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x80] +#CHECK: icmh %r15, 0, 0 # encoding: [0xeb,0xf0,0x00,0x00,0x00,0x80] + + icmh %r0, 0, -524288 + icmh %r0, 0, -1 + icmh %r0, 15, 0 + icmh %r0, 15, 1 + icmh %r0, 8, 524287 + icmh %r0, 8, 0(%r1) + icmh %r0, 4, 0(%r15) + icmh %r0, 4, 524287(%r15) + icmh %r0, 0, 524287(%r1) + icmh %r15, 0, 0 + +#CHECK: icmy %r0, 0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x81] +#CHECK: icmy %r0, 0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x81] +#CHECK: icmy %r0, 15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x81] +#CHECK: icmy %r0, 15, 1 # encoding: [0xeb,0x0f,0x00,0x01,0x00,0x81] +#CHECK: icmy %r0, 8, 524287 # encoding: [0xeb,0x08,0x0f,0xff,0x7f,0x81] +#CHECK: icmy %r0, 8, 0(%r1) # encoding: [0xeb,0x08,0x10,0x00,0x00,0x81] +#CHECK: icmy %r0, 4, 0(%r15) # encoding: [0xeb,0x04,0xf0,0x00,0x00,0x81] +#CHECK: icmy %r0, 4, 524287(%r15) # encoding: [0xeb,0x04,0xff,0xff,0x7f,0x81] +#CHECK: icmy %r0, 0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x81] +#CHECK: icmy %r15, 0, 0 # encoding: [0xeb,0xf0,0x00,0x00,0x00,0x81] + + icmy %r0, 0, -524288 + icmy %r0, 0, -1 + icmy %r0, 15, 0 + icmy %r0, 15, 1 + icmy %r0, 8, 524287 + icmy %r0, 8, 0(%r1) + icmy %r0, 4, 0(%r15) + icmy %r0, 4, 524287(%r15) + icmy %r0, 0, 524287(%r1) + icmy %r15, 0, 0 + #CHECK: icy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x73] #CHECK: icy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x73] #CHECK: icy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x73] @@ -5684,6 +6629,28 @@ llill %r0, 0xffff llill %r15, 0 +#CHECK: lm %r0, %r0, 0 # encoding: [0x98,0x00,0x00,0x00] +#CHECK: lm %r0, %r15, 0 # encoding: [0x98,0x0f,0x00,0x00] +#CHECK: lm %r14, %r15, 0 # encoding: [0x98,0xef,0x00,0x00] +#CHECK: lm %r15, %r15, 0 # encoding: [0x98,0xff,0x00,0x00] +#CHECK: lm %r0, %r0, 4095 # encoding: [0x98,0x00,0x0f,0xff] +#CHECK: lm %r0, %r0, 1 # encoding: [0x98,0x00,0x00,0x01] +#CHECK: lm %r0, %r0, 0(%r1) # encoding: [0x98,0x00,0x10,0x00] +#CHECK: lm %r0, %r0, 0(%r15) # encoding: [0x98,0x00,0xf0,0x00] +#CHECK: lm %r0, %r0, 4095(%r1) # encoding: [0x98,0x00,0x1f,0xff] +#CHECK: lm %r0, %r0, 4095(%r15) # encoding: [0x98,0x00,0xff,0xff] + + lm %r0,%r0,0 + lm %r0,%r15,0 + lm %r14,%r15,0 + lm %r15,%r15,0 + lm %r0,%r0,4095 + lm %r0,%r0,1 + lm %r0,%r0,0(%r1) + lm %r0,%r0,0(%r15) + lm %r0,%r0,4095(%r1) + lm %r0,%r0,4095(%r15) + #CHECK: lmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x04] #CHECK: lmg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x04] #CHECK: lmg %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x04] @@ -5712,6 +6679,62 @@ lmg %r0,%r0,524287(%r1) lmg %r0,%r0,524287(%r15) +#CHECK: lmh %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x96] +#CHECK: lmh %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x96] +#CHECK: lmh %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x96] +#CHECK: lmh %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x96] +#CHECK: lmh %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x96] +#CHECK: lmh %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x96] +#CHECK: lmh %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x96] +#CHECK: lmh %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x96] +#CHECK: lmh %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x96] +#CHECK: lmh %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x96] +#CHECK: lmh %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x96] +#CHECK: lmh %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x96] +#CHECK: lmh %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x96] + + lmh %r0,%r0,0 + lmh %r0,%r15,0 + lmh %r14,%r15,0 + lmh %r15,%r15,0 + lmh %r0,%r0,-524288 + lmh %r0,%r0,-1 + lmh %r0,%r0,0 + lmh %r0,%r0,1 + lmh %r0,%r0,524287 + lmh %r0,%r0,0(%r1) + lmh %r0,%r0,0(%r15) + lmh %r0,%r0,524287(%r1) + lmh %r0,%r0,524287(%r15) + +#CHECK: lmy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x98] +#CHECK: lmy %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x98] +#CHECK: lmy %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x98] +#CHECK: lmy %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x98] +#CHECK: lmy %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x98] +#CHECK: lmy %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x98] +#CHECK: lmy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x98] +#CHECK: lmy %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x98] +#CHECK: lmy %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x98] +#CHECK: lmy %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x98] +#CHECK: lmy %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x98] +#CHECK: lmy %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x98] +#CHECK: lmy %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x98] + + lmy %r0,%r0,0 + lmy %r0,%r15,0 + lmy %r14,%r15,0 + lmy %r15,%r15,0 + lmy %r0,%r0,-524288 + lmy %r0,%r0,-1 + lmy %r0,%r0,0 + lmy %r0,%r0,1 + lmy %r0,%r0,524287 + lmy %r0,%r0,0(%r1) + lmy %r0,%r0,0(%r15) + lmy %r0,%r0,524287(%r1) + lmy %r0,%r0,524287(%r15) + #CHECK: lndbr %f0, %f9 # encoding: [0xb3,0x11,0x00,0x09] #CHECK: lndbr %f0, %f15 # encoding: [0xb3,0x11,0x00,0x0f] #CHECK: lndbr %f15, %f0 # encoding: [0xb3,0x11,0x00,0xf0] @@ -5879,6 +6902,28 @@ lrl %r7,frob@PLT lrl %r8,frob@PLT +#CHECK: lrvh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1f] +#CHECK: lrvh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1f] +#CHECK: lrvh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1f] +#CHECK: lrvh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1f] +#CHECK: lrvh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1f] +#CHECK: lrvh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1f] +#CHECK: lrvh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1f] +#CHECK: lrvh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1f] +#CHECK: lrvh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1f] +#CHECK: lrvh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1f] + + lrvh %r0,-524288 + lrvh %r0,-1 + lrvh %r0,0 + lrvh %r0,1 + lrvh %r0,524287 + lrvh %r0,0(%r1) + lrvh %r0,0(%r15) + lrvh %r0,524287(%r1,%r15) + lrvh %r0,524287(%r15,%r1) + lrvh %r15,0 + #CHECK: lrv %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1e] #CHECK: lrv %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1e] #CHECK: lrv %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1e] @@ -6931,6 +7976,12 @@ niy 524287(%r1), 42 niy 524287(%r15), 42 +#CHECK: bc 0, 0 # encoding: [0x47,0x00,0x00,0x00] +#CHECK: bcr 0, %r7 # encoding: [0x07,0x07] + + nop 0 + nopr %r7 + #CHECK: nr %r0, %r0 # encoding: [0x14,0x00] #CHECK: nr %r0, %r15 # encoding: [0x14,0x0f] #CHECK: nr %r15, %r0 # encoding: [0x14,0xf0] @@ -7668,6 +8719,24 @@ slgr %r15,%r0 slgr %r7,%r8 +#CHECK: sla %r0, 0 # encoding: [0x8b,0x00,0x00,0x00] +#CHECK: sla %r7, 0 # encoding: [0x8b,0x70,0x00,0x00] +#CHECK: sla %r15, 0 # encoding: [0x8b,0xf0,0x00,0x00] +#CHECK: sla %r0, 4095 # encoding: [0x8b,0x00,0x0f,0xff] +#CHECK: sla %r0, 0(%r1) # encoding: [0x8b,0x00,0x10,0x00] +#CHECK: sla %r0, 0(%r15) # encoding: [0x8b,0x00,0xf0,0x00] +#CHECK: sla %r0, 4095(%r1) # encoding: [0x8b,0x00,0x1f,0xff] +#CHECK: sla %r0, 4095(%r15) # encoding: [0x8b,0x00,0xff,0xff] + + sla %r0,0 + sla %r7,0 + sla %r15,0 + sla %r0,4095 + sla %r0,0(%r1) + sla %r0,0(%r15) + sla %r0,4095(%r1) + sla %r0,4095(%r15) + #CHECK: sll %r0, 0 # encoding: [0x89,0x00,0x00,0x00] #CHECK: sll %r7, 0 # encoding: [0x89,0x70,0x00,0x00] #CHECK: sll %r15, 0 # encoding: [0x89,0xf0,0x00,0x00] @@ -8234,6 +9303,28 @@ sthy %r0, 524287(%r15,%r1) sthy %r15, 0 +#CHECK: stm %r0, %r0, 0 # encoding: [0x90,0x00,0x00,0x00] +#CHECK: stm %r0, %r15, 0 # encoding: [0x90,0x0f,0x00,0x00] +#CHECK: stm %r14, %r15, 0 # encoding: [0x90,0xef,0x00,0x00] +#CHECK: stm %r15, %r15, 0 # encoding: [0x90,0xff,0x00,0x00] +#CHECK: stm %r0, %r0, 4095 # encoding: [0x90,0x00,0x0f,0xff] +#CHECK: stm %r0, %r0, 1 # encoding: [0x90,0x00,0x00,0x01] +#CHECK: stm %r0, %r0, 0(%r1) # encoding: [0x90,0x00,0x10,0x00] +#CHECK: stm %r0, %r0, 0(%r15) # encoding: [0x90,0x00,0xf0,0x00] +#CHECK: stm %r0, %r0, 4095(%r1) # encoding: [0x90,0x00,0x1f,0xff] +#CHECK: stm %r0, %r0, 4095(%r15) # encoding: [0x90,0x00,0xff,0xff] + + stm %r0,%r0,0 + stm %r0,%r15,0 + stm %r14,%r15,0 + stm %r15,%r15,0 + stm %r0,%r0,4095 + stm %r0,%r0,1 + stm %r0,%r0,0(%r1) + stm %r0,%r0,0(%r15) + stm %r0,%r0,4095(%r1) + stm %r0,%r0,4095(%r15) + #CHECK: stmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x24] #CHECK: stmg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x24] #CHECK: stmg %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x24] @@ -8262,6 +9353,62 @@ stmg %r0,%r0,524287(%r1) stmg %r0,%r0,524287(%r15) +#CHECK: stmh %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x26] +#CHECK: stmh %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x26] +#CHECK: stmh %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x26] +#CHECK: stmh %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x26] +#CHECK: stmh %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x26] +#CHECK: stmh %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x26] +#CHECK: stmh %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x26] +#CHECK: stmh %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x26] +#CHECK: stmh %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x26] +#CHECK: stmh %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x26] +#CHECK: stmh %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x26] +#CHECK: stmh %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x26] +#CHECK: stmh %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x26] + + stmh %r0,%r0,0 + stmh %r0,%r15,0 + stmh %r14,%r15,0 + stmh %r15,%r15,0 + stmh %r0,%r0,-524288 + stmh %r0,%r0,-1 + stmh %r0,%r0,0 + stmh %r0,%r0,1 + stmh %r0,%r0,524287 + stmh %r0,%r0,0(%r1) + stmh %r0,%r0,0(%r15) + stmh %r0,%r0,524287(%r1) + stmh %r0,%r0,524287(%r15) + +#CHECK: stmy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x90] +#CHECK: stmy %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x90] +#CHECK: stmy %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x90] +#CHECK: stmy %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x90] +#CHECK: stmy %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x90] +#CHECK: stmy %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x90] +#CHECK: stmy %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x90] +#CHECK: stmy %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x90] +#CHECK: stmy %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x90] +#CHECK: stmy %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x90] +#CHECK: stmy %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x90] +#CHECK: stmy %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x90] +#CHECK: stmy %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x90] + + stmy %r0,%r0,0 + stmy %r0,%r15,0 + stmy %r14,%r15,0 + stmy %r15,%r15,0 + stmy %r0,%r0,-524288 + stmy %r0,%r0,-1 + stmy %r0,%r0,0 + stmy %r0,%r0,1 + stmy %r0,%r0,524287 + stmy %r0,%r0,0(%r1) + stmy %r0,%r0,0(%r15) + stmy %r0,%r0,524287(%r1) + stmy %r0,%r0,524287(%r15) + #CHECK: strl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0f,A,A,A,A] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL strl %r0, -0x100000000 @@ -8299,6 +9446,28 @@ strl %r7,frob@PLT strl %r8,frob@PLT +#CHECK: strvh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x3f] +#CHECK: strvh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x3f] +#CHECK: strvh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x3f] +#CHECK: strvh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x3f] +#CHECK: strvh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x3f] +#CHECK: strvh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x3f] +#CHECK: strvh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x3f] +#CHECK: strvh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x3f] +#CHECK: strvh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x3f] +#CHECK: strvh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x3f] + + strvh %r0,-524288 + strvh %r0,-1 + strvh %r0,0 + strvh %r0,1 + strvh %r0,524287 + strvh %r0,0(%r1) + strvh %r0,0(%r15) + strvh %r0,524287(%r1,%r15) + strvh %r0,524287(%r15,%r1) + strvh %r15,0 + #CHECK: strv %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x3e] #CHECK: strv %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x3e] #CHECK: strv %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x3e] @@ -8343,6 +9512,16 @@ strvg %r0,524287(%r15,%r1) strvg %r15,0 +#CHECK: svc 0 # encoding: [0x0a,0x00] +#CHECK: svc 3 # encoding: [0x0a,0x03] +#CHECK: svc 128 # encoding: [0x0a,0x80] +#CHECK: svc 255 # encoding: [0x0a,0xff] + + svc 0 + svc 3 + svc 128 + svc 0xff + #CHECK: sty %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x50] #CHECK: sty %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x50] #CHECK: sty %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x50] @@ -8397,6 +9576,54 @@ sy %r0, 524287(%r15,%r1) sy %r15, 0 +#CHECK: tcdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x11] +#CHECK: tcdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x11] +#CHECK: tcdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x11] +#CHECK: tcdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x11] +#CHECK: tcdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x11] +#CHECK: tcdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x11] +#CHECK: tcdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x11] + + tcdb %f0, 0 + tcdb %f0, 4095 + tcdb %f0, 0(%r1) + tcdb %f0, 0(%r15) + tcdb %f0, 4095(%r1,%r15) + tcdb %f0, 4095(%r15,%r1) + tcdb %f15, 0 + +#CHECK: tceb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x10] +#CHECK: tceb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x10] +#CHECK: tceb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x10] +#CHECK: tceb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x10] +#CHECK: tceb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x10] +#CHECK: tceb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x10] +#CHECK: tceb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x10] + + tceb %f0, 0 + tceb %f0, 4095 + tceb %f0, 0(%r1) + tceb %f0, 0(%r15) + tceb %f0, 4095(%r1,%r15) + tceb %f0, 4095(%r15,%r1) + tceb %f15, 0 + +#CHECK: tcxb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x12] +#CHECK: tcxb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x12] +#CHECK: tcxb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x12] +#CHECK: tcxb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x12] +#CHECK: tcxb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x12] +#CHECK: tcxb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x12] +#CHECK: tcxb %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0x00,0x12] + + tcxb %f0, 0 + tcxb %f0, 4095 + tcxb %f0, 0(%r1) + tcxb %f0, 0(%r15) + tcxb %f0, 4095(%r1,%r15) + tcxb %f0, 4095(%r15,%r1) + tcxb %f13, 0 + #CHECK: tm 0, 0 # encoding: [0x91,0x00,0x00,0x00] #CHECK: tm 4095, 0 # encoding: [0x91,0x00,0x0f,0xff] #CHECK: tm 0, 255 # encoding: [0x91,0xff,0x00,0x00] @@ -8438,6 +9665,16 @@ #CHECK: tmlh %r0, 65535 # encoding: [0xa7,0x00,0xff,0xff] #CHECK: tmlh %r15, 0 # encoding: [0xa7,0xf0,0x00,0x00] + tmh %r0, 0 + tmh %r0, 0x8000 + tmh %r0, 0xffff + tmh %r15, 0 + +#CHECK: tmlh %r0, 0 # encoding: [0xa7,0x00,0x00,0x00] +#CHECK: tmlh %r0, 32768 # encoding: [0xa7,0x00,0x80,0x00] +#CHECK: tmlh %r0, 65535 # encoding: [0xa7,0x00,0xff,0xff] +#CHECK: tmlh %r15, 0 # encoding: [0xa7,0xf0,0x00,0x00] + tmlh %r0, 0 tmlh %r0, 0x8000 tmlh %r0, 0xffff @@ -8448,6 +9685,16 @@ #CHECK: tmll %r0, 65535 # encoding: [0xa7,0x01,0xff,0xff] #CHECK: tmll %r15, 0 # encoding: [0xa7,0xf1,0x00,0x00] + tml %r0, 0 + tml %r0, 0x8000 + tml %r0, 0xffff + tml %r15, 0 + +#CHECK: tmll %r0, 0 # encoding: [0xa7,0x01,0x00,0x00] +#CHECK: tmll %r0, 32768 # encoding: [0xa7,0x01,0x80,0x00] +#CHECK: tmll %r0, 65535 # encoding: [0xa7,0x01,0xff,0xff] +#CHECK: tmll %r15, 0 # encoding: [0xa7,0xf1,0x00,0x00] + tmll %r0, 0 tmll %r0, 0x8000 tmll %r0, 0xffff diff --git a/test/MC/SystemZ/word.s b/test/MC/SystemZ/word.s new file mode 100644 index 000000000000..70f009a1e856 --- /dev/null +++ b/test/MC/SystemZ/word.s @@ -0,0 +1,24 @@ +# RUN: llvm-mc -triple s390x-linux-gnu -filetype=obj %s | \ +# RUN: llvm-readobj -s -sd | FileCheck %s + +.section word, "aw" +.word 0xabcd + +# CHECK: Section { +# CHECK: Name: word +# CHECK-NEXT: Type: SHT_PROGBITS +# CHECK-NEXT: Flags [ +# CHECK-NEXT: SHF_ALLOC +# CHECK-NEXT: SHF_WRITE +# CHECK-NEXT: ] +# CHECK-NEXT: Address: 0x0 +# CHECK-NEXT: Offset: +# CHECK-NEXT: Size: 2 +# CHECK-NEXT: Link: 0 +# CHECK-NEXT: Info: 0 +# CHECK-NEXT: AddressAlignment: +# CHECK-NEXT: EntrySize: 0 +# CHECK-NEXT: SectionData ( +# CHECK-NEXT: 0000: ABCD +# CHECK-NEXT: ) +# CHECK-NEXT: } diff --git a/test/MC/X86/avx512-encodings.s b/test/MC/X86/avx512-encodings.s index 7191058692eb..fc224d0555b6 100644 --- a/test/MC/X86/avx512-encodings.s +++ b/test/MC/X86/avx512-encodings.s @@ -6416,29 +6416,29 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2 // CHECK: encoding: [0x62,0xb1,0x56,0x78,0x58,0xfb] vaddss {rz-sae}, %xmm19, %xmm5, %xmm7 -// CHECK: vaddss (%rcx), %xmm5, %xmm7 -// CHECK: encoding: [0x62,0xf1,0x56,0x08,0x58,0x39] - vaddss (%rcx), %xmm5, %xmm7 +// CHECK: vaddss (%rcx), %xmm25, %xmm7 +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x58,0x39] + vaddss (%rcx), %xmm25, %xmm7 -// CHECK: vaddss 291(%rax,%r14,8), %xmm5, %xmm7 -// CHECK: encoding: [0x62,0xb1,0x56,0x08,0x58,0xbc,0xf0,0x23,0x01,0x00,0x00] - vaddss 291(%rax,%r14,8), %xmm5, %xmm7 +// CHECK: vaddss 291(%rax,%r14,8), %xmm25, %xmm7 +// CHECK: encoding: [0x62,0xb1,0x36,0x00,0x58,0xbc,0xf0,0x23,0x01,0x00,0x00] + vaddss 291(%rax,%r14,8), %xmm25, %xmm7 -// CHECK: vaddss 508(%rdx), %xmm5, %xmm7 -// CHECK: encoding: [0x62,0xf1,0x56,0x08,0x58,0x7a,0x7f] - vaddss 508(%rdx), %xmm5, %xmm7 +// CHECK: vaddss 508(%rdx), %xmm25, %xmm7 +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x58,0x7a,0x7f] + vaddss 508(%rdx), %xmm25, %xmm7 -// CHECK: vaddss 512(%rdx), %xmm5, %xmm7 -// CHECK: encoding: [0x62,0xf1,0x56,0x08,0x58,0xba,0x00,0x02,0x00,0x00] - vaddss 512(%rdx), %xmm5, %xmm7 +// CHECK: vaddss 512(%rdx), %xmm25, %xmm7 +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x58,0xba,0x00,0x02,0x00,0x00] + vaddss 512(%rdx), %xmm25, %xmm7 -// CHECK: vaddss -512(%rdx), %xmm5, %xmm7 -// CHECK: encoding: [0x62,0xf1,0x56,0x08,0x58,0x7a,0x80] - vaddss -512(%rdx), %xmm5, %xmm7 +// CHECK: vaddss -512(%rdx), %xmm25, %xmm7 +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x58,0x7a,0x80] + vaddss -512(%rdx), %xmm25, %xmm7 -// CHECK: vaddss -516(%rdx), %xmm5, %xmm7 -// CHECK: encoding: [0x62,0xf1,0x56,0x08,0x58,0xba,0xfc,0xfd,0xff,0xff] - vaddss -516(%rdx), %xmm5, %xmm7 +// CHECK: vaddss -516(%rdx), %xmm25, %xmm7 +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x58,0xba,0xfc,0xfd,0xff,0xff] + vaddss -516(%rdx), %xmm25, %xmm7 // CHECK: vdivpd {rn-sae}, %zmm11, %zmm6, %zmm18 // CHECK: encoding: [0x62,0xc1,0xcd,0x18,0x5e,0xd3] @@ -6640,29 +6640,29 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2 // CHECK: encoding: [0x62,0x71,0x5e,0x18,0x5f,0xc6] vmaxss {sae}, %xmm6, %xmm4, %xmm8 -// CHECK: vmaxss (%rcx), %xmm4, %xmm8 -// CHECK: encoding: [0x62,0x71,0x5e,0x08,0x5f,0x01] - vmaxss (%rcx), %xmm4, %xmm8 +// CHECK: vmaxss (%rcx), %xmm4, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x5e,0x08,0x5f,0x11] + vmaxss (%rcx), %xmm4, %xmm18 -// CHECK: vmaxss 291(%rax,%r14,8), %xmm4, %xmm8 -// CHECK: encoding: [0x62,0x31,0x5e,0x08,0x5f,0x84,0xf0,0x23,0x01,0x00,0x00] - vmaxss 291(%rax,%r14,8), %xmm4, %xmm8 +// CHECK: vmaxss 291(%rax,%r14,8), %xmm4, %xmm18 +// CHECK: encoding: [0x62,0xa1,0x5e,0x08,0x5f,0x94,0xf0,0x23,0x01,0x00,0x00] + vmaxss 291(%rax,%r14,8), %xmm4, %xmm18 -// CHECK: vmaxss 508(%rdx), %xmm4, %xmm8 -// CHECK: encoding: [0x62,0x71,0x5e,0x08,0x5f,0x42,0x7f] - vmaxss 508(%rdx), %xmm4, %xmm8 +// CHECK: vmaxss 508(%rdx), %xmm4, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x5e,0x08,0x5f,0x52,0x7f] + vmaxss 508(%rdx), %xmm4, %xmm18 -// CHECK: vmaxss 512(%rdx), %xmm4, %xmm8 -// CHECK: encoding: [0x62,0x71,0x5e,0x08,0x5f,0x82,0x00,0x02,0x00,0x00] - vmaxss 512(%rdx), %xmm4, %xmm8 +// CHECK: vmaxss 512(%rdx), %xmm4, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x5e,0x08,0x5f,0x92,0x00,0x02,0x00,0x00] + vmaxss 512(%rdx), %xmm4, %xmm18 -// CHECK: vmaxss -512(%rdx), %xmm4, %xmm8 -// CHECK: encoding: [0x62,0x71,0x5e,0x08,0x5f,0x42,0x80] - vmaxss -512(%rdx), %xmm4, %xmm8 +// CHECK: vmaxss -512(%rdx), %xmm4, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x5e,0x08,0x5f,0x52,0x80] + vmaxss -512(%rdx), %xmm4, %xmm18 -// CHECK: vmaxss -516(%rdx), %xmm4, %xmm8 -// CHECK: encoding: [0x62,0x71,0x5e,0x08,0x5f,0x82,0xfc,0xfd,0xff,0xff] - vmaxss -516(%rdx), %xmm4, %xmm8 +// CHECK: vmaxss -516(%rdx), %xmm4, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x5e,0x08,0x5f,0x92,0xfc,0xfd,0xff,0xff] + vmaxss -516(%rdx), %xmm4, %xmm18 // CHECK: vminpd {sae}, %zmm22, %zmm6, %zmm6 // CHECK: encoding: [0x62,0xb1,0xcd,0x18,0x5d,0xf6] @@ -6812,29 +6812,29 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2 // CHECK: encoding: [0x62,0x31,0xdf,0x78,0x59,0xea] vmulsd {rz-sae}, %xmm18, %xmm4, %xmm13 -// CHECK: vmulsd (%rcx), %xmm4, %xmm13 -// CHECK: encoding: [0x62,0x71,0xdf,0x08,0x59,0x29] - vmulsd (%rcx), %xmm4, %xmm13 +// CHECK: vmulsd (%rcx), %xmm4, %xmm23 +// CHECK: encoding: [0x62,0xe1,0xdf,0x08,0x59,0x39] + vmulsd (%rcx), %xmm4, %xmm23 -// CHECK: vmulsd 291(%rax,%r14,8), %xmm4, %xmm13 -// CHECK: encoding: [0x62,0x31,0xdf,0x08,0x59,0xac,0xf0,0x23,0x01,0x00,0x00] - vmulsd 291(%rax,%r14,8), %xmm4, %xmm13 +// CHECK: vmulsd 291(%rax,%r14,8), %xmm4, %xmm23 +// CHECK: encoding: [0x62,0xa1,0xdf,0x08,0x59,0xbc,0xf0,0x23,0x01,0x00,0x00] + vmulsd 291(%rax,%r14,8), %xmm4, %xmm23 -// CHECK: vmulsd 1016(%rdx), %xmm4, %xmm13 -// CHECK: encoding: [0x62,0x71,0xdf,0x08,0x59,0x6a,0x7f] - vmulsd 1016(%rdx), %xmm4, %xmm13 +// CHECK: vmulsd 1016(%rdx), %xmm4, %xmm23 +// CHECK: encoding: [0x62,0xe1,0xdf,0x08,0x59,0x7a,0x7f] + vmulsd 1016(%rdx), %xmm4, %xmm23 -// CHECK: vmulsd 1024(%rdx), %xmm4, %xmm13 -// CHECK: encoding: [0x62,0x71,0xdf,0x08,0x59,0xaa,0x00,0x04,0x00,0x00] - vmulsd 1024(%rdx), %xmm4, %xmm13 +// CHECK: vmulsd 1024(%rdx), %xmm4, %xmm23 +// CHECK: encoding: [0x62,0xe1,0xdf,0x08,0x59,0xba,0x00,0x04,0x00,0x00] + vmulsd 1024(%rdx), %xmm4, %xmm23 -// CHECK: vmulsd -1024(%rdx), %xmm4, %xmm13 -// CHECK: encoding: [0x62,0x71,0xdf,0x08,0x59,0x6a,0x80] - vmulsd -1024(%rdx), %xmm4, %xmm13 +// CHECK: vmulsd -1024(%rdx), %xmm4, %xmm23 +// CHECK: encoding: [0x62,0xe1,0xdf,0x08,0x59,0x7a,0x80] + vmulsd -1024(%rdx), %xmm4, %xmm23 -// CHECK: vmulsd -1032(%rdx), %xmm4, %xmm13 -// CHECK: encoding: [0x62,0x71,0xdf,0x08,0x59,0xaa,0xf8,0xfb,0xff,0xff] - vmulsd -1032(%rdx), %xmm4, %xmm13 +// CHECK: vmulsd -1032(%rdx), %xmm4, %xmm23 +// CHECK: encoding: [0x62,0xe1,0xdf,0x08,0x59,0xba,0xf8,0xfb,0xff,0xff] + vmulsd -1032(%rdx), %xmm4, %xmm23 // CHECK: vmulss %xmm14, %xmm10, %xmm22 // CHECK: encoding: [0x62,0xc1,0x2e,0x08,0x59,0xf6] @@ -19275,3 +19275,211 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2 // CHECK: vmovss %xmm24, %xmm27, %xmm15 {%k2} {z} // CHECK: encoding: [0x62,0x11,0x26,0x82,0x10,0xf8] vmovss %xmm24, %xmm27, %xmm15 {%k2} {z} + +//CHECK: vcmpeqpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x00] + vcmpeq_oqpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpeqpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x00] + vcmpeq_oqpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpeqpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x00] + vcmpeq_oqpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpeqpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x00] + vcmpeq_oqpd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpltpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x01] + vcmplt_ospd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpltpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x01] + vcmplt_ospd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpltpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x01] + vcmplt_ospd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpltpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x01] + vcmplt_ospd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmplepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x02] + vcmple_ospd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmplepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x02] + vcmple_ospd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmplepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x02] + vcmple_ospd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmplepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x02 + vcmple_ospd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpunordpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x03] + vcmpunord_qpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpunordpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x03] + vcmpunord_qpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpunordpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x03] + vcmpunord_qpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpunordpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x03] + vcmpunord_qpd -1024(%rdx){1to8}, %zmm30, %k5 + + //CHECK: vcmpneqpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x04] + vcmpneq_uqpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpneqpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x04] + vcmpneq_uqpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpneqpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x04] + vcmpneq_uqpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpneqpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x04] + vcmpneq_uqpd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpnltpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x05] + vcmpnlt_uspd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpnltpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x05] + vcmpnlt_uspd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpnltpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x05] + vcmpnlt_uspd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpnltpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x05] + vcmpnlt_uspd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpnlepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x06] + vcmpnle_uspd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpnlepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x06] + vcmpnle_uspd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpnlepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x06] + vcmpnle_uspd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpnlepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x06] + vcmpnle_uspd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpordpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x07] + vcmpord_qpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpordpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x07] + vcmpord_qpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpordpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x07] + vcmpord_qpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpordpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x07] + vcmpord_qpd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpngepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x09] + vcmpnge_uspd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpngepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x09] + vcmpnge_uspd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpngepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x09] + vcmpnge_uspd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpngepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x09] + vcmpnge_uspd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpfalsepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x0b] + vcmpfalse_oqpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpfalsepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x0b] + vcmpfalse_oqpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpfalsepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x0b] + vcmpfalse_oqpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpfalsepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x0b] + vcmpfalse_oqpd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpgepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x0d] + vcmpge_ospd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpgepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x0d] + vcmpge_ospd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpgepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x0d] + vcmpge_ospd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpgepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x0d] + vcmpge_ospd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpgtpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x0e] + vcmpgt_ospd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpgtpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x0e] + vcmpgt_ospd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpgtpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x0e] + vcmpgt_ospd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpgtpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x0e] + vcmpgt_ospd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmptruepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x0f] + vcmptrue_uqpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmptruepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x0f] + vcmptrue_uqpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmptruepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x0f] + vcmptrue_uqpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmptruepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x0f] + vcmptrue_uqpd -1024(%rdx){1to8}, %zmm30, %k5 diff --git a/test/MC/X86/avx512ifma-encoding.s b/test/MC/X86/avx512ifma-encoding.s new file mode 100644 index 000000000000..644fd1dd02c0 --- /dev/null +++ b/test/MC/X86/avx512ifma-encoding.s @@ -0,0 +1,145 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=knl -mattr=+avx512ifma --show-encoding %s | FileCheck %s + + vpmadd52luq %zmm4, %zmm5, %zmm6 +//CHECK: vpmadd52luq %zmm4, %zmm5, %zmm6 +//CHECK: encoding: [0x62,0xf2,0xd5,0x48,0xb4,0xf4] + + vpmadd52luq %zmm4, %zmm5, %zmm6 {%k7} +//CHECK: vpmadd52luq %zmm4, %zmm5, %zmm6 {%k7} +//CHECK: encoding: [0x62,0xf2,0xd5,0x4f,0xb4,0xf4] + + vpmadd52luq %zmm4, %zmm5, %zmm6 {%k7} {z} +//CHECK: vpmadd52luq %zmm4, %zmm5, %zmm6 {%k7} {z} +//CHECK: encoding: [0x62,0xf2,0xd5,0xcf,0xb4,0xf4] + + vpmadd52luq %zmm28, %zmm29, %zmm30 +//CHECK: vpmadd52luq %zmm28, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x02,0x95,0x40,0xb4,0xf4] + + vpmadd52luq %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: vpmadd52luq %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x47,0xb4,0xf4] + + vpmadd52luq %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: vpmadd52luq %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0xc7,0xb4,0xf4] + + vpmadd52luq (%rcx), %zmm29, %zmm30 +//CHECK: vpmadd52luq (%rcx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb4,0x31] + + vpmadd52luq 0x123(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpmadd52luq 291(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x40,0xb4,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmadd52luq (%rcx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52luq (%rcx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb4,0x31] + + vpmadd52luq 0x1fc0(%rdx), %zmm29, %zmm30 +//CHECK: vpmadd52luq 8128(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb4,0x72,0x7f] + + vpmadd52luq 0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpmadd52luq 8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb4,0xb2,0x00,0x20,0x00,0x00] + + vpmadd52luq -0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpmadd52luq -8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb4,0x72,0x80] + + vpmadd52luq -0x2040(%rdx), %zmm29, %zmm30 +//CHECK: vpmadd52luq -8256(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb4,0xb2,0xc0,0xdf,0xff,0xff] + + vpmadd52luq 0x3f8(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52luq 1016(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb4,0x72,0x7f] + + vpmadd52luq 0x400(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52luq 1024(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb4,0xb2,0x00,0x04,0x00,0x00] + + vpmadd52luq -0x400(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52luq -1024(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb4,0x72,0x80] + + vpmadd52luq -0x408(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52luq -1032(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb4,0xb2,0xf8,0xfb,0xff,0xff] + + vpmadd52luq 0x1234(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpmadd52luq 4660(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x40,0xb4,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpmadd52huq %zmm4, %zmm5, %zmm6 +//CHECK: vpmadd52huq %zmm4, %zmm5, %zmm6 +//CHECK: encoding: [0x62,0xf2,0xd5,0x48,0xb5,0xf4] + + vpmadd52huq %zmm4, %zmm5, %zmm6 {%k7} +//CHECK: vpmadd52huq %zmm4, %zmm5, %zmm6 {%k7} +//CHECK: encoding: [0x62,0xf2,0xd5,0x4f,0xb5,0xf4] + + vpmadd52huq %zmm4, %zmm5, %zmm6 {%k7} {z} +//CHECK: vpmadd52huq %zmm4, %zmm5, %zmm6 {%k7} {z} +//CHECK: encoding: [0x62,0xf2,0xd5,0xcf,0xb5,0xf4] + + vpmadd52huq %zmm28, %zmm29, %zmm30 +//CHECK: vpmadd52huq %zmm28, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x02,0x95,0x40,0xb5,0xf4] + + vpmadd52huq %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: vpmadd52huq %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x47,0xb5,0xf4] + + vpmadd52huq %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: vpmadd52huq %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0xc7,0xb5,0xf4] + + vpmadd52huq (%rcx), %zmm29, %zmm30 +//CHECK: vpmadd52huq (%rcx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb5,0x31] + + vpmadd52huq 0x123(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpmadd52huq 291(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x40,0xb5,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmadd52huq (%rcx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52huq (%rcx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb5,0x31] + + vpmadd52huq 0x1fc0(%rdx), %zmm29, %zmm30 +//CHECK: vpmadd52huq 8128(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb5,0x72,0x7f] + + vpmadd52huq 0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpmadd52huq 8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb5,0xb2,0x00,0x20,0x00,0x00] + + vpmadd52huq -0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpmadd52huq -8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb5,0x72,0x80] + + vpmadd52huq -0x2040(%rdx), %zmm29, %zmm30 +//CHECK: vpmadd52huq -8256(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0xb5,0xb2,0xc0,0xdf,0xff,0xff] + + vpmadd52huq 0x3f8(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52huq 1016(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb5,0x72,0x7f] + + vpmadd52huq 0x400(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52huq 1024(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb5,0xb2,0x00,0x04,0x00,0x00] + + vpmadd52huq -0x400(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52huq -1024(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb5,0x72,0x80] + + vpmadd52huq -0x408(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmadd52huq -1032(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0xb5,0xb2,0xf8,0xfb,0xff,0xff] + + vpmadd52huq 0x1234(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpmadd52huq 4660(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x40,0xb5,0xb4,0xf0,0x34,0x12,0x00,0x00] diff --git a/test/MC/X86/avx512ifmavl-encoding.s b/test/MC/X86/avx512ifmavl-encoding.s new file mode 100644 index 000000000000..1620772df3eb --- /dev/null +++ b/test/MC/X86/avx512ifmavl-encoding.s @@ -0,0 +1,274 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=knl -mattr=+avx512ifma -mattr=+avx512vl --show-encoding %s | FileCheck %s + + vpmadd52luq %xmm4, %xmm5, %xmm6 {%k7} +//CHECK: vpmadd52luq %xmm4, %xmm5, %xmm6 {%k7} +//CHECK: encoding: [0x62,0xf2,0xd5,0x0f,0xb4,0xf4] + + vpmadd52luq %xmm4, %xmm5, %xmm6 {%k7} {z} +//CHECK: vpmadd52luq %xmm4, %xmm5, %xmm6 {%k7} {z} +//CHECK: encoding: [0x62,0xf2,0xd5,0x8f,0xb4,0xf4] + + vpmadd52luq %ymm4, %ymm5, %ymm6 {%k7} +//CHECK: vpmadd52luq %ymm4, %ymm5, %ymm6 {%k7} +//CHECK: encoding: [0x62,0xf2,0xd5,0x2f,0xb4,0xf4] + + vpmadd52luq %ymm4, %ymm5, %ymm6 {%k7} {z} +//CHECK: vpmadd52luq %ymm4, %ymm5, %ymm6 {%k7} {z} +//CHECK: encoding: [0x62,0xf2,0xd5,0xaf,0xb4,0xf4] + + vpmadd52luq %xmm28, %xmm29, %xmm30 +//CHECK: vpmadd52luq %xmm28, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x02,0x95,0x00,0xb4,0xf4] + + vpmadd52luq %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: vpmadd52luq %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x07,0xb4,0xf4] + + vpmadd52luq %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: vpmadd52luq %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0x87,0xb4,0xf4] + + vpmadd52luq (%rcx), %xmm29, %xmm30 +//CHECK: vpmadd52luq (%rcx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb4,0x31] + + vpmadd52luq 0x123(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpmadd52luq 291(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x00,0xb4,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmadd52luq (%rcx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52luq (%rcx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb4,0x31] + + vpmadd52luq 0x7f0(%rdx), %xmm29, %xmm30 +//CHECK: vpmadd52luq 2032(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb4,0x72,0x7f] + + vpmadd52luq 0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpmadd52luq 2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb4,0xb2,0x00,0x08,0x00,0x00] + + vpmadd52luq -0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpmadd52luq -2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb4,0x72,0x80] + + vpmadd52luq -0x810(%rdx), %xmm29, %xmm30 +//CHECK: vpmadd52luq -2064(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb4,0xb2,0xf0,0xf7,0xff,0xff] + + vpmadd52luq 0x3f8(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52luq 1016(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb4,0x72,0x7f] + + vpmadd52luq 0x400(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52luq 1024(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb4,0xb2,0x00,0x04,0x00,0x00] + + vpmadd52luq -0x400(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52luq -1024(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb4,0x72,0x80] + + vpmadd52luq -0x408(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52luq -1032(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb4,0xb2,0xf8,0xfb,0xff,0xff] + + vpmadd52luq %ymm28, %ymm29, %ymm30 +//CHECK: vpmadd52luq %ymm28, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x02,0x95,0x20,0xb4,0xf4] + + vpmadd52luq %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: vpmadd52luq %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x27,0xb4,0xf4] + + vpmadd52luq %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: vpmadd52luq %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0xa7,0xb4,0xf4] + + vpmadd52luq (%rcx), %ymm29, %ymm30 +//CHECK: vpmadd52luq (%rcx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb4,0x31] + + vpmadd52luq 0x123(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpmadd52luq 291(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x95,0x20,0xb4,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmadd52luq (%rcx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52luq (%rcx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb4,0x31] + + vpmadd52luq 0xfe0(%rdx), %ymm29, %ymm30 +//CHECK: vpmadd52luq 4064(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb4,0x72,0x7f] + + vpmadd52luq 0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpmadd52luq 4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb4,0xb2,0x00,0x10,0x00,0x00] + + vpmadd52luq -0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpmadd52luq -4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb4,0x72,0x80] + + vpmadd52luq -0x1020(%rdx), %ymm29, %ymm30 +//CHECK: vpmadd52luq -4128(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb4,0xb2,0xe0,0xef,0xff,0xff] + + vpmadd52luq 0x3f8(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52luq 1016(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb4,0x72,0x7f] + + vpmadd52luq 0x400(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52luq 1024(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb4,0xb2,0x00,0x04,0x00,0x00] + + vpmadd52luq -0x400(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52luq -1024(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb4,0x72,0x80] + + vpmadd52luq -0x408(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52luq -1032(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb4,0xb2,0xf8,0xfb,0xff,0xff] + + vpmadd52luq 0x1234(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpmadd52luq 4660(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x00,0xb4,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpmadd52luq 0x1234(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpmadd52luq 4660(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x95,0x20,0xb4,0xb4,0xf0,0x34,0x12,0x00,0x00] + +vpmadd52huq %xmm4, %xmm5, %xmm6 {%k7} +//CHECK: vpmadd52huq %xmm4, %xmm5, %xmm6 {%k7} +//CHECK: encoding: [0x62,0xf2,0xd5,0x0f,0xb5,0xf4] + + vpmadd52huq %xmm4, %xmm5, %xmm6 {%k7} {z} +//CHECK: vpmadd52huq %xmm4, %xmm5, %xmm6 {%k7} {z} +//CHECK: encoding: [0x62,0xf2,0xd5,0x8f,0xb5,0xf4] + + vpmadd52huq %ymm4, %ymm5, %ymm6 {%k7} +//CHECK: vpmadd52huq %ymm4, %ymm5, %ymm6 {%k7} +//CHECK: encoding: [0x62,0xf2,0xd5,0x2f,0xb5,0xf4] + + vpmadd52huq %ymm4, %ymm5, %ymm6 {%k7} {z} +//CHECK: vpmadd52huq %ymm4, %ymm5, %ymm6 {%k7} {z} +//CHECK: encoding: [0x62,0xf2,0xd5,0xaf,0xb5,0xf4] + + vpmadd52huq %xmm28, %xmm29, %xmm30 +//CHECK: vpmadd52huq %xmm28, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x02,0x95,0x00,0xb5,0xf4] + + vpmadd52huq %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: vpmadd52huq %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x07,0xb5,0xf4] + + vpmadd52huq %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: vpmadd52huq %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0x87,0xb5,0xf4] + + vpmadd52huq (%rcx), %xmm29, %xmm30 +//CHECK: vpmadd52huq (%rcx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb5,0x31] + + vpmadd52huq 0x123(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpmadd52huq 291(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x00,0xb5,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmadd52huq (%rcx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52huq (%rcx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb5,0x31] + + vpmadd52huq 0x7f0(%rdx), %xmm29, %xmm30 +//CHECK: vpmadd52huq 2032(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb5,0x72,0x7f] + + vpmadd52huq 0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpmadd52huq 2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb5,0xb2,0x00,0x08,0x00,0x00] + + vpmadd52huq -0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpmadd52huq -2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb5,0x72,0x80] + + vpmadd52huq -0x810(%rdx), %xmm29, %xmm30 +//CHECK: vpmadd52huq -2064(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0xb5,0xb2,0xf0,0xf7,0xff,0xff] + + vpmadd52huq 0x3f8(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52huq 1016(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb5,0x72,0x7f] + + vpmadd52huq 0x400(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52huq 1024(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb5,0xb2,0x00,0x04,0x00,0x00] + + vpmadd52huq -0x400(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52huq -1024(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb5,0x72,0x80] + + vpmadd52huq -0x408(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmadd52huq -1032(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0xb5,0xb2,0xf8,0xfb,0xff,0xff] + + vpmadd52huq %ymm28, %ymm29, %ymm30 +//CHECK: vpmadd52huq %ymm28, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x02,0x95,0x20,0xb5,0xf4] + + vpmadd52huq %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: vpmadd52huq %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x27,0xb5,0xf4] + + vpmadd52huq %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: vpmadd52huq %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0xa7,0xb5,0xf4] + + vpmadd52huq (%rcx), %ymm29, %ymm30 +//CHECK: vpmadd52huq (%rcx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb5,0x31] + + vpmadd52huq 0x123(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpmadd52huq 291(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x95,0x20,0xb5,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmadd52huq (%rcx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52huq (%rcx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb5,0x31] + + vpmadd52huq 0xfe0(%rdx), %ymm29, %ymm30 +//CHECK: vpmadd52huq 4064(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb5,0x72,0x7f] + + vpmadd52huq 0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpmadd52huq 4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb5,0xb2,0x00,0x10,0x00,0x00] + + vpmadd52huq -0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpmadd52huq -4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb5,0x72,0x80] + + vpmadd52huq -0x1020(%rdx), %ymm29, %ymm30 +//CHECK: vpmadd52huq -4128(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0xb5,0xb2,0xe0,0xef,0xff,0xff] + + vpmadd52huq 0x3f8(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52huq 1016(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb5,0x72,0x7f] + + vpmadd52huq 0x400(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52huq 1024(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb5,0xb2,0x00,0x04,0x00,0x00] + + vpmadd52huq -0x400(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52huq -1024(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb5,0x72,0x80] + + vpmadd52huq -0x408(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmadd52huq -1032(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0xb5,0xb2,0xf8,0xfb,0xff,0xff] + + vpmadd52huq 0x1234(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpmadd52huq 4660(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x00,0xb5,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpmadd52huq 0x1234(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpmadd52huq 4660(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x95,0x20,0xb5,0xb4,0xf0,0x34,0x12,0x00,0x00] + diff --git a/test/MC/X86/avx512vbmi-encoding.s b/test/MC/X86/avx512vbmi-encoding.s new file mode 100644 index 000000000000..040947301d68 --- /dev/null +++ b/test/MC/X86/avx512vbmi-encoding.s @@ -0,0 +1,543 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=skx -mattr=+avx512vl -mattr=+avx512vbmi --show-encoding %s | FileCheck %s + + vpermb %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: vpermb %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x07,0x8d,0xf4] + + vpermb %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: vpermb %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0x87,0x8d,0xf4] + + vpermb (%rcx), %xmm29, %xmm30 +//CHECK: vpermb (%rcx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x8d,0x31] + + vpermb 0x123(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpermb 291(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x00,0x8d,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermb 0x7f0(%rdx), %xmm29, %xmm30 +//CHECK: vpermb 2032(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x8d,0x72,0x7f] + + vpermb 0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpermb 2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x8d,0xb2,0x00,0x08,0x00,0x00] + + vpermb -0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpermb -2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x8d,0x72,0x80] + + vpermb -0x810(%rdx), %xmm29, %xmm30 +//CHECK: vpermb -2064(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x8d,0xb2,0xf0,0xf7,0xff,0xff] + + vpermb %ymm28, %ymm29, %ymm30 +//CHECK: vpermb %ymm28, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x02,0x15,0x20,0x8d,0xf4] + + vpermb %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: vpermb %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x27,0x8d,0xf4] + + vpermb %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: vpermb %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0xa7,0x8d,0xf4] + + vpermb (%rcx), %ymm29, %ymm30 +//CHECK: vpermb (%rcx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x8d,0x31] + + vpermb 0x123(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpermb 291(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x15,0x20,0x8d,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermb 0xfe0(%rdx), %ymm29, %ymm30 +//CHECK: vpermb 4064(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x8d,0x72,0x7f] + + vpermb 0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpermb 4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x8d,0xb2,0x00,0x10,0x00,0x00] + + vpermb -0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpermb -4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x8d,0x72,0x80] + + vpermb -0x1020(%rdx), %ymm29, %ymm30 +//CHECK: vpermb -4128(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x8d,0xb2,0xe0,0xef,0xff,0xff] + + vpermb %xmm28, %xmm29, %xmm30 +//CHECK: vpermb %xmm28, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x02,0x15,0x00,0x8d,0xf4] + + vpermb 0x1234(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpermb 4660(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x00,0x8d,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpermb 0x1234(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpermb 4660(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x15,0x20,0x8d,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpermb %zmm28, %zmm29, %zmm30 +//CHECK: vpermb %zmm28, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x02,0x15,0x40,0x8d,0xf4] + + vpermb %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: vpermb %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x47,0x8d,0xf4] + + vpermb %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: vpermb %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0xc7,0x8d,0xf4] + + vpermb (%rcx), %zmm29, %zmm30 +//CHECK: vpermb (%rcx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x8d,0x31] + + vpermb 0x123(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpermb 291(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x40,0x8d,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermb 0x1fc0(%rdx), %zmm29, %zmm30 +//CHECK: vpermb 8128(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x8d,0x72,0x7f] + + vpermb 0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpermb 8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x8d,0xb2,0x00,0x20,0x00,0x00] + + vpermb -0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpermb -8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x8d,0x72,0x80] + + vpermb -0x2040(%rdx), %zmm29, %zmm30 +//CHECK: vpermb -8256(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x8d,0xb2,0xc0,0xdf,0xff,0xff] + + vpermb 0x1234(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpermb 4660(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x40,0x8d,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpermt2b %xmm28, %xmm29, %xmm30 +//CHECK: vpermt2b %xmm28, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x02,0x15,0x00,0x7d,0xf4] + + vpermt2b %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: vpermt2b %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x07,0x7d,0xf4] + + vpermt2b %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: vpermt2b %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0x87,0x7d,0xf4] + + vpermt2b (%rcx), %xmm29, %xmm30 +//CHECK: vpermt2b (%rcx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x7d,0x31] + + vpermt2b 0x123(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpermt2b 291(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x00,0x7d,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermt2b 0x7f0(%rdx), %xmm29, %xmm30 +//CHECK: vpermt2b 2032(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x7d,0x72,0x7f] + + vpermt2b 0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpermt2b 2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x7d,0xb2,0x00,0x08,0x00,0x00] + + vpermt2b -0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpermt2b -2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x7d,0x72,0x80] + + vpermt2b -0x810(%rdx), %xmm29, %xmm30 +//CHECK: vpermt2b -2064(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x7d,0xb2,0xf0,0xf7,0xff,0xff] + + vpermt2b %ymm28, %ymm29, %ymm30 +//CHECK: vpermt2b %ymm28, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x02,0x15,0x20,0x7d,0xf4] + + vpermt2b %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: vpermt2b %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x27,0x7d,0xf4] + + vpermt2b %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: vpermt2b %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0xa7,0x7d,0xf4] + + vpermt2b (%rcx), %ymm29, %ymm30 +//CHECK: vpermt2b (%rcx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x7d,0x31] + + vpermt2b 0x123(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpermt2b 291(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x15,0x20,0x7d,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermt2b 0xfe0(%rdx), %ymm29, %ymm30 +//CHECK: vpermt2b 4064(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x7d,0x72,0x7f] + + vpermt2b 0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpermt2b 4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x7d,0xb2,0x00,0x10,0x00,0x00] + + vpermt2b -0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpermt2b -4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x7d,0x72,0x80] + + vpermt2b -0x1020(%rdx), %ymm29, %ymm30 +//CHECK: vpermt2b -4128(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x7d,0xb2,0xe0,0xef,0xff,0xff] + + vpermt2b 0x1234(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpermt2b 4660(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x00,0x7d,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpermt2b 0x1234(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpermt2b 4660(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x15,0x20,0x7d,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpermt2b %zmm28, %zmm29, %zmm30 +//CHECK: vpermt2b %zmm28, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x02,0x15,0x40,0x7d,0xf4] + + vpermt2b %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: vpermt2b %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x47,0x7d,0xf4] + + vpermt2b %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: vpermt2b %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0xc7,0x7d,0xf4] + + vpermt2b (%rcx), %zmm29, %zmm30 +//CHECK: vpermt2b (%rcx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x7d,0x31] + + vpermt2b 0x123(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpermt2b 291(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x40,0x7d,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermt2b 0x1fc0(%rdx), %zmm29, %zmm30 +//CHECK: vpermt2b 8128(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x7d,0x72,0x7f] + + vpermt2b 0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpermt2b 8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x7d,0xb2,0x00,0x20,0x00,0x00] + + vpermt2b -0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpermt2b -8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x7d,0x72,0x80] + + vpermt2b -0x2040(%rdx), %zmm29, %zmm30 +//CHECK: vpermt2b -8256(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x7d,0xb2,0xc0,0xdf,0xff,0xff] + + vpermt2b 0x1234(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpermt2b 4660(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x40,0x7d,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpermi2b %xmm28, %xmm29, %xmm30 +//CHECK: vpermi2b %xmm28, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x02,0x15,0x00,0x75,0xf4] + + vpermi2b %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: vpermi2b %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x07,0x75,0xf4] + + vpermi2b %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: vpermi2b %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0x87,0x75,0xf4] + + vpermi2b (%rcx), %xmm29, %xmm30 +//CHECK: vpermi2b (%rcx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x75,0x31] + + vpermi2b 0x123(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpermi2b 291(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x00,0x75,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermi2b 0x7f0(%rdx), %xmm29, %xmm30 +//CHECK: vpermi2b 2032(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x75,0x72,0x7f] + + vpermi2b 0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpermi2b 2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x75,0xb2,0x00,0x08,0x00,0x00] + + vpermi2b -0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpermi2b -2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x75,0x72,0x80] + + vpermi2b -0x810(%rdx), %xmm29, %xmm30 +//CHECK: vpermi2b -2064(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x00,0x75,0xb2,0xf0,0xf7,0xff,0xff] + + vpermi2b %ymm28, %ymm29, %ymm30 +//CHECK: vpermi2b %ymm28, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x02,0x15,0x20,0x75,0xf4] + + vpermi2b %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: vpermi2b %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x27,0x75,0xf4] + + vpermi2b %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: vpermi2b %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0xa7,0x75,0xf4] + + vpermi2b (%rcx), %ymm29, %ymm30 +//CHECK: vpermi2b (%rcx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x75,0x31] + + vpermi2b 0x123(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpermi2b 291(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x15,0x20,0x75,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermi2b 0xfe0(%rdx), %ymm29, %ymm30 +//CHECK: vpermi2b 4064(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x75,0x72,0x7f] + + vpermi2b 0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpermi2b 4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x75,0xb2,0x00,0x10,0x00,0x00] + + vpermi2b -0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpermi2b -4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x75,0x72,0x80] + + vpermi2b -0x1020(%rdx), %ymm29, %ymm30 +//CHECK: vpermi2b -4128(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x15,0x20,0x75,0xb2,0xe0,0xef,0xff,0xff] + + vpermi2b 0x1234(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpermi2b 4660(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x00,0x75,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpermi2b 0x1234(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpermi2b 4660(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x15,0x20,0x75,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpermi2b %zmm28, %zmm29, %zmm30 +//CHECK: vpermi2b %zmm28, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x02,0x15,0x40,0x75,0xf4] + + vpermi2b %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: vpermi2b %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x15,0x47,0x75,0xf4] + + vpermi2b %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: vpermi2b %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x15,0xc7,0x75,0xf4] + + vpermi2b (%rcx), %zmm29, %zmm30 +//CHECK: vpermi2b (%rcx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x75,0x31] + + vpermi2b 0x123(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpermi2b 291(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x40,0x75,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpermi2b 0x1fc0(%rdx), %zmm29, %zmm30 +//CHECK: vpermi2b 8128(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x75,0x72,0x7f] + + vpermi2b 0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpermi2b 8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x75,0xb2,0x00,0x20,0x00,0x00] + + vpermi2b -0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpermi2b -8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x75,0x72,0x80] + + vpermi2b -0x2040(%rdx), %zmm29, %zmm30 +//CHECK: vpermi2b -8256(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x15,0x40,0x75,0xb2,0xc0,0xdf,0xff,0xff] + + vpermi2b 0x1234(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpermi2b 4660(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x15,0x40,0x75,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpmultishiftqb %xmm28, %xmm29, %xmm30 +//CHECK: vpmultishiftqb %xmm28, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x02,0x95,0x00,0x83,0xf4] + + vpmultishiftqb %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: vpmultishiftqb %xmm28, %xmm29, %xmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x07,0x83,0xf4] + + vpmultishiftqb %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: vpmultishiftqb %xmm28, %xmm29, %xmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0x87,0x83,0xf4] + + vpmultishiftqb (%rcx), %xmm29, %xmm30 +//CHECK: vpmultishiftqb (%rcx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0x83,0x31] + + vpmultishiftqb 0x123(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpmultishiftqb 291(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x00,0x83,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmultishiftqb (%rcx){1to2}, %xmm29, %xmm30 +//CHECK: vpmultishiftqb (%rcx){1to2}, %xmm29, %xmm30 + +//CHECK: encoding: [0x62,0x62,0x95,0x10,0x83,0x31] + + vpmultishiftqb 0x7f0(%rdx), %xmm29, %xmm30 +//CHECK: vpmultishiftqb 2032(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0x83,0x72,0x7f] + + vpmultishiftqb 0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpmultishiftqb 2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0x83,0xb2,0x00,0x08,0x00,0x00] + + vpmultishiftqb -0x800(%rdx), %xmm29, %xmm30 +//CHECK: vpmultishiftqb -2048(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0x83,0x72,0x80] + + vpmultishiftqb -0x810(%rdx), %xmm29, %xmm30 +//CHECK: vpmultishiftqb -2064(%rdx), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x00,0x83,0xb2,0xf0,0xf7,0xff,0xff] + + vpmultishiftqb 0x3f8(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmultishiftqb 1016(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0x83,0x72,0x7f] + + vpmultishiftqb 0x400(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmultishiftqb 1024(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0x83,0xb2,0x00,0x04,0x00,0x00] + + vpmultishiftqb -0x400(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmultishiftqb -1024(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0x83,0x72,0x80] + + vpmultishiftqb -0x408(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: vpmultishiftqb -1032(%rdx){1to2}, %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x10,0x83,0xb2,0xf8,0xfb,0xff,0xff] + + vpmultishiftqb %ymm28, %ymm29, %ymm30 +//CHECK: vpmultishiftqb %ymm28, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x02,0x95,0x20,0x83,0xf4] + + vpmultishiftqb %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: vpmultishiftqb %ymm28, %ymm29, %ymm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x27,0x83,0xf4] + + vpmultishiftqb %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: vpmultishiftqb %ymm28, %ymm29, %ymm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0xa7,0x83,0xf4] + + vpmultishiftqb (%rcx), %ymm29, %ymm30 +//CHECK: vpmultishiftqb (%rcx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0x83,0x31] + + vpmultishiftqb 0x123(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpmultishiftqb 291(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x95,0x20,0x83,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmultishiftqb (%rcx){1to4}, %ymm29, %ymm30 +//CHECK: vpmultishiftqb (%rcx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0x83,0x31] + + vpmultishiftqb 0xfe0(%rdx), %ymm29, %ymm30 +//CHECK: vpmultishiftqb 4064(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0x83,0x72,0x7f] + + vpmultishiftqb 0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpmultishiftqb 4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0x83,0xb2,0x00,0x10,0x00,0x00] + + vpmultishiftqb -0x1000(%rdx), %ymm29, %ymm30 +//CHECK: vpmultishiftqb -4096(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0x83,0x72,0x80] + + vpmultishiftqb -0x1020(%rdx), %ymm29, %ymm30 +//CHECK: vpmultishiftqb -4128(%rdx), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x20,0x83,0xb2,0xe0,0xef,0xff,0xff] + + vpmultishiftqb 0x3f8(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmultishiftqb 1016(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0x83,0x72,0x7f] + + vpmultishiftqb 0x400(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmultishiftqb 1024(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0x83,0xb2,0x00,0x04,0x00,0x00] + + vpmultishiftqb -0x400(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmultishiftqb -1024(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0x83,0x72,0x80] + + vpmultishiftqb -0x408(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: vpmultishiftqb -1032(%rdx){1to4}, %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x62,0x95,0x30,0x83,0xb2,0xf8,0xfb,0xff,0xff] + + vpmultishiftqb 0x1234(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: vpmultishiftqb 4660(%rax,%r14,8), %xmm29, %xmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x00,0x83,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpmultishiftqb 0x1234(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: vpmultishiftqb 4660(%rax,%r14,8), %ymm29, %ymm30 +//CHECK: encoding: [0x62,0x22,0x95,0x20,0x83,0xb4,0xf0,0x34,0x12,0x00,0x00] + + vpmultishiftqb %zmm28, %zmm29, %zmm30 +//CHECK: vpmultishiftqb %zmm28, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x02,0x95,0x40,0x83,0xf4] + + vpmultishiftqb %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: vpmultishiftqb %zmm28, %zmm29, %zmm30 {%k7} +//CHECK: encoding: [0x62,0x02,0x95,0x47,0x83,0xf4] + + vpmultishiftqb %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: vpmultishiftqb %zmm28, %zmm29, %zmm30 {%k7} {z} +//CHECK: encoding: [0x62,0x02,0x95,0xc7,0x83,0xf4] + + vpmultishiftqb (%rcx), %zmm29, %zmm30 +//CHECK: vpmultishiftqb (%rcx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0x83,0x31] + + vpmultishiftqb 0x123(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpmultishiftqb 291(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x40,0x83,0xb4,0xf0,0x23,0x01,0x00,0x00] + + vpmultishiftqb (%rcx){1to8}, %zmm29, %zmm30 +//CHECK: vpmultishiftqb (%rcx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0x83,0x31] + + vpmultishiftqb 0x1fc0(%rdx), %zmm29, %zmm30 +//CHECK: vpmultishiftqb 8128(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0x83,0x72,0x7f] + + vpmultishiftqb 0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpmultishiftqb 8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0x83,0xb2,0x00,0x20,0x00,0x00] + + vpmultishiftqb -0x2000(%rdx), %zmm29, %zmm30 +//CHECK: vpmultishiftqb -8192(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0x83,0x72,0x80] + + vpmultishiftqb -0x2040(%rdx), %zmm29, %zmm30 +//CHECK: vpmultishiftqb -8256(%rdx), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x40,0x83,0xb2,0xc0,0xdf,0xff,0xff] + + vpmultishiftqb 0x3f8(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmultishiftqb 1016(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0x83,0x72,0x7f] + + vpmultishiftqb 0x400(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmultishiftqb 1024(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0x83,0xb2,0x00,0x04,0x00,0x00] + + vpmultishiftqb -0x400(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmultishiftqb -1024(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0x83,0x72,0x80] + + vpmultishiftqb -0x408(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: vpmultishiftqb -1032(%rdx){1to8}, %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x62,0x95,0x50,0x83,0xb2,0xf8,0xfb,0xff,0xff] + + vpmultishiftqb 0x1234(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: vpmultishiftqb 4660(%rax,%r14,8), %zmm29, %zmm30 +//CHECK: encoding: [0x62,0x22,0x95,0x40,0x83,0xb4,0xf0,0x34,0x12,0x00,0x00] + diff --git a/test/MC/X86/error-reloc.s b/test/MC/X86/error-reloc.s new file mode 100644 index 000000000000..647f764ff0d6 --- /dev/null +++ b/test/MC/X86/error-reloc.s @@ -0,0 +1,21 @@ +// RUN: not llvm-mc -triple x86_64-pc-linux %s -o %t.o -filetype=obj 2>&1 | FileCheck %s + + .quad foo@gotpcrel +// CHECK: 32 bit reloc applied to a field with a different size +// CHECK-NEXT: .quad foo@gotpcrel + + .quad foo@plt +// CHECK: 32 bit reloc applied to a field with a different size +// CHECK-NEXT: .quad foo@plt + + .quad foo@tlsld +// CHECK: 32 bit reloc applied to a field with a different size +// CHECK-NEXT: .quad foo@tlsld + + .quad foo@gottpoff +// CHECK: 32 bit reloc applied to a field with a different size +// CHECK-NEXT: .quad foo@gottpoff + + .quad foo@tlsgd +// CHECK: 32 bit reloc applied to a field with a different size +// CHECK-NEXT: .quad foo@tlsgd diff --git a/test/MC/X86/i386-darwin-frame-register.ll b/test/MC/X86/i386-darwin-frame-register.ll index 12b1e1e5c548..5f0cb6f20b28 100644 --- a/test/MC/X86/i386-darwin-frame-register.ll +++ b/test/MC/X86/i386-darwin-frame-register.ll @@ -29,7 +29,7 @@ attributes #0 = { nounwind } !llvm.module.flags = !{!3, !4, !5} !llvm.ident = !{!6} -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.7.0 (trunk 230514) (llvm/trunk 230518)", isOptimized: false, emissionKind: 1, file: !1, enums: !2, retainedTypes: !2, subprograms: !2, globals: !2, imports: !2) +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.7.0 (trunk 230514) (llvm/trunk 230518)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2) !1 = !DIFile(filename: "foo.c", directory: "/tmp") !2 = !{} !3 = !{i32 2, !"Dwarf Version", i32 2} diff --git a/test/MC/X86/imm-comments.s b/test/MC/X86/imm-comments.s new file mode 100644 index 000000000000..844bc39ac225 --- /dev/null +++ b/test/MC/X86/imm-comments.s @@ -0,0 +1,28 @@ +# RUN: llvm-mc %s -triple=x86_64-unknown-unknown | FileCheck %s + +movb $127, %al +movb $-128, %al + +movw $32767, %ax +movw $-32768, %ax + +movl $2147483647, %eax +movl $-2147483648, %eax + +movabsq $9223372036854775807, %rax + +# This line should not induce undefined behavior via negation of INT64_MIN. +movabsq $-9223372036854775808, %rax + +# CHECK: movb $127, %al +# CHECK: movb $-128, %al + +# CHECK: movw $32767, %ax # imm = 0x7FFF +# CHECK: movw $-32768, %ax # imm = 0x8000 + +# CHECK: movl $2147483647, %eax # imm = 0x7FFFFFFF +# CHECK: movl $-2147483648, %eax # imm = 0x80000000 + +# CHECK: movabsq $9223372036854775807, %rax # imm = 0x7FFFFFFFFFFFFFFF +# CHECK: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000 + diff --git a/test/MC/X86/index-operations.s b/test/MC/X86/index-operations.s index 9f69b0b78499..0f9bc91f7ade 100644 --- a/test/MC/X86/index-operations.s +++ b/test/MC/X86/index-operations.s @@ -144,3 +144,19 @@ insw %dx, (%edi) // 64: insw %dx, %es:(%edi) # encoding: [0x66,0x67,0x6d] // 32: insw %dx, %es:(%edi) # encoding: [0x66,0x6d] // 16: insw %dx, %es:(%edi) # encoding: [0x67,0x6d] + +insw %dx, (%bx) +// ERR64: invalid 16-bit base register +// 32: insw %dx, %es:(%di) # encoding: [0x66,0x67,0x6d] +// 16: insw %dx, %es:(%di) # encoding: [0x6d] + +insw %dx, (%ebx) +// 64: insw %dx, %es:(%edi) # encoding: [0x66,0x67,0x6d] +// 32: insw %dx, %es:(%edi) # encoding: [0x66,0x6d] +// 16: insw %dx, %es:(%edi) # encoding: [0x67,0x6d] + +insw %dx, (%rbx) +// 64: insw %dx, %es:(%rdi) # encoding: [0x66,0x6d] +// ERR32: 64-bit +// ERR16: 64-bit + diff --git a/test/MC/X86/intel-syntax-avx512.s b/test/MC/X86/intel-syntax-avx512.s index 1ad2b86bb8ca..2705e8c3b957 100644 --- a/test/MC/X86/intel-syntax-avx512.s +++ b/test/MC/X86/intel-syntax-avx512.s @@ -6,31 +6,31 @@ vaddps zmm1, zmm1, zmmword ptr [rax] // CHECK: vaddpd zmm1, zmm1, zmm2 // CHECK: encoding: [0x62,0xf1,0xf5,0x48,0x58,0xca] -vaddpd zmm1,zmm1,zmm2 +vaddpd zmm1, zmm1, zmm2 // CHECK: vaddpd zmm1 {k5}, zmm1, zmm2 // CHECK: encoding: [0x62,0xf1,0xf5,0x4d,0x58,0xca] -vaddpd zmm1{k5},zmm1,zmm2 +vaddpd zmm1 {k5}, zmm1, zmm2 // CHECK: vaddpd zmm1 {k5} {z}, zmm1, zmm2 // CHECK: encoding: [0x62,0xf1,0xf5,0xcd,0x58,0xca] -vaddpd zmm1{k5} {z},zmm1,zmm2 +vaddpd zmm1 {k5} {z}, zmm1, zmm2 // CHECK: vaddpd zmm1, zmm1, zmm2, {rn-sae} // CHECK: encoding: [0x62,0xf1,0xf5,0x18,0x58,0xca] -vaddpd zmm1,zmm1,zmm2,{rn-sae} +vaddpd zmm1, zmm1, zmm2, {rn-sae} // CHECK: vaddpd zmm1, zmm1, zmm2, {ru-sae} // CHECK: encoding: [0x62,0xf1,0xf5,0x58,0x58,0xca] -vaddpd zmm1,zmm1,zmm2,{ru-sae} +vaddpd zmm1, zmm1, zmm2, {ru-sae} // CHECK: vaddpd zmm1, zmm1, zmm2, {rd-sae} // CHECK: encoding: [0x62,0xf1,0xf5,0x38,0x58,0xca] -vaddpd zmm1,zmm1,zmm2,{rd-sae} +vaddpd zmm1, zmm1, zmm2, {rd-sae} // CHECK: vaddpd zmm1, zmm1, zmm2, {rz-sae} // CHECK: encoding: [0x62,0xf1,0xf5,0x78,0x58,0xca] -vaddpd zmm1,zmm1,zmm2,{rz-sae} +vaddpd zmm1, zmm1, zmm2, {rz-sae} // CHECK: vcmppd k2, zmm12, zmm26, 171 // CHECK: encoding: [0x62,0x91,0x9d,0x48,0xc2,0xd2,0xab] @@ -267,7 +267,7 @@ vaddpd zmm1,zmm1,zmm2,{rz-sae} // CHECK: vmovss dword ptr [rcx] {k2}, xmm13 // CHECK: encoding: [0x62,0x71,0x7e,0x0a,0x11,0x29] - vmovss dword ptr [rcx]{k2},xmm13 + vmovss dword ptr [rcx] {k2}, xmm13 // CHECK: vmovss dword ptr [rax + 8*r14 + 4660], xmm13 // CHECK: encoding: [0xc4,0x21,0x7a,0x11,0xac,0xf0,0x34,0x12,0x00,0x00] @@ -307,7 +307,7 @@ vaddpd zmm1,zmm1,zmm2,{rz-sae} // CHECK: vmovss dword ptr [rcx], xmm13 // CHECK: encoding: [0xc5,0x7a,0x11,0x29] - vmovss dword ptr [rcx],xmm13 + vmovss dword ptr [rcx], xmm13 // CHECK: vmovss xmm2, dword ptr [rcx] // CHECK: encoding: [0xc5,0xfa,0x10,0x11] @@ -315,11 +315,11 @@ vaddpd zmm1,zmm1,zmm2,{rz-sae} // CHECK: vmovss xmm2 {k4}, dword ptr [rcx] // CHECK: encoding: [0x62,0xf1,0x7e,0x0c,0x10,0x11] - vmovss xmm2{k4}, dword ptr [rcx] + vmovss xmm2 {k4}, dword ptr [rcx] // CHECK: vmovss xmm2 {k4} {z}, dword ptr [rcx] // CHECK: encoding: [0x62,0xf1,0x7e,0x8c,0x10,0x11] - vmovss xmm2{k4} {z}, dword ptr [rcx] + vmovss xmm2 {k4} {z}, dword ptr [rcx] // CHECK: vmovsd xmm25, qword ptr [rcx] // CHECK: encoding: [0x62,0x61,0xff,0x08,0x10,0x09] @@ -327,11 +327,11 @@ vaddpd zmm1,zmm1,zmm2,{rz-sae} // CHECK: vmovsd xmm25 {k3}, qword ptr [rcx] // CHECK: encoding: [0x62,0x61,0xff,0x0b,0x10,0x09] - vmovsd xmm25{k3}, qword ptr [rcx] + vmovsd xmm25 {k3}, qword ptr [rcx] // CHECK: vmovsd xmm25 {k3} {z}, qword ptr [rcx] // CHECK: encoding: [0x62,0x61,0xff,0x8b,0x10,0x09] - vmovsd xmm25{k3} {z}, qword ptr [rcx] + vmovsd xmm25 {k3} {z}, qword ptr [rcx] // CHECK: vmovsd xmm25, qword ptr [rax + 8*r14 + 291] // CHECK: encoding: [0x62,0x21,0xff,0x08,0x10,0x8c,0xf0,0x23,0x01,0x00,0x00] @@ -352,3 +352,37994 @@ vaddpd zmm1,zmm1,zmm2,{rz-sae} // CHECK: vmovsd xmm25, qword ptr [rdx - 1032] // CHECK: encoding: [0x62,0x61,0xff,0x08,0x10,0x8a,0xf8,0xfb,0xff,0xff] vmovsd xmm25, qword ptr [rdx-0x408] + +// CHECK: vaddpd zmm8, zmm27, zmm6 +// CHECK: encoding: [0x62,0x71,0xa5,0x40,0x58,0xc6] + vaddpd zmm8, zmm27, zmm6 + +// CHECK: vaddpd zmm8 {k7}, zmm27, zmm6 +// CHECK: encoding: [0x62,0x71,0xa5,0x47,0x58,0xc6] + vaddpd zmm8 {k7}, zmm27, zmm6 + +// CHECK: vaddpd zmm8 {k7} {z}, zmm27, zmm6 +// CHECK: encoding: [0x62,0x71,0xa5,0xc7,0x58,0xc6] + vaddpd zmm8 {k7} {z}, zmm27, zmm6 + +// CHECK: vaddpd zmm8, zmm27, zmm6, {rn-sae} +// CHECK: encoding: [0x62,0x71,0xa5,0x10,0x58,0xc6] + vaddpd zmm8, zmm27, zmm6, {rn-sae} + +// CHECK: vaddpd zmm8, zmm27, zmm6, {ru-sae} +// CHECK: encoding: [0x62,0x71,0xa5,0x50,0x58,0xc6] + vaddpd zmm8, zmm27, zmm6, {ru-sae} + +// CHECK: vaddpd zmm8, zmm27, zmm6, {rd-sae} +// CHECK: encoding: [0x62,0x71,0xa5,0x30,0x58,0xc6] + vaddpd zmm8, zmm27, zmm6, {rd-sae} + +// CHECK: vaddpd zmm8, zmm27, zmm6, {rz-sae} +// CHECK: encoding: [0x62,0x71,0xa5,0x70,0x58,0xc6] + vaddpd zmm8, zmm27, zmm6, {rz-sae} + +// CHECK: vaddpd zmm8, zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xa5,0x40,0x58,0x01] + vaddpd zmm8, zmm27, zmmword ptr [rcx] + +// CHECK: vaddpd zmm8, zmm27, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xa5,0x40,0x58,0x84,0xf0,0x23,0x01,0x00,0x00] + vaddpd zmm8, zmm27, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vaddpd zmm8, zmm27, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0xa5,0x50,0x58,0x01] + vaddpd zmm8, zmm27, qword ptr [rcx]{1to8} + +// CHECK: vaddpd zmm8, zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xa5,0x40,0x58,0x42,0x7f] + vaddpd zmm8, zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vaddpd zmm8, zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xa5,0x40,0x58,0x82,0x00,0x20,0x00,0x00] + vaddpd zmm8, zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vaddpd zmm8, zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xa5,0x40,0x58,0x42,0x80] + vaddpd zmm8, zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vaddpd zmm8, zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xa5,0x40,0x58,0x82,0xc0,0xdf,0xff,0xff] + vaddpd zmm8, zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vaddpd zmm8, zmm27, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0xa5,0x50,0x58,0x42,0x7f] + vaddpd zmm8, zmm27, qword ptr [rdx + 1016]{1to8} + +// CHECK: vaddpd zmm8, zmm27, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xa5,0x50,0x58,0x82,0x00,0x04,0x00,0x00] + vaddpd zmm8, zmm27, qword ptr [rdx + 1024]{1to8} + +// CHECK: vaddpd zmm8, zmm27, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xa5,0x50,0x58,0x42,0x80] + vaddpd zmm8, zmm27, qword ptr [rdx - 1024]{1to8} + +// CHECK: vaddpd zmm8, zmm27, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0xa5,0x50,0x58,0x82,0xf8,0xfb,0xff,0xff] + vaddpd zmm8, zmm27, qword ptr [rdx - 1032]{1to8} + +// CHECK: vaddps zmm18, zmm13, zmm2 +// CHECK: encoding: [0x62,0xe1,0x14,0x48,0x58,0xd2] + vaddps zmm18, zmm13, zmm2 + +// CHECK: vaddps zmm18 {k4}, zmm13, zmm2 +// CHECK: encoding: [0x62,0xe1,0x14,0x4c,0x58,0xd2] + vaddps zmm18 {k4}, zmm13, zmm2 + +// CHECK: vaddps zmm18 {k4} {z}, zmm13, zmm2 +// CHECK: encoding: [0x62,0xe1,0x14,0xcc,0x58,0xd2] + vaddps zmm18 {k4} {z}, zmm13, zmm2 + +// CHECK: vaddps zmm18, zmm13, zmm2, {rn-sae} +// CHECK: encoding: [0x62,0xe1,0x14,0x18,0x58,0xd2] + vaddps zmm18, zmm13, zmm2, {rn-sae} + +// CHECK: vaddps zmm18, zmm13, zmm2, {ru-sae} +// CHECK: encoding: [0x62,0xe1,0x14,0x58,0x58,0xd2] + vaddps zmm18, zmm13, zmm2, {ru-sae} + +// CHECK: vaddps zmm18, zmm13, zmm2, {rd-sae} +// CHECK: encoding: [0x62,0xe1,0x14,0x38,0x58,0xd2] + vaddps zmm18, zmm13, zmm2, {rd-sae} + +// CHECK: vaddps zmm18, zmm13, zmm2, {rz-sae} +// CHECK: encoding: [0x62,0xe1,0x14,0x78,0x58,0xd2] + vaddps zmm18, zmm13, zmm2, {rz-sae} + +// CHECK: vaddps zmm18, zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x14,0x48,0x58,0x11] + vaddps zmm18, zmm13, zmmword ptr [rcx] + +// CHECK: vaddps zmm18, zmm13, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x14,0x48,0x58,0x94,0xf0,0x23,0x01,0x00,0x00] + vaddps zmm18, zmm13, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vaddps zmm18, zmm13, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x14,0x58,0x58,0x11] + vaddps zmm18, zmm13, dword ptr [rcx]{1to16} + +// CHECK: vaddps zmm18, zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x14,0x48,0x58,0x52,0x7f] + vaddps zmm18, zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vaddps zmm18, zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x14,0x48,0x58,0x92,0x00,0x20,0x00,0x00] + vaddps zmm18, zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vaddps zmm18, zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x14,0x48,0x58,0x52,0x80] + vaddps zmm18, zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vaddps zmm18, zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x14,0x48,0x58,0x92,0xc0,0xdf,0xff,0xff] + vaddps zmm18, zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vaddps zmm18, zmm13, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x14,0x58,0x58,0x52,0x7f] + vaddps zmm18, zmm13, dword ptr [rdx + 508]{1to16} + +// CHECK: vaddps zmm18, zmm13, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x14,0x58,0x58,0x92,0x00,0x02,0x00,0x00] + vaddps zmm18, zmm13, dword ptr [rdx + 512]{1to16} + +// CHECK: vaddps zmm18, zmm13, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x14,0x58,0x58,0x52,0x80] + vaddps zmm18, zmm13, dword ptr [rdx - 512]{1to16} + +// CHECK: vaddps zmm18, zmm13, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x14,0x58,0x58,0x92,0xfc,0xfd,0xff,0xff] + vaddps zmm18, zmm13, dword ptr [rdx - 516]{1to16} + +// CHECK: vaddsd xmm3, xmm17, xmm8 +// CHECK: encoding: [0x62,0xd1,0xf7,0x00,0x58,0xd8] + vaddsd xmm3, xmm17, xmm8 + +// CHECK: vaddsd xmm3 {k3}, xmm17, xmm8 +// CHECK: encoding: [0x62,0xd1,0xf7,0x03,0x58,0xd8] + vaddsd xmm3 {k3}, xmm17, xmm8 + +// CHECK: vaddsd xmm3 {k3} {z}, xmm17, xmm8 +// CHECK: encoding: [0x62,0xd1,0xf7,0x83,0x58,0xd8] + vaddsd xmm3 {k3} {z}, xmm17, xmm8 + +// CHECK: vaddsd xmm3, xmm17, xmm8, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0xf7,0x10,0x58,0xd8] + vaddsd xmm3, xmm17, xmm8, {rn-sae} + +// CHECK: vaddsd xmm3, xmm17, xmm8, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0xf7,0x50,0x58,0xd8] + vaddsd xmm3, xmm17, xmm8, {ru-sae} + +// CHECK: vaddsd xmm3, xmm17, xmm8, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0xf7,0x30,0x58,0xd8] + vaddsd xmm3, xmm17, xmm8, {rd-sae} + +// CHECK: vaddsd xmm3, xmm17, xmm8, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0xf7,0x70,0x58,0xd8] + vaddsd xmm3, xmm17, xmm8, {rz-sae} + +// CHECK: vaddsd xmm3, xmm17, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xf7,0x00,0x58,0x19] + vaddsd xmm3, xmm17, qword ptr [rcx] + +// CHECK: vaddsd xmm3, xmm17, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xf7,0x00,0x58,0x9c,0xf0,0x23,0x01,0x00,0x00] + vaddsd xmm3, xmm17, qword ptr [rax + 8*r14 + 291] + +// CHECK: vaddsd xmm3, xmm17, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0xf7,0x00,0x58,0x5a,0x7f] + vaddsd xmm3, xmm17, qword ptr [rdx + 1016] + +// CHECK: vaddsd xmm3, xmm17, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0xf7,0x00,0x58,0x9a,0x00,0x04,0x00,0x00] + vaddsd xmm3, xmm17, qword ptr [rdx + 1024] + +// CHECK: vaddsd xmm3, xmm17, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0xf7,0x00,0x58,0x5a,0x80] + vaddsd xmm3, xmm17, qword ptr [rdx - 1024] + +// CHECK: vaddsd xmm3, xmm17, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0xf7,0x00,0x58,0x9a,0xf8,0xfb,0xff,0xff] + vaddsd xmm3, xmm17, qword ptr [rdx - 1032] + +// CHECK: vaddss xmm7, xmm5, xmm19 +// CHECK: encoding: [0x62,0xb1,0x56,0x08,0x58,0xfb] + vaddss xmm7, xmm5, xmm19 + +// CHECK: vaddss xmm7 {k2}, xmm5, xmm19 +// CHECK: encoding: [0x62,0xb1,0x56,0x0a,0x58,0xfb] + vaddss xmm7 {k2}, xmm5, xmm19 + +// CHECK: vaddss xmm7 {k2} {z}, xmm5, xmm19 +// CHECK: encoding: [0x62,0xb1,0x56,0x8a,0x58,0xfb] + vaddss xmm7 {k2} {z}, xmm5, xmm19 + +// CHECK: vaddss xmm7, xmm5, xmm19, {rn-sae} +// CHECK: encoding: [0x62,0xb1,0x56,0x18,0x58,0xfb] + vaddss xmm7, xmm5, xmm19, {rn-sae} + +// CHECK: vaddss xmm7, xmm5, xmm19, {ru-sae} +// CHECK: encoding: [0x62,0xb1,0x56,0x58,0x58,0xfb] + vaddss xmm7, xmm5, xmm19, {ru-sae} + +// CHECK: vaddss xmm7, xmm5, xmm19, {rd-sae} +// CHECK: encoding: [0x62,0xb1,0x56,0x38,0x58,0xfb] + vaddss xmm7, xmm5, xmm19, {rd-sae} + +// CHECK: vaddss xmm7, xmm5, xmm19, {rz-sae} +// CHECK: encoding: [0x62,0xb1,0x56,0x78,0x58,0xfb] + vaddss xmm7, xmm5, xmm19, {rz-sae} + +// CHECK: vaddss xmm7, xmm5, dword ptr [rcx] +// CHECK: encoding: [0xc5,0xd2,0x58,0x39] + vaddss xmm7, xmm5, dword ptr [rcx] + +// CHECK: vaddss xmm7, xmm5, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa1,0x52,0x58,0xbc,0xf0,0x23,0x01,0x00,0x00] + vaddss xmm7, xmm5, dword ptr [rax + 8*r14 + 291] + +// CHECK: vaddss xmm7, xmm5, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0xd2,0x58,0xba,0xfc,0x01,0x00,0x00] + vaddss xmm7, xmm5, dword ptr [rdx + 508] + +// CHECK: vaddss xmm7, xmm5, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0xd2,0x58,0xba,0x00,0x02,0x00,0x00] + vaddss xmm7, xmm5, dword ptr [rdx + 512] + +// CHECK: vaddss xmm7, xmm5, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0xd2,0x58,0xba,0x00,0xfe,0xff,0xff] + vaddss xmm7, xmm5, dword ptr [rdx - 512] + +// CHECK: vaddss xmm7, xmm5, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0xd2,0x58,0xba,0xfc,0xfd,0xff,0xff] + vaddss xmm7, xmm5, dword ptr [rdx - 516] + +// CHECK: valignd zmm9, zmm18, zmm26, 171 +// CHECK: encoding: [0x62,0x13,0x6d,0x40,0x03,0xca,0xab] + valignd zmm9, zmm18, zmm26, 171 + +// CHECK: valignd zmm9 {k4}, zmm18, zmm26, 171 +// CHECK: encoding: [0x62,0x13,0x6d,0x44,0x03,0xca,0xab] + valignd zmm9 {k4}, zmm18, zmm26, 171 + +// CHECK: valignd zmm9 {k4} {z}, zmm18, zmm26, 171 +// CHECK: encoding: [0x62,0x13,0x6d,0xc4,0x03,0xca,0xab] + valignd zmm9 {k4} {z}, zmm18, zmm26, 171 + +// CHECK: valignd zmm9, zmm18, zmm26, 123 +// CHECK: encoding: [0x62,0x13,0x6d,0x40,0x03,0xca,0x7b] + valignd zmm9, zmm18, zmm26, 123 + +// CHECK: valignd zmm9, zmm18, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x40,0x03,0x09,0x7b] + valignd zmm9, zmm18, zmmword ptr [rcx], 123 + +// CHECK: valignd zmm9, zmm18, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0x6d,0x40,0x03,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + valignd zmm9, zmm18, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: valignd zmm9, zmm18, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x50,0x03,0x09,0x7b] + valignd zmm9, zmm18, dword ptr [rcx]{1to16}, 123 + +// CHECK: valignd zmm9, zmm18, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x40,0x03,0x4a,0x7f,0x7b] + valignd zmm9, zmm18, zmmword ptr [rdx + 8128], 123 + +// CHECK: valignd zmm9, zmm18, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x40,0x03,0x8a,0x00,0x20,0x00,0x00,0x7b] + valignd zmm9, zmm18, zmmword ptr [rdx + 8192], 123 + +// CHECK: valignd zmm9, zmm18, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x40,0x03,0x4a,0x80,0x7b] + valignd zmm9, zmm18, zmmword ptr [rdx - 8192], 123 + +// CHECK: valignd zmm9, zmm18, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x40,0x03,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + valignd zmm9, zmm18, zmmword ptr [rdx - 8256], 123 + +// CHECK: valignd zmm9, zmm18, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x50,0x03,0x4a,0x7f,0x7b] + valignd zmm9, zmm18, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: valignd zmm9, zmm18, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x50,0x03,0x8a,0x00,0x02,0x00,0x00,0x7b] + valignd zmm9, zmm18, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: valignd zmm9, zmm18, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x50,0x03,0x4a,0x80,0x7b] + valignd zmm9, zmm18, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: valignd zmm9, zmm18, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x50,0x03,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + valignd zmm9, zmm18, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vblendmpd zmm8, zmm28, zmm12 +// CHECK: encoding: [0x62,0x52,0x9d,0x40,0x65,0xc4] + vblendmpd zmm8, zmm28, zmm12 + +// CHECK: vblendmpd zmm8 {k1}, zmm28, zmm12 +// CHECK: encoding: [0x62,0x52,0x9d,0x41,0x65,0xc4] + vblendmpd zmm8 {k1}, zmm28, zmm12 + +// CHECK: vblendmpd zmm8 {k1} {z}, zmm28, zmm12 +// CHECK: encoding: [0x62,0x52,0x9d,0xc1,0x65,0xc4] + vblendmpd zmm8 {k1} {z}, zmm28, zmm12 + +// CHECK: vblendmpd zmm8, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x65,0x01] + vblendmpd zmm8, zmm28, zmmword ptr [rcx] + +// CHECK: vblendmpd zmm8, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x9d,0x40,0x65,0x84,0xf0,0x23,0x01,0x00,0x00] + vblendmpd zmm8, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vblendmpd zmm8, zmm28, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x65,0x01] + vblendmpd zmm8, zmm28, qword ptr [rcx]{1to8} + +// CHECK: vblendmpd zmm8, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x65,0x42,0x7f] + vblendmpd zmm8, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vblendmpd zmm8, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x65,0x82,0x00,0x20,0x00,0x00] + vblendmpd zmm8, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vblendmpd zmm8, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x65,0x42,0x80] + vblendmpd zmm8, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vblendmpd zmm8, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x65,0x82,0xc0,0xdf,0xff,0xff] + vblendmpd zmm8, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vblendmpd zmm8, zmm28, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x65,0x42,0x7f] + vblendmpd zmm8, zmm28, qword ptr [rdx + 1016]{1to8} + +// CHECK: vblendmpd zmm8, zmm28, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x65,0x82,0x00,0x04,0x00,0x00] + vblendmpd zmm8, zmm28, qword ptr [rdx + 1024]{1to8} + +// CHECK: vblendmpd zmm8, zmm28, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x65,0x42,0x80] + vblendmpd zmm8, zmm28, qword ptr [rdx - 1024]{1to8} + +// CHECK: vblendmpd zmm8, zmm28, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x65,0x82,0xf8,0xfb,0xff,0xff] + vblendmpd zmm8, zmm28, qword ptr [rdx - 1032]{1to8} + +// CHECK: vblendmps zmm15, zmm28, zmm4 +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x65,0xfc] + vblendmps zmm15, zmm28, zmm4 + +// CHECK: vblendmps zmm15 {k3}, zmm28, zmm4 +// CHECK: encoding: [0x62,0x72,0x1d,0x43,0x65,0xfc] + vblendmps zmm15 {k3}, zmm28, zmm4 + +// CHECK: vblendmps zmm15 {k3} {z}, zmm28, zmm4 +// CHECK: encoding: [0x62,0x72,0x1d,0xc3,0x65,0xfc] + vblendmps zmm15 {k3} {z}, zmm28, zmm4 + +// CHECK: vblendmps zmm15, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x65,0x39] + vblendmps zmm15, zmm28, zmmword ptr [rcx] + +// CHECK: vblendmps zmm15, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x1d,0x40,0x65,0xbc,0xf0,0x23,0x01,0x00,0x00] + vblendmps zmm15, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vblendmps zmm15, zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x65,0x39] + vblendmps zmm15, zmm28, dword ptr [rcx]{1to16} + +// CHECK: vblendmps zmm15, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x65,0x7a,0x7f] + vblendmps zmm15, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vblendmps zmm15, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x65,0xba,0x00,0x20,0x00,0x00] + vblendmps zmm15, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vblendmps zmm15, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x65,0x7a,0x80] + vblendmps zmm15, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vblendmps zmm15, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x65,0xba,0xc0,0xdf,0xff,0xff] + vblendmps zmm15, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vblendmps zmm15, zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x65,0x7a,0x7f] + vblendmps zmm15, zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vblendmps zmm15, zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x65,0xba,0x00,0x02,0x00,0x00] + vblendmps zmm15, zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vblendmps zmm15, zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x65,0x7a,0x80] + vblendmps zmm15, zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vblendmps zmm15, zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x65,0xba,0xfc,0xfd,0xff,0xff] + vblendmps zmm15, zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vbroadcastf32x4 zmm3, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x19] + vbroadcastf32x4 zmm3, xmmword ptr [rcx] + +// CHECK: vbroadcastf32x4 zmm3 {k7}, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x4f,0x1a,0x19] + vbroadcastf32x4 zmm3 {k7}, xmmword ptr [rcx] + +// CHECK: vbroadcastf32x4 zmm3 {k7} {z}, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0xcf,0x1a,0x19] + vbroadcastf32x4 zmm3 {k7} {z}, xmmword ptr [rcx] + +// CHECK: vbroadcastf32x4 zmm3, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x1a,0x9c,0xf0,0x23,0x01,0x00,0x00] + vbroadcastf32x4 zmm3, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vbroadcastf32x4 zmm3, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x5a,0x7f] + vbroadcastf32x4 zmm3, xmmword ptr [rdx + 2032] + +// CHECK: vbroadcastf32x4 zmm3, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x9a,0x00,0x08,0x00,0x00] + vbroadcastf32x4 zmm3, xmmword ptr [rdx + 2048] + +// CHECK: vbroadcastf32x4 zmm3, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x5a,0x80] + vbroadcastf32x4 zmm3, xmmword ptr [rdx - 2048] + +// CHECK: vbroadcastf32x4 zmm3, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x9a,0xf0,0xf7,0xff,0xff] + vbroadcastf32x4 zmm3, xmmword ptr [rdx - 2064] + +// CHECK: vbroadcastf64x4 zmm25, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x09] + vbroadcastf64x4 zmm25, ymmword ptr [rcx] + +// CHECK: vbroadcastf64x4 zmm25 {k6}, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x4e,0x1b,0x09] + vbroadcastf64x4 zmm25 {k6}, ymmword ptr [rcx] + +// CHECK: vbroadcastf64x4 zmm25 {k6} {z}, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0xce,0x1b,0x09] + vbroadcastf64x4 zmm25 {k6} {z}, ymmword ptr [rcx] + +// CHECK: vbroadcastf64x4 zmm25, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x1b,0x8c,0xf0,0x23,0x01,0x00,0x00] + vbroadcastf64x4 zmm25, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vbroadcastf64x4 zmm25, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x4a,0x7f] + vbroadcastf64x4 zmm25, ymmword ptr [rdx + 4064] + +// CHECK: vbroadcastf64x4 zmm25, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x8a,0x00,0x10,0x00,0x00] + vbroadcastf64x4 zmm25, ymmword ptr [rdx + 4096] + +// CHECK: vbroadcastf64x4 zmm25, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x4a,0x80] + vbroadcastf64x4 zmm25, ymmword ptr [rdx - 4096] + +// CHECK: vbroadcastf64x4 zmm25, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x8a,0xe0,0xef,0xff,0xff] + vbroadcastf64x4 zmm25, ymmword ptr [rdx - 4128] + +// CHECK: vbroadcasti32x4 zmm30, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0x31] + vbroadcasti32x4 zmm30, xmmword ptr [rcx] + +// CHECK: vbroadcasti32x4 zmm30 {k3}, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x4b,0x5a,0x31] + vbroadcasti32x4 zmm30 {k3}, xmmword ptr [rcx] + +// CHECK: vbroadcasti32x4 zmm30 {k3} {z}, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0xcb,0x5a,0x31] + vbroadcasti32x4 zmm30 {k3} {z}, xmmword ptr [rcx] + +// CHECK: vbroadcasti32x4 zmm30, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x5a,0xb4,0xf0,0x23,0x01,0x00,0x00] + vbroadcasti32x4 zmm30, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vbroadcasti32x4 zmm30, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0x72,0x7f] + vbroadcasti32x4 zmm30, xmmword ptr [rdx + 2032] + +// CHECK: vbroadcasti32x4 zmm30, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0xb2,0x00,0x08,0x00,0x00] + vbroadcasti32x4 zmm30, xmmword ptr [rdx + 2048] + +// CHECK: vbroadcasti32x4 zmm30, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0x72,0x80] + vbroadcasti32x4 zmm30, xmmword ptr [rdx - 2048] + +// CHECK: vbroadcasti32x4 zmm30, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0xb2,0xf0,0xf7,0xff,0xff] + vbroadcasti32x4 zmm30, xmmword ptr [rdx - 2064] + +// CHECK: vbroadcasti64x4 zmm13, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0x29] + vbroadcasti64x4 zmm13, ymmword ptr [rcx] + +// CHECK: vbroadcasti64x4 zmm13 {k4}, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0x4c,0x5b,0x29] + vbroadcasti64x4 zmm13 {k4}, ymmword ptr [rcx] + +// CHECK: vbroadcasti64x4 zmm13 {k4} {z}, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0xcc,0x5b,0x29] + vbroadcasti64x4 zmm13 {k4} {z}, ymmword ptr [rcx] + +// CHECK: vbroadcasti64x4 zmm13, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xfd,0x48,0x5b,0xac,0xf0,0x23,0x01,0x00,0x00] + vbroadcasti64x4 zmm13, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vbroadcasti64x4 zmm13, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0x6a,0x7f] + vbroadcasti64x4 zmm13, ymmword ptr [rdx + 4064] + +// CHECK: vbroadcasti64x4 zmm13, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0xaa,0x00,0x10,0x00,0x00] + vbroadcasti64x4 zmm13, ymmword ptr [rdx + 4096] + +// CHECK: vbroadcasti64x4 zmm13, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0x6a,0x80] + vbroadcasti64x4 zmm13, ymmword ptr [rdx - 4096] + +// CHECK: vbroadcasti64x4 zmm13, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0xaa,0xe0,0xef,0xff,0xff] + vbroadcasti64x4 zmm13, ymmword ptr [rdx - 4128] + +// CHECK: vbroadcastsd zmm30, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0x31] + vbroadcastsd zmm30, qword ptr [rcx] + +// CHECK: vbroadcastsd zmm30 {k4}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x4c,0x19,0x31] + vbroadcastsd zmm30 {k4}, qword ptr [rcx] + +// CHECK: vbroadcastsd zmm30 {k4} {z}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0xcc,0x19,0x31] + vbroadcastsd zmm30 {k4} {z}, qword ptr [rcx] + +// CHECK: vbroadcastsd zmm30, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x19,0xb4,0xf0,0x23,0x01,0x00,0x00] + vbroadcastsd zmm30, qword ptr [rax + 8*r14 + 291] + +// CHECK: vbroadcastsd zmm30, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0x72,0x7f] + vbroadcastsd zmm30, qword ptr [rdx + 1016] + +// CHECK: vbroadcastsd zmm30, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0xb2,0x00,0x04,0x00,0x00] + vbroadcastsd zmm30, qword ptr [rdx + 1024] + +// CHECK: vbroadcastsd zmm30, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0x72,0x80] + vbroadcastsd zmm30, qword ptr [rdx - 1024] + +// CHECK: vbroadcastsd zmm30, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0xb2,0xf8,0xfb,0xff,0xff] + vbroadcastsd zmm30, qword ptr [rdx - 1032] + +// CHECK: vbroadcastsd zmm21, xmm22 +// CHECK: encoding: [0x62,0xa2,0xfd,0x48,0x19,0xee] + vbroadcastsd zmm21, xmm22 + +// CHECK: vbroadcastsd zmm21 {k7}, xmm22 +// CHECK: encoding: [0x62,0xa2,0xfd,0x4f,0x19,0xee] + vbroadcastsd zmm21 {k7}, xmm22 + +// CHECK: vbroadcastsd zmm21 {k7} {z}, xmm22 +// CHECK: encoding: [0x62,0xa2,0xfd,0xcf,0x19,0xee] + vbroadcastsd zmm21 {k7} {z}, xmm22 + +// CHECK: vbroadcastss zmm3, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x19] + vbroadcastss zmm3, dword ptr [rcx] + +// CHECK: vbroadcastss zmm3 {k4}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x4c,0x18,0x19] + vbroadcastss zmm3 {k4}, dword ptr [rcx] + +// CHECK: vbroadcastss zmm3 {k4} {z}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0xcc,0x18,0x19] + vbroadcastss zmm3 {k4} {z}, dword ptr [rcx] + +// CHECK: vbroadcastss zmm3, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x18,0x9c,0xf0,0x23,0x01,0x00,0x00] + vbroadcastss zmm3, dword ptr [rax + 8*r14 + 291] + +// CHECK: vbroadcastss zmm3, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x5a,0x7f] + vbroadcastss zmm3, dword ptr [rdx + 508] + +// CHECK: vbroadcastss zmm3, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x9a,0x00,0x02,0x00,0x00] + vbroadcastss zmm3, dword ptr [rdx + 512] + +// CHECK: vbroadcastss zmm3, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x5a,0x80] + vbroadcastss zmm3, dword ptr [rdx - 512] + +// CHECK: vbroadcastss zmm3, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x9a,0xfc,0xfd,0xff,0xff] + vbroadcastss zmm3, dword ptr [rdx - 516] + +// CHECK: vbroadcastss zmm18, xmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x18,0xd2] + vbroadcastss zmm18, xmm18 + +// CHECK: vbroadcastss zmm18 {k2}, xmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0x4a,0x18,0xd2] + vbroadcastss zmm18 {k2}, xmm18 + +// CHECK: vbroadcastss zmm18 {k2} {z}, xmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0xca,0x18,0xd2] + vbroadcastss zmm18 {k2} {z}, xmm18 + +// CHECK: vcmppd k2, zmm12, zmm26, 171 +// CHECK: encoding: [0x62,0x91,0x9d,0x48,0xc2,0xd2,0xab] + vcmppd k2, zmm12, zmm26, 171 + +// CHECK: vcmppd k2 {k3}, zmm12, zmm26, 171 +// CHECK: encoding: [0x62,0x91,0x9d,0x4b,0xc2,0xd2,0xab] + vcmppd k2 {k3}, zmm12, zmm26, 171 + +// CHECK: vcmppd k2, zmm12, zmm26, {sae}, 171 +// CHECK: encoding: [0x62,0x91,0x9d,0x18,0xc2,0xd2,0xab] + vcmppd k2, zmm12, zmm26, {sae}, 171 + +// CHECK: vcmppd k2, zmm12, zmm26, 123 +// CHECK: encoding: [0x62,0x91,0x9d,0x48,0xc2,0xd2,0x7b] + vcmppd k2, zmm12, zmm26, 123 + +// CHECK: vcmppd k2, zmm12, zmm26, {sae}, 123 +// CHECK: encoding: [0x62,0x91,0x9d,0x18,0xc2,0xd2,0x7b] + vcmppd k2, zmm12, zmm26, {sae}, 123 + +// CHECK: vcmppd k2, zmm12, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x48,0xc2,0x11,0x7b] + vcmppd k2, zmm12, zmmword ptr [rcx], 123 + +// CHECK: vcmppd k2, zmm12, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x9d,0x48,0xc2,0x94,0xf0,0x23,0x01,0x00,0x00,0x7b] + vcmppd k2, zmm12, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vcmppd k2, zmm12, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x58,0xc2,0x11,0x7b] + vcmppd k2, zmm12, qword ptr [rcx]{1to8}, 123 + +// CHECK: vcmppd k2, zmm12, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x48,0xc2,0x52,0x7f,0x7b] + vcmppd k2, zmm12, zmmword ptr [rdx + 8128], 123 + +// CHECK: vcmppd k2, zmm12, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x48,0xc2,0x92,0x00,0x20,0x00,0x00,0x7b] + vcmppd k2, zmm12, zmmword ptr [rdx + 8192], 123 + +// CHECK: vcmppd k2, zmm12, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x48,0xc2,0x52,0x80,0x7b] + vcmppd k2, zmm12, zmmword ptr [rdx - 8192], 123 + +// CHECK: vcmppd k2, zmm12, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x48,0xc2,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vcmppd k2, zmm12, zmmword ptr [rdx - 8256], 123 + +// CHECK: vcmppd k2, zmm12, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x58,0xc2,0x52,0x7f,0x7b] + vcmppd k2, zmm12, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vcmppd k2, zmm12, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x58,0xc2,0x92,0x00,0x04,0x00,0x00,0x7b] + vcmppd k2, zmm12, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vcmppd k2, zmm12, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x58,0xc2,0x52,0x80,0x7b] + vcmppd k2, zmm12, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vcmppd k2, zmm12, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x9d,0x58,0xc2,0x92,0xf8,0xfb,0xff,0xff,0x7b] + vcmppd k2, zmm12, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vcmpps k2, zmm17, zmm22, 171 +// CHECK: encoding: [0x62,0xb1,0x74,0x40,0xc2,0xd6,0xab] + vcmpps k2, zmm17, zmm22, 171 + +// CHECK: vcmpps k2 {k3}, zmm17, zmm22, 171 +// CHECK: encoding: [0x62,0xb1,0x74,0x43,0xc2,0xd6,0xab] + vcmpps k2 {k3}, zmm17, zmm22, 171 + +// CHECK: vcmpps k2, zmm17, zmm22, {sae}, 171 +// CHECK: encoding: [0x62,0xb1,0x74,0x10,0xc2,0xd6,0xab] + vcmpps k2, zmm17, zmm22, {sae}, 171 + +// CHECK: vcmpps k2, zmm17, zmm22, 123 +// CHECK: encoding: [0x62,0xb1,0x74,0x40,0xc2,0xd6,0x7b] + vcmpps k2, zmm17, zmm22, 123 + +// CHECK: vcmpps k2, zmm17, zmm22, {sae}, 123 +// CHECK: encoding: [0x62,0xb1,0x74,0x10,0xc2,0xd6,0x7b] + vcmpps k2, zmm17, zmm22, {sae}, 123 + +// CHECK: vcmpps k2, zmm17, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x40,0xc2,0x11,0x7b] + vcmpps k2, zmm17, zmmword ptr [rcx], 123 + +// CHECK: vcmpps k2, zmm17, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x74,0x40,0xc2,0x94,0xf0,0x23,0x01,0x00,0x00,0x7b] + vcmpps k2, zmm17, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vcmpps k2, zmm17, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x50,0xc2,0x11,0x7b] + vcmpps k2, zmm17, dword ptr [rcx]{1to16}, 123 + +// CHECK: vcmpps k2, zmm17, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x40,0xc2,0x52,0x7f,0x7b] + vcmpps k2, zmm17, zmmword ptr [rdx + 8128], 123 + +// CHECK: vcmpps k2, zmm17, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x40,0xc2,0x92,0x00,0x20,0x00,0x00,0x7b] + vcmpps k2, zmm17, zmmword ptr [rdx + 8192], 123 + +// CHECK: vcmpps k2, zmm17, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x40,0xc2,0x52,0x80,0x7b] + vcmpps k2, zmm17, zmmword ptr [rdx - 8192], 123 + +// CHECK: vcmpps k2, zmm17, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x40,0xc2,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vcmpps k2, zmm17, zmmword ptr [rdx - 8256], 123 + +// CHECK: vcmpps k2, zmm17, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x50,0xc2,0x52,0x7f,0x7b] + vcmpps k2, zmm17, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vcmpps k2, zmm17, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x50,0xc2,0x92,0x00,0x02,0x00,0x00,0x7b] + vcmpps k2, zmm17, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vcmpps k2, zmm17, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x50,0xc2,0x52,0x80,0x7b] + vcmpps k2, zmm17, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vcmpps k2, zmm17, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x50,0xc2,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vcmpps k2, zmm17, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vcmpsd k5, xmm19, xmm4, 171 +// CHECK: encoding: [0x62,0xf1,0xe7,0x00,0xc2,0xec,0xab] + vcmpsd k5, xmm19, xmm4, 171 + +// CHECK: vcmpsd k5 {k1}, xmm19, xmm4, 171 +// CHECK: encoding: [0x62,0xf1,0xe7,0x01,0xc2,0xec,0xab] + vcmpsd k5 {k1}, xmm19, xmm4, 171 + +// CHECK: vcmpsd k5, xmm19, xmm4, {sae}, 171 +// CHECK: encoding: [0x62,0xf1,0xe7,0x10,0xc2,0xec,0xab] + vcmpsd k5, xmm19, xmm4, {sae}, 171 + +// CHECK: vcmpsd k5, xmm19, xmm4, 123 +// CHECK: encoding: [0x62,0xf1,0xe7,0x00,0xc2,0xec,0x7b] + vcmpsd k5, xmm19, xmm4, 123 + +// CHECK: vcmpsd k5, xmm19, xmm4, {sae}, 123 +// CHECK: encoding: [0x62,0xf1,0xe7,0x10,0xc2,0xec,0x7b] + vcmpsd k5, xmm19, xmm4, {sae}, 123 + +// CHECK: vcmpsd k5, xmm19, qword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xe7,0x00,0xc2,0x29,0x7b] + vcmpsd k5, xmm19, qword ptr [rcx], 123 + +// CHECK: vcmpsd k5, xmm19, qword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0xe7,0x00,0xc2,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vcmpsd k5, xmm19, qword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vcmpsd k5, xmm19, qword ptr [rdx + 1016], 123 +// CHECK: encoding: [0x62,0xf1,0xe7,0x00,0xc2,0x6a,0x7f,0x7b] + vcmpsd k5, xmm19, qword ptr [rdx + 1016], 123 + +// CHECK: vcmpsd k5, xmm19, qword ptr [rdx + 1024], 123 +// CHECK: encoding: [0x62,0xf1,0xe7,0x00,0xc2,0xaa,0x00,0x04,0x00,0x00,0x7b] + vcmpsd k5, xmm19, qword ptr [rdx + 1024], 123 + +// CHECK: vcmpsd k5, xmm19, qword ptr [rdx - 1024], 123 +// CHECK: encoding: [0x62,0xf1,0xe7,0x00,0xc2,0x6a,0x80,0x7b] + vcmpsd k5, xmm19, qword ptr [rdx - 1024], 123 + +// CHECK: vcmpsd k5, xmm19, qword ptr [rdx - 1032], 123 +// CHECK: encoding: [0x62,0xf1,0xe7,0x00,0xc2,0xaa,0xf8,0xfb,0xff,0xff,0x7b] + vcmpsd k5, xmm19, qword ptr [rdx - 1032], 123 + +// CHECK: vcmpss k4, xmm15, xmm12, 171 +// CHECK: encoding: [0x62,0xd1,0x06,0x08,0xc2,0xe4,0xab] + vcmpss k4, xmm15, xmm12, 171 + +// CHECK: vcmpss k4 {k5}, xmm15, xmm12, 171 +// CHECK: encoding: [0x62,0xd1,0x06,0x0d,0xc2,0xe4,0xab] + vcmpss k4 {k5}, xmm15, xmm12, 171 + +// CHECK: vcmpss k4, xmm15, xmm12, {sae}, 171 +// CHECK: encoding: [0x62,0xd1,0x06,0x18,0xc2,0xe4,0xab] + vcmpss k4, xmm15, xmm12, {sae}, 171 + +// CHECK: vcmpss k4, xmm15, xmm12, 123 +// CHECK: encoding: [0x62,0xd1,0x06,0x08,0xc2,0xe4,0x7b] + vcmpss k4, xmm15, xmm12, 123 + +// CHECK: vcmpss k4, xmm15, xmm12, {sae}, 123 +// CHECK: encoding: [0x62,0xd1,0x06,0x18,0xc2,0xe4,0x7b] + vcmpss k4, xmm15, xmm12, {sae}, 123 + +// CHECK: vcmpss k4, xmm15, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x06,0x08,0xc2,0x21,0x7b] + vcmpss k4, xmm15, dword ptr [rcx], 123 + +// CHECK: vcmpss k4, xmm15, dword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x06,0x08,0xc2,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vcmpss k4, xmm15, dword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vcmpss k4, xmm15, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0xf1,0x06,0x08,0xc2,0x62,0x7f,0x7b] + vcmpss k4, xmm15, dword ptr [rdx + 508], 123 + +// CHECK: vcmpss k4, xmm15, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0xf1,0x06,0x08,0xc2,0xa2,0x00,0x02,0x00,0x00,0x7b] + vcmpss k4, xmm15, dword ptr [rdx + 512], 123 + +// CHECK: vcmpss k4, xmm15, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0xf1,0x06,0x08,0xc2,0x62,0x80,0x7b] + vcmpss k4, xmm15, dword ptr [rdx - 512], 123 + +// CHECK: vcmpss k4, xmm15, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0xf1,0x06,0x08,0xc2,0xa2,0xfc,0xfd,0xff,0xff,0x7b] + vcmpss k4, xmm15, dword ptr [rdx - 516], 123 + +// CHECK: vcomisd xmm23, xmm21 +// CHECK: encoding: [0x62,0xa1,0xfd,0x08,0x2f,0xfd] + vcomisd xmm23, xmm21 + +// CHECK: vcomisd xmm23, xmm21, {sae} +// CHECK: encoding: [0x62,0xa1,0xfd,0x18,0x2f,0xfd] + vcomisd xmm23, xmm21, {sae} + +// CHECK: vcomisd xmm23, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0x39] + vcomisd xmm23, qword ptr [rcx] + +// CHECK: vcomisd xmm23, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xfd,0x08,0x2f,0xbc,0xf0,0x23,0x01,0x00,0x00] + vcomisd xmm23, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcomisd xmm23, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0x7a,0x7f] + vcomisd xmm23, qword ptr [rdx + 1016] + +// CHECK: vcomisd xmm23, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0xba,0x00,0x04,0x00,0x00] + vcomisd xmm23, qword ptr [rdx + 1024] + +// CHECK: vcomisd xmm23, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0x7a,0x80] + vcomisd xmm23, qword ptr [rdx - 1024] + +// CHECK: vcomisd xmm23, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2f,0xba,0xf8,0xfb,0xff,0xff] + vcomisd xmm23, qword ptr [rdx - 1032] + +// CHECK: vcomiss xmm14, xmm28 +// CHECK: encoding: [0x62,0x11,0x7c,0x08,0x2f,0xf4] + vcomiss xmm14, xmm28 + +// CHECK: vcomiss xmm14, xmm28, {sae} +// CHECK: encoding: [0x62,0x11,0x7c,0x18,0x2f,0xf4] + vcomiss xmm14, xmm28, {sae} + +// CHECK: vcomiss xmm14, dword ptr [rcx] +// CHECK: encoding: [0xc5,0x78,0x2f,0x31] + vcomiss xmm14, dword ptr [rcx] + +// CHECK: vcomiss xmm14, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0x21,0x78,0x2f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vcomiss xmm14, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcomiss xmm14, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0x78,0x2f,0xb2,0xfc,0x01,0x00,0x00] + vcomiss xmm14, dword ptr [rdx + 508] + +// CHECK: vcomiss xmm14, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0x78,0x2f,0xb2,0x00,0x02,0x00,0x00] + vcomiss xmm14, dword ptr [rdx + 512] + +// CHECK: vcomiss xmm14, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0x78,0x2f,0xb2,0x00,0xfe,0xff,0xff] + vcomiss xmm14, dword ptr [rdx - 512] + +// CHECK: vcomiss xmm14, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0x78,0x2f,0xb2,0xfc,0xfd,0xff,0xff] + vcomiss xmm14, dword ptr [rdx - 516] + +// CHECK: vcompresspd zmmword ptr [rcx], zmm9 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8a,0x09] + vcompresspd zmmword ptr [rcx], zmm9 + +// CHECK: vcompresspd zmmword ptr [rcx] {k4}, zmm9 +// CHECK: encoding: [0x62,0x72,0xfd,0x4c,0x8a,0x09] + vcompresspd zmmword ptr [rcx] {k4}, zmm9 + +// CHECK: vcompresspd zmmword ptr [rax + 8*r14 + 291], zmm9 +// CHECK: encoding: [0x62,0x32,0xfd,0x48,0x8a,0x8c,0xf0,0x23,0x01,0x00,0x00] + vcompresspd zmmword ptr [rax + 8*r14 + 291], zmm9 + +// CHECK: vcompresspd zmmword ptr [rdx + 1016], zmm9 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8a,0x4a,0x7f] + vcompresspd zmmword ptr [rdx + 1016], zmm9 + +// CHECK: vcompresspd zmmword ptr [rdx + 1024], zmm9 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8a,0x8a,0x00,0x04,0x00,0x00] + vcompresspd zmmword ptr [rdx + 1024], zmm9 + +// CHECK: vcompresspd zmmword ptr [rdx - 1024], zmm9 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8a,0x4a,0x80] + vcompresspd zmmword ptr [rdx - 1024], zmm9 + +// CHECK: vcompresspd zmmword ptr [rdx - 1032], zmm9 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8a,0x8a,0xf8,0xfb,0xff,0xff] + vcompresspd zmmword ptr [rdx - 1032], zmm9 + +// CHECK: vcompresspd zmm8, zmm4 +// CHECK: encoding: [0x62,0xd2,0xfd,0x48,0x8a,0xe0] + vcompresspd zmm8, zmm4 + +// CHECK: vcompresspd zmm8 {k6}, zmm4 +// CHECK: encoding: [0x62,0xd2,0xfd,0x4e,0x8a,0xe0] + vcompresspd zmm8 {k6}, zmm4 + +// CHECK: vcompresspd zmm8 {k6} {z}, zmm4 +// CHECK: encoding: [0x62,0xd2,0xfd,0xce,0x8a,0xe0] + vcompresspd zmm8 {k6} {z}, zmm4 + +// CHECK: vcompressps zmmword ptr [rcx], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x11] + vcompressps zmmword ptr [rcx], zmm10 + +// CHECK: vcompressps zmmword ptr [rcx] {k7}, zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x4f,0x8a,0x11] + vcompressps zmmword ptr [rcx] {k7}, zmm10 + +// CHECK: vcompressps zmmword ptr [rax + 8*r14 + 291], zmm10 +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x8a,0x94,0xf0,0x23,0x01,0x00,0x00] + vcompressps zmmword ptr [rax + 8*r14 + 291], zmm10 + +// CHECK: vcompressps zmmword ptr [rdx + 508], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x52,0x7f] + vcompressps zmmword ptr [rdx + 508], zmm10 + +// CHECK: vcompressps zmmword ptr [rdx + 512], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x92,0x00,0x02,0x00,0x00] + vcompressps zmmword ptr [rdx + 512], zmm10 + +// CHECK: vcompressps zmmword ptr [rdx - 512], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x52,0x80] + vcompressps zmmword ptr [rdx - 512], zmm10 + +// CHECK: vcompressps zmmword ptr [rdx - 516], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x92,0xfc,0xfd,0xff,0xff] + vcompressps zmmword ptr [rdx - 516], zmm10 + +// CHECK: vcompressps zmm4, zmm14 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0xf4] + vcompressps zmm4, zmm14 + +// CHECK: vcompressps zmm4 {k2}, zmm14 +// CHECK: encoding: [0x62,0x72,0x7d,0x4a,0x8a,0xf4] + vcompressps zmm4 {k2}, zmm14 + +// CHECK: vcompressps zmm4 {k2} {z}, zmm14 +// CHECK: encoding: [0x62,0x72,0x7d,0xca,0x8a,0xf4] + vcompressps zmm4 {k2} {z}, zmm14 + +// CHECK: vcvtdq2pd zmm22, ymm24 +// CHECK: encoding: [0x62,0x81,0x7e,0x48,0xe6,0xf0] + vcvtdq2pd zmm22, ymm24 + +// CHECK: vcvtdq2pd zmm22 {k4}, ymm24 +// CHECK: encoding: [0x62,0x81,0x7e,0x4c,0xe6,0xf0] + vcvtdq2pd zmm22 {k4}, ymm24 + +// CHECK: vcvtdq2pd zmm22 {k4} {z}, ymm24 +// CHECK: encoding: [0x62,0x81,0x7e,0xcc,0xe6,0xf0] + vcvtdq2pd zmm22 {k4} {z}, ymm24 + +// CHECK: vcvtdq2pd zmm22, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0xe6,0x31] + vcvtdq2pd zmm22, ymmword ptr [rcx] + +// CHECK: vcvtdq2pd zmm22, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x7e,0x48,0xe6,0xb4,0xf0,0x23,0x01,0x00,0x00] + vcvtdq2pd zmm22, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtdq2pd zmm22, dword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0xe6,0x31] + vcvtdq2pd zmm22, dword ptr [rcx]{1to8} + +// CHECK: vcvtdq2pd zmm22, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0xe6,0x72,0x7f] + vcvtdq2pd zmm22, ymmword ptr [rdx + 4064] + +// CHECK: vcvtdq2pd zmm22, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0xe6,0xb2,0x00,0x10,0x00,0x00] + vcvtdq2pd zmm22, ymmword ptr [rdx + 4096] + +// CHECK: vcvtdq2pd zmm22, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0xe6,0x72,0x80] + vcvtdq2pd zmm22, ymmword ptr [rdx - 4096] + +// CHECK: vcvtdq2pd zmm22, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0xe6,0xb2,0xe0,0xef,0xff,0xff] + vcvtdq2pd zmm22, ymmword ptr [rdx - 4128] + +// CHECK: vcvtdq2pd zmm22, dword ptr [rdx + 508]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0xe6,0x72,0x7f] + vcvtdq2pd zmm22, dword ptr [rdx + 508]{1to8} + +// CHECK: vcvtdq2pd zmm22, dword ptr [rdx + 512]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0xe6,0xb2,0x00,0x02,0x00,0x00] + vcvtdq2pd zmm22, dword ptr [rdx + 512]{1to8} + +// CHECK: vcvtdq2pd zmm22, dword ptr [rdx - 512]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0xe6,0x72,0x80] + vcvtdq2pd zmm22, dword ptr [rdx - 512]{1to8} + +// CHECK: vcvtdq2pd zmm22, dword ptr [rdx - 516]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0xe6,0xb2,0xfc,0xfd,0xff,0xff] + vcvtdq2pd zmm22, dword ptr [rdx - 516]{1to8} + +// CHECK: vcvtdq2ps zmm7, zmm25 +// CHECK: encoding: [0x62,0x91,0x7c,0x48,0x5b,0xf9] + vcvtdq2ps zmm7, zmm25 + +// CHECK: vcvtdq2ps zmm7 {k5}, zmm25 +// CHECK: encoding: [0x62,0x91,0x7c,0x4d,0x5b,0xf9] + vcvtdq2ps zmm7 {k5}, zmm25 + +// CHECK: vcvtdq2ps zmm7 {k5} {z}, zmm25 +// CHECK: encoding: [0x62,0x91,0x7c,0xcd,0x5b,0xf9] + vcvtdq2ps zmm7 {k5} {z}, zmm25 + +// CHECK: vcvtdq2ps zmm7, zmm25, {rn-sae} +// CHECK: encoding: [0x62,0x91,0x7c,0x18,0x5b,0xf9] + vcvtdq2ps zmm7, zmm25, {rn-sae} + +// CHECK: vcvtdq2ps zmm7, zmm25, {ru-sae} +// CHECK: encoding: [0x62,0x91,0x7c,0x58,0x5b,0xf9] + vcvtdq2ps zmm7, zmm25, {ru-sae} + +// CHECK: vcvtdq2ps zmm7, zmm25, {rd-sae} +// CHECK: encoding: [0x62,0x91,0x7c,0x38,0x5b,0xf9] + vcvtdq2ps zmm7, zmm25, {rd-sae} + +// CHECK: vcvtdq2ps zmm7, zmm25, {rz-sae} +// CHECK: encoding: [0x62,0x91,0x7c,0x78,0x5b,0xf9] + vcvtdq2ps zmm7, zmm25, {rz-sae} + +// CHECK: vcvtdq2ps zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x5b,0x39] + vcvtdq2ps zmm7, zmmword ptr [rcx] + +// CHECK: vcvtdq2ps zmm7, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x5b,0xbc,0xf0,0x23,0x01,0x00,0x00] + vcvtdq2ps zmm7, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtdq2ps zmm7, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x5b,0x39] + vcvtdq2ps zmm7, dword ptr [rcx]{1to16} + +// CHECK: vcvtdq2ps zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x5b,0x7a,0x7f] + vcvtdq2ps zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vcvtdq2ps zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x5b,0xba,0x00,0x20,0x00,0x00] + vcvtdq2ps zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vcvtdq2ps zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x5b,0x7a,0x80] + vcvtdq2ps zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vcvtdq2ps zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x5b,0xba,0xc0,0xdf,0xff,0xff] + vcvtdq2ps zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vcvtdq2ps zmm7, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x5b,0x7a,0x7f] + vcvtdq2ps zmm7, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvtdq2ps zmm7, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x5b,0xba,0x00,0x02,0x00,0x00] + vcvtdq2ps zmm7, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvtdq2ps zmm7, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x5b,0x7a,0x80] + vcvtdq2ps zmm7, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvtdq2ps zmm7, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x5b,0xba,0xfc,0xfd,0xff,0xff] + vcvtdq2ps zmm7, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvtpd2dq ymm24, zmm15 +// CHECK: encoding: [0x62,0x41,0xff,0x48,0xe6,0xc7] + vcvtpd2dq ymm24, zmm15 + +// CHECK: vcvtpd2dq ymm24 {k3}, zmm15 +// CHECK: encoding: [0x62,0x41,0xff,0x4b,0xe6,0xc7] + vcvtpd2dq ymm24 {k3}, zmm15 + +// CHECK: vcvtpd2dq ymm24 {k3} {z}, zmm15 +// CHECK: encoding: [0x62,0x41,0xff,0xcb,0xe6,0xc7] + vcvtpd2dq ymm24 {k3} {z}, zmm15 + +// CHECK: vcvtpd2dq ymm24, zmm15, {rn-sae} +// CHECK: encoding: [0x62,0x41,0xff,0x18,0xe6,0xc7] + vcvtpd2dq ymm24, zmm15, {rn-sae} + +// CHECK: vcvtpd2dq ymm24, zmm15, {ru-sae} +// CHECK: encoding: [0x62,0x41,0xff,0x58,0xe6,0xc7] + vcvtpd2dq ymm24, zmm15, {ru-sae} + +// CHECK: vcvtpd2dq ymm24, zmm15, {rd-sae} +// CHECK: encoding: [0x62,0x41,0xff,0x38,0xe6,0xc7] + vcvtpd2dq ymm24, zmm15, {rd-sae} + +// CHECK: vcvtpd2dq ymm24, zmm15, {rz-sae} +// CHECK: encoding: [0x62,0x41,0xff,0x78,0xe6,0xc7] + vcvtpd2dq ymm24, zmm15, {rz-sae} + +// CHECK: vcvtpd2dq ymm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xff,0x48,0xe6,0x01] + vcvtpd2dq ymm24, zmmword ptr [rcx] + +// CHECK: vcvtpd2dq ymm24, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0xff,0x48,0xe6,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvtpd2dq ymm24, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtpd2dq ymm24, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0xff,0x58,0xe6,0x01] + vcvtpd2dq ymm24, qword ptr [rcx]{1to8} + +// CHECK: vcvtpd2dq ymm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xff,0x48,0xe6,0x42,0x7f] + vcvtpd2dq ymm24, zmmword ptr [rdx + 8128] + +// CHECK: vcvtpd2dq ymm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xff,0x48,0xe6,0x82,0x00,0x20,0x00,0x00] + vcvtpd2dq ymm24, zmmword ptr [rdx + 8192] + +// CHECK: vcvtpd2dq ymm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xff,0x48,0xe6,0x42,0x80] + vcvtpd2dq ymm24, zmmword ptr [rdx - 8192] + +// CHECK: vcvtpd2dq ymm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xff,0x48,0xe6,0x82,0xc0,0xdf,0xff,0xff] + vcvtpd2dq ymm24, zmmword ptr [rdx - 8256] + +// CHECK: vcvtpd2dq ymm24, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0xff,0x58,0xe6,0x42,0x7f] + vcvtpd2dq ymm24, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvtpd2dq ymm24, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xff,0x58,0xe6,0x82,0x00,0x04,0x00,0x00] + vcvtpd2dq ymm24, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvtpd2dq ymm24, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xff,0x58,0xe6,0x42,0x80] + vcvtpd2dq ymm24, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvtpd2dq ymm24, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0xff,0x58,0xe6,0x82,0xf8,0xfb,0xff,0xff] + vcvtpd2dq ymm24, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvtpd2ps ymm5, zmm23 +// CHECK: encoding: [0x62,0xb1,0xfd,0x48,0x5a,0xef] + vcvtpd2ps ymm5, zmm23 + +// CHECK: vcvtpd2ps ymm5 {k5}, zmm23 +// CHECK: encoding: [0x62,0xb1,0xfd,0x4d,0x5a,0xef] + vcvtpd2ps ymm5 {k5}, zmm23 + +// CHECK: vcvtpd2ps ymm5 {k5} {z}, zmm23 +// CHECK: encoding: [0x62,0xb1,0xfd,0xcd,0x5a,0xef] + vcvtpd2ps ymm5 {k5} {z}, zmm23 + +// CHECK: vcvtpd2ps ymm5, zmm23, {rn-sae} +// CHECK: encoding: [0x62,0xb1,0xfd,0x18,0x5a,0xef] + vcvtpd2ps ymm5, zmm23, {rn-sae} + +// CHECK: vcvtpd2ps ymm5, zmm23, {ru-sae} +// CHECK: encoding: [0x62,0xb1,0xfd,0x58,0x5a,0xef] + vcvtpd2ps ymm5, zmm23, {ru-sae} + +// CHECK: vcvtpd2ps ymm5, zmm23, {rd-sae} +// CHECK: encoding: [0x62,0xb1,0xfd,0x38,0x5a,0xef] + vcvtpd2ps ymm5, zmm23, {rd-sae} + +// CHECK: vcvtpd2ps ymm5, zmm23, {rz-sae} +// CHECK: encoding: [0x62,0xb1,0xfd,0x78,0x5a,0xef] + vcvtpd2ps ymm5, zmm23, {rz-sae} + +// CHECK: vcvtpd2ps ymm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x5a,0x29] + vcvtpd2ps ymm5, zmmword ptr [rcx] + +// CHECK: vcvtpd2ps ymm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xfd,0x48,0x5a,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtpd2ps ymm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtpd2ps ymm5, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0x5a,0x29] + vcvtpd2ps ymm5, qword ptr [rcx]{1to8} + +// CHECK: vcvtpd2ps ymm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x5a,0x6a,0x7f] + vcvtpd2ps ymm5, zmmword ptr [rdx + 8128] + +// CHECK: vcvtpd2ps ymm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x5a,0xaa,0x00,0x20,0x00,0x00] + vcvtpd2ps ymm5, zmmword ptr [rdx + 8192] + +// CHECK: vcvtpd2ps ymm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x5a,0x6a,0x80] + vcvtpd2ps ymm5, zmmword ptr [rdx - 8192] + +// CHECK: vcvtpd2ps ymm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x5a,0xaa,0xc0,0xdf,0xff,0xff] + vcvtpd2ps ymm5, zmmword ptr [rdx - 8256] + +// CHECK: vcvtpd2ps ymm5, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0x5a,0x6a,0x7f] + vcvtpd2ps ymm5, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvtpd2ps ymm5, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0x5a,0xaa,0x00,0x04,0x00,0x00] + vcvtpd2ps ymm5, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvtpd2ps ymm5, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0x5a,0x6a,0x80] + vcvtpd2ps ymm5, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvtpd2ps ymm5, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0x5a,0xaa,0xf8,0xfb,0xff,0xff] + vcvtpd2ps ymm5, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvtpd2udq ymm15, zmm19 +// CHECK: encoding: [0x62,0x31,0xfc,0x48,0x79,0xfb] + vcvtpd2udq ymm15, zmm19 + +// CHECK: vcvtpd2udq ymm15 {k7}, zmm19 +// CHECK: encoding: [0x62,0x31,0xfc,0x4f,0x79,0xfb] + vcvtpd2udq ymm15 {k7}, zmm19 + +// CHECK: vcvtpd2udq ymm15 {k7} {z}, zmm19 +// CHECK: encoding: [0x62,0x31,0xfc,0xcf,0x79,0xfb] + vcvtpd2udq ymm15 {k7} {z}, zmm19 + +// CHECK: vcvtpd2udq ymm15, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0x31,0xfc,0x18,0x79,0xfb] + vcvtpd2udq ymm15, zmm19, {rn-sae} + +// CHECK: vcvtpd2udq ymm15, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0x31,0xfc,0x58,0x79,0xfb] + vcvtpd2udq ymm15, zmm19, {ru-sae} + +// CHECK: vcvtpd2udq ymm15, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0x31,0xfc,0x38,0x79,0xfb] + vcvtpd2udq ymm15, zmm19, {rd-sae} + +// CHECK: vcvtpd2udq ymm15, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0x31,0xfc,0x78,0x79,0xfb] + vcvtpd2udq ymm15, zmm19, {rz-sae} + +// CHECK: vcvtpd2udq ymm15, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xfc,0x48,0x79,0x39] + vcvtpd2udq ymm15, zmmword ptr [rcx] + +// CHECK: vcvtpd2udq ymm15, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xfc,0x48,0x79,0xbc,0xf0,0x23,0x01,0x00,0x00] + vcvtpd2udq ymm15, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtpd2udq ymm15, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0xfc,0x58,0x79,0x39] + vcvtpd2udq ymm15, qword ptr [rcx]{1to8} + +// CHECK: vcvtpd2udq ymm15, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xfc,0x48,0x79,0x7a,0x7f] + vcvtpd2udq ymm15, zmmword ptr [rdx + 8128] + +// CHECK: vcvtpd2udq ymm15, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xfc,0x48,0x79,0xba,0x00,0x20,0x00,0x00] + vcvtpd2udq ymm15, zmmword ptr [rdx + 8192] + +// CHECK: vcvtpd2udq ymm15, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xfc,0x48,0x79,0x7a,0x80] + vcvtpd2udq ymm15, zmmword ptr [rdx - 8192] + +// CHECK: vcvtpd2udq ymm15, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xfc,0x48,0x79,0xba,0xc0,0xdf,0xff,0xff] + vcvtpd2udq ymm15, zmmword ptr [rdx - 8256] + +// CHECK: vcvtpd2udq ymm15, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0xfc,0x58,0x79,0x7a,0x7f] + vcvtpd2udq ymm15, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvtpd2udq ymm15, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xfc,0x58,0x79,0xba,0x00,0x04,0x00,0x00] + vcvtpd2udq ymm15, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvtpd2udq ymm15, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xfc,0x58,0x79,0x7a,0x80] + vcvtpd2udq ymm15, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvtpd2udq ymm15, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0xfc,0x58,0x79,0xba,0xf8,0xfb,0xff,0xff] + vcvtpd2udq ymm15, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvtph2ps zmm13, ymm27 +// CHECK: encoding: [0x62,0x12,0x7d,0x48,0x13,0xeb] + vcvtph2ps zmm13, ymm27 + +// CHECK: vcvtph2ps zmm13 {k3}, ymm27 +// CHECK: encoding: [0x62,0x12,0x7d,0x4b,0x13,0xeb] + vcvtph2ps zmm13 {k3}, ymm27 + +// CHECK: vcvtph2ps zmm13 {k3} {z}, ymm27 +// CHECK: encoding: [0x62,0x12,0x7d,0xcb,0x13,0xeb] + vcvtph2ps zmm13 {k3} {z}, ymm27 + +// CHECK: vcvtph2ps zmm13, ymm27, {sae} +// CHECK: encoding: [0x62,0x12,0x7d,0x18,0x13,0xeb] + vcvtph2ps zmm13, ymm27, {sae} + +// CHECK: vcvtph2ps zmm13, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0x29] + vcvtph2ps zmm13, ymmword ptr [rcx] + +// CHECK: vcvtph2ps zmm13, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x13,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtph2ps zmm13, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtph2ps zmm13, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0x6a,0x7f] + vcvtph2ps zmm13, ymmword ptr [rdx + 4064] + +// CHECK: vcvtph2ps zmm13, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0xaa,0x00,0x10,0x00,0x00] + vcvtph2ps zmm13, ymmword ptr [rdx + 4096] + +// CHECK: vcvtph2ps zmm13, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0x6a,0x80] + vcvtph2ps zmm13, ymmword ptr [rdx - 4096] + +// CHECK: vcvtph2ps zmm13, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0xaa,0xe0,0xef,0xff,0xff] + vcvtph2ps zmm13, ymmword ptr [rdx - 4128] + +// CHECK: vcvtps2dq zmm12, zmm24 +// CHECK: encoding: [0x62,0x11,0x7d,0x48,0x5b,0xe0] + vcvtps2dq zmm12, zmm24 + +// CHECK: vcvtps2dq zmm12 {k4}, zmm24 +// CHECK: encoding: [0x62,0x11,0x7d,0x4c,0x5b,0xe0] + vcvtps2dq zmm12 {k4}, zmm24 + +// CHECK: vcvtps2dq zmm12 {k4} {z}, zmm24 +// CHECK: encoding: [0x62,0x11,0x7d,0xcc,0x5b,0xe0] + vcvtps2dq zmm12 {k4} {z}, zmm24 + +// CHECK: vcvtps2dq zmm12, zmm24, {rn-sae} +// CHECK: encoding: [0x62,0x11,0x7d,0x18,0x5b,0xe0] + vcvtps2dq zmm12, zmm24, {rn-sae} + +// CHECK: vcvtps2dq zmm12, zmm24, {ru-sae} +// CHECK: encoding: [0x62,0x11,0x7d,0x58,0x5b,0xe0] + vcvtps2dq zmm12, zmm24, {ru-sae} + +// CHECK: vcvtps2dq zmm12, zmm24, {rd-sae} +// CHECK: encoding: [0x62,0x11,0x7d,0x38,0x5b,0xe0] + vcvtps2dq zmm12, zmm24, {rd-sae} + +// CHECK: vcvtps2dq zmm12, zmm24, {rz-sae} +// CHECK: encoding: [0x62,0x11,0x7d,0x78,0x5b,0xe0] + vcvtps2dq zmm12, zmm24, {rz-sae} + +// CHECK: vcvtps2dq zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7d,0x48,0x5b,0x21] + vcvtps2dq zmm12, zmmword ptr [rcx] + +// CHECK: vcvtps2dq zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7d,0x48,0x5b,0xa4,0xf0,0x23,0x01,0x00,0x00] + vcvtps2dq zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtps2dq zmm12, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x71,0x7d,0x58,0x5b,0x21] + vcvtps2dq zmm12, dword ptr [rcx]{1to16} + +// CHECK: vcvtps2dq zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x7d,0x48,0x5b,0x62,0x7f] + vcvtps2dq zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vcvtps2dq zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x7d,0x48,0x5b,0xa2,0x00,0x20,0x00,0x00] + vcvtps2dq zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vcvtps2dq zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x7d,0x48,0x5b,0x62,0x80] + vcvtps2dq zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vcvtps2dq zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x7d,0x48,0x5b,0xa2,0xc0,0xdf,0xff,0xff] + vcvtps2dq zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vcvtps2dq zmm12, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x71,0x7d,0x58,0x5b,0x62,0x7f] + vcvtps2dq zmm12, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvtps2dq zmm12, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x7d,0x58,0x5b,0xa2,0x00,0x02,0x00,0x00] + vcvtps2dq zmm12, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvtps2dq zmm12, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x7d,0x58,0x5b,0x62,0x80] + vcvtps2dq zmm12, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvtps2dq zmm12, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x71,0x7d,0x58,0x5b,0xa2,0xfc,0xfd,0xff,0xff] + vcvtps2dq zmm12, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvtps2pd zmm13, ymm6 +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0xee] + vcvtps2pd zmm13, ymm6 + +// CHECK: vcvtps2pd zmm13 {k3}, ymm6 +// CHECK: encoding: [0x62,0x71,0x7c,0x4b,0x5a,0xee] + vcvtps2pd zmm13 {k3}, ymm6 + +// CHECK: vcvtps2pd zmm13 {k3} {z}, ymm6 +// CHECK: encoding: [0x62,0x71,0x7c,0xcb,0x5a,0xee] + vcvtps2pd zmm13 {k3} {z}, ymm6 + +// CHECK: vcvtps2pd zmm13, ymm6, {sae} +// CHECK: encoding: [0x62,0x71,0x7c,0x18,0x5a,0xee] + vcvtps2pd zmm13, ymm6, {sae} + +// CHECK: vcvtps2pd zmm13, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0x29] + vcvtps2pd zmm13, ymmword ptr [rcx] + +// CHECK: vcvtps2pd zmm13, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7c,0x48,0x5a,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtps2pd zmm13, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtps2pd zmm13, dword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0x29] + vcvtps2pd zmm13, dword ptr [rcx]{1to8} + +// CHECK: vcvtps2pd zmm13, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0x6a,0x7f] + vcvtps2pd zmm13, ymmword ptr [rdx + 4064] + +// CHECK: vcvtps2pd zmm13, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0xaa,0x00,0x10,0x00,0x00] + vcvtps2pd zmm13, ymmword ptr [rdx + 4096] + +// CHECK: vcvtps2pd zmm13, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0x6a,0x80] + vcvtps2pd zmm13, ymmword ptr [rdx - 4096] + +// CHECK: vcvtps2pd zmm13, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0xaa,0xe0,0xef,0xff,0xff] + vcvtps2pd zmm13, ymmword ptr [rdx - 4128] + +// CHECK: vcvtps2pd zmm13, dword ptr [rdx + 508]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0x6a,0x7f] + vcvtps2pd zmm13, dword ptr [rdx + 508]{1to8} + +// CHECK: vcvtps2pd zmm13, dword ptr [rdx + 512]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0xaa,0x00,0x02,0x00,0x00] + vcvtps2pd zmm13, dword ptr [rdx + 512]{1to8} + +// CHECK: vcvtps2pd zmm13, dword ptr [rdx - 512]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0x6a,0x80] + vcvtps2pd zmm13, dword ptr [rdx - 512]{1to8} + +// CHECK: vcvtps2pd zmm13, dword ptr [rdx - 516]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0xaa,0xfc,0xfd,0xff,0xff] + vcvtps2pd zmm13, dword ptr [rdx - 516]{1to8} + +// CHECK: vcvtps2ph ymm11, zmm14, 171 +// CHECK: encoding: [0x62,0x53,0x7d,0x48,0x1d,0xf3,0xab] + vcvtps2ph ymm11, zmm14, 171 + +// CHECK: vcvtps2ph ymm11 {k6}, zmm14, 171 +// CHECK: encoding: [0x62,0x53,0x7d,0x4e,0x1d,0xf3,0xab] + vcvtps2ph ymm11 {k6}, zmm14, 171 + +// CHECK: vcvtps2ph ymm11 {k6} {z}, zmm14, 171 +// CHECK: encoding: [0x62,0x53,0x7d,0xce,0x1d,0xf3,0xab] + vcvtps2ph ymm11 {k6} {z}, zmm14, 171 + +// CHECK: vcvtps2ph ymm11, zmm14, {sae}, 171 +// CHECK: encoding: [0x62,0x53,0x7d,0x18,0x1d,0xf3,0xab] + vcvtps2ph ymm11, zmm14, {sae}, 171 + +// CHECK: vcvtps2ph ymm11, zmm14, 123 +// CHECK: encoding: [0x62,0x53,0x7d,0x48,0x1d,0xf3,0x7b] + vcvtps2ph ymm11, zmm14, 123 + +// CHECK: vcvtps2ph ymm11, zmm14, {sae}, 123 +// CHECK: encoding: [0x62,0x53,0x7d,0x18,0x1d,0xf3,0x7b] + vcvtps2ph ymm11, zmm14, {sae}, 123 + +// CHECK: vcvtps2udq zmm12, zmm26 +// CHECK: encoding: [0x62,0x11,0x7c,0x48,0x79,0xe2] + vcvtps2udq zmm12, zmm26 + +// CHECK: vcvtps2udq zmm12 {k4}, zmm26 +// CHECK: encoding: [0x62,0x11,0x7c,0x4c,0x79,0xe2] + vcvtps2udq zmm12 {k4}, zmm26 + +// CHECK: vcvtps2udq zmm12 {k4} {z}, zmm26 +// CHECK: encoding: [0x62,0x11,0x7c,0xcc,0x79,0xe2] + vcvtps2udq zmm12 {k4} {z}, zmm26 + +// CHECK: vcvtps2udq zmm12, zmm26, {rn-sae} +// CHECK: encoding: [0x62,0x11,0x7c,0x18,0x79,0xe2] + vcvtps2udq zmm12, zmm26, {rn-sae} + +// CHECK: vcvtps2udq zmm12, zmm26, {ru-sae} +// CHECK: encoding: [0x62,0x11,0x7c,0x58,0x79,0xe2] + vcvtps2udq zmm12, zmm26, {ru-sae} + +// CHECK: vcvtps2udq zmm12, zmm26, {rd-sae} +// CHECK: encoding: [0x62,0x11,0x7c,0x38,0x79,0xe2] + vcvtps2udq zmm12, zmm26, {rd-sae} + +// CHECK: vcvtps2udq zmm12, zmm26, {rz-sae} +// CHECK: encoding: [0x62,0x11,0x7c,0x78,0x79,0xe2] + vcvtps2udq zmm12, zmm26, {rz-sae} + +// CHECK: vcvtps2udq zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x79,0x21] + vcvtps2udq zmm12, zmmword ptr [rcx] + +// CHECK: vcvtps2udq zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7c,0x48,0x79,0xa4,0xf0,0x23,0x01,0x00,0x00] + vcvtps2udq zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtps2udq zmm12, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x79,0x21] + vcvtps2udq zmm12, dword ptr [rcx]{1to16} + +// CHECK: vcvtps2udq zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x79,0x62,0x7f] + vcvtps2udq zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vcvtps2udq zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x79,0xa2,0x00,0x20,0x00,0x00] + vcvtps2udq zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vcvtps2udq zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x79,0x62,0x80] + vcvtps2udq zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vcvtps2udq zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x79,0xa2,0xc0,0xdf,0xff,0xff] + vcvtps2udq zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vcvtps2udq zmm12, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x79,0x62,0x7f] + vcvtps2udq zmm12, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvtps2udq zmm12, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x79,0xa2,0x00,0x02,0x00,0x00] + vcvtps2udq zmm12, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvtps2udq zmm12, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x79,0x62,0x80] + vcvtps2udq zmm12, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvtps2udq zmm12, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x79,0xa2,0xfc,0xfd,0xff,0xff] + vcvtps2udq zmm12, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvtsd2si eax, xmm7, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x18,0x2d,0xc7] + vcvtsd2si eax, xmm7, {rn-sae} + +// CHECK: vcvtsd2si eax, xmm7, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x2d,0xc7] + vcvtsd2si eax, xmm7, {ru-sae} + +// CHECK: vcvtsd2si eax, xmm7, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x38,0x2d,0xc7] + vcvtsd2si eax, xmm7, {rd-sae} + +// CHECK: vcvtsd2si eax, xmm7, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x78,0x2d,0xc7] + vcvtsd2si eax, xmm7, {rz-sae} + +// CHECK: vcvtsd2si ebp, xmm7, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x18,0x2d,0xef] + vcvtsd2si ebp, xmm7, {rn-sae} + +// CHECK: vcvtsd2si ebp, xmm7, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x2d,0xef] + vcvtsd2si ebp, xmm7, {ru-sae} + +// CHECK: vcvtsd2si ebp, xmm7, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x38,0x2d,0xef] + vcvtsd2si ebp, xmm7, {rd-sae} + +// CHECK: vcvtsd2si ebp, xmm7, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x78,0x2d,0xef] + vcvtsd2si ebp, xmm7, {rz-sae} + +// CHECK: vcvtsd2si r13d, xmm7, {rn-sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x18,0x2d,0xef] + vcvtsd2si r13d, xmm7, {rn-sae} + +// CHECK: vcvtsd2si r13d, xmm7, {ru-sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x58,0x2d,0xef] + vcvtsd2si r13d, xmm7, {ru-sae} + +// CHECK: vcvtsd2si r13d, xmm7, {rd-sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x38,0x2d,0xef] + vcvtsd2si r13d, xmm7, {rd-sae} + +// CHECK: vcvtsd2si r13d, xmm7, {rz-sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x78,0x2d,0xef] + vcvtsd2si r13d, xmm7, {rz-sae} + +// CHECK: vcvtsd2si rax, xmm10, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0xff,0x18,0x2d,0xc2] + vcvtsd2si rax, xmm10, {rn-sae} + +// CHECK: vcvtsd2si rax, xmm10, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0xff,0x58,0x2d,0xc2] + vcvtsd2si rax, xmm10, {ru-sae} + +// CHECK: vcvtsd2si rax, xmm10, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0xff,0x38,0x2d,0xc2] + vcvtsd2si rax, xmm10, {rd-sae} + +// CHECK: vcvtsd2si rax, xmm10, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0xff,0x78,0x2d,0xc2] + vcvtsd2si rax, xmm10, {rz-sae} + +// CHECK: vcvtsd2si r8, xmm10, {rn-sae} +// CHECK: encoding: [0x62,0x51,0xff,0x18,0x2d,0xc2] + vcvtsd2si r8, xmm10, {rn-sae} + +// CHECK: vcvtsd2si r8, xmm10, {ru-sae} +// CHECK: encoding: [0x62,0x51,0xff,0x58,0x2d,0xc2] + vcvtsd2si r8, xmm10, {ru-sae} + +// CHECK: vcvtsd2si r8, xmm10, {rd-sae} +// CHECK: encoding: [0x62,0x51,0xff,0x38,0x2d,0xc2] + vcvtsd2si r8, xmm10, {rd-sae} + +// CHECK: vcvtsd2si r8, xmm10, {rz-sae} +// CHECK: encoding: [0x62,0x51,0xff,0x78,0x2d,0xc2] + vcvtsd2si r8, xmm10, {rz-sae} + +// CHECK: vcvtsd2ss xmm17, xmm9, xmm12 +// CHECK: encoding: [0x62,0xc1,0xb7,0x48,0x5a,0xcc] + vcvtsd2ss xmm17, xmm9, xmm12 + +// CHECK: vcvtsd2ss xmm17 {k6}, xmm9, xmm12 +// CHECK: encoding: [0x62,0xc1,0xb7,0x4e,0x5a,0xcc] + vcvtsd2ss xmm17 {k6}, xmm9, xmm12 + +// CHECK: vcvtsd2ss xmm17 {k6} {z}, xmm9, xmm12 +// CHECK: encoding: [0x62,0xc1,0xb7,0xce,0x5a,0xcc] + vcvtsd2ss xmm17 {k6} {z}, xmm9, xmm12 + +// CHECK: vcvtsd2ss xmm17, xmm9, xmm12, {rn-sae} +// CHECK: encoding: [0x62,0xc1,0xb7,0x18,0x5a,0xcc] + vcvtsd2ss xmm17, xmm9, xmm12, {rn-sae} + +// CHECK: vcvtsd2ss xmm17, xmm9, xmm12, {ru-sae} +// CHECK: encoding: [0x62,0xc1,0xb7,0x58,0x5a,0xcc] + vcvtsd2ss xmm17, xmm9, xmm12, {ru-sae} + +// CHECK: vcvtsd2ss xmm17, xmm9, xmm12, {rd-sae} +// CHECK: encoding: [0x62,0xc1,0xb7,0x38,0x5a,0xcc] + vcvtsd2ss xmm17, xmm9, xmm12, {rd-sae} + +// CHECK: vcvtsd2ss xmm17, xmm9, xmm12, {rz-sae} +// CHECK: encoding: [0x62,0xc1,0xb7,0x78,0x5a,0xcc] + vcvtsd2ss xmm17, xmm9, xmm12, {rz-sae} + +// CHECK: vcvtsd2ss xmm17, xmm9, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xb7,0x48,0x5a,0x09] + vcvtsd2ss xmm17, xmm9, qword ptr [rcx] + +// CHECK: vcvtsd2ss xmm17, xmm9, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xb7,0x48,0x5a,0x8c,0xf0,0x23,0x01,0x00,0x00] + vcvtsd2ss xmm17, xmm9, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsd2ss xmm17, xmm9, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xb7,0x48,0x5a,0x4a,0x7f] + vcvtsd2ss xmm17, xmm9, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2ss xmm17, xmm9, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xb7,0x48,0x5a,0x8a,0x00,0x04,0x00,0x00] + vcvtsd2ss xmm17, xmm9, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2ss xmm17, xmm9, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xb7,0x48,0x5a,0x4a,0x80] + vcvtsd2ss xmm17, xmm9, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2ss xmm17, xmm9, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xb7,0x48,0x5a,0x8a,0xf8,0xfb,0xff,0xff] + vcvtsd2ss xmm17, xmm9, qword ptr [rdx - 1032] + +// CHECK: vcvtsi2sd xmm7, xmm10, eax +// CHECK: encoding: [0xc5,0xab,0x2a,0xf8] + vcvtsi2sd xmm7, xmm10, eax + +// CHECK: vcvtsi2sd xmm7, xmm10, ebp +// CHECK: encoding: [0xc5,0xab,0x2a,0xfd] + vcvtsi2sd xmm7, xmm10, ebp + +// CHECK: vcvtsi2sd xmm7, xmm10, r13d +// CHECK: encoding: [0xc4,0xc1,0x2b,0x2a,0xfd] + vcvtsi2sd xmm7, xmm10, r13d + +// CHECK: vcvtsi2sd xmm7, xmm10, dword ptr [rcx] +// CHECK: encoding: [0xc5,0xab,0x2a,0x39] + vcvtsi2sd xmm7, xmm10, dword ptr [rcx] + +// CHECK: vcvtsi2sd xmm7, xmm10, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa1,0x2b,0x2a,0xbc,0xf0,0x23,0x01,0x00,0x00] + vcvtsi2sd xmm7, xmm10, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsi2sd xmm7, xmm10, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0xab,0x2a,0xba,0xfc,0x01,0x00,0x00] + vcvtsi2sd xmm7, xmm10, dword ptr [rdx + 508] + +// CHECK: vcvtsi2sd xmm7, xmm10, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0xab,0x2a,0xba,0x00,0x02,0x00,0x00] + vcvtsi2sd xmm7, xmm10, dword ptr [rdx + 512] + +// CHECK: vcvtsi2sd xmm7, xmm10, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0xab,0x2a,0xba,0x00,0xfe,0xff,0xff] + vcvtsi2sd xmm7, xmm10, dword ptr [rdx - 512] + +// CHECK: vcvtsi2sd xmm7, xmm10, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0xab,0x2a,0xba,0xfc,0xfd,0xff,0xff] + vcvtsi2sd xmm7, xmm10, dword ptr [rdx - 516] + +// CHECK: vcvtsi2sd xmm29, xmm12, rax +// CHECK: encoding: [0x62,0x61,0x9f,0x08,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, rax + +// CHECK: vcvtsi2sd xmm29, xmm12, {rn-sae}, rax +// CHECK: encoding: [0x62,0x61,0x9f,0x18,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, {rn-sae}, rax + +// CHECK: vcvtsi2sd xmm29, xmm12, {ru-sae}, rax +// CHECK: encoding: [0x62,0x61,0x9f,0x58,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, {ru-sae}, rax + +// CHECK: vcvtsi2sd xmm29, xmm12, {rd-sae}, rax +// CHECK: encoding: [0x62,0x61,0x9f,0x38,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, {rd-sae}, rax + +// CHECK: vcvtsi2sd xmm29, xmm12, {rz-sae}, rax +// CHECK: encoding: [0x62,0x61,0x9f,0x78,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, {rz-sae}, rax + +// CHECK: vcvtsi2sd xmm29, xmm12, r8 +// CHECK: encoding: [0x62,0x41,0x9f,0x08,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, r8 + +// CHECK: vcvtsi2sd xmm29, xmm12, {rn-sae}, r8 +// CHECK: encoding: [0x62,0x41,0x9f,0x18,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, {rn-sae}, r8 + +// CHECK: vcvtsi2sd xmm29, xmm12, {ru-sae}, r8 +// CHECK: encoding: [0x62,0x41,0x9f,0x58,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, {ru-sae}, r8 + +// CHECK: vcvtsi2sd xmm29, xmm12, {rd-sae}, r8 +// CHECK: encoding: [0x62,0x41,0x9f,0x38,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, {rd-sae}, r8 + +// CHECK: vcvtsi2sd xmm29, xmm12, {rz-sae}, r8 +// CHECK: encoding: [0x62,0x41,0x9f,0x78,0x2a,0xe8] + vcvtsi2sd xmm29, xmm12, {rz-sae}, r8 + +// CHECK: vcvtsi2sd xmm29, xmm12, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x9f,0x08,0x2a,0x29] + vcvtsi2sd xmm29, xmm12, qword ptr [rcx] + +// CHECK: vcvtsi2sd xmm29, xmm12, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x9f,0x08,0x2a,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtsi2sd xmm29, xmm12, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsi2sd xmm29, xmm12, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x61,0x9f,0x08,0x2a,0x6a,0x7f] + vcvtsi2sd xmm29, xmm12, qword ptr [rdx + 1016] + +// CHECK: vcvtsi2sd xmm29, xmm12, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x61,0x9f,0x08,0x2a,0xaa,0x00,0x04,0x00,0x00] + vcvtsi2sd xmm29, xmm12, qword ptr [rdx + 1024] + +// CHECK: vcvtsi2sd xmm29, xmm12, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x61,0x9f,0x08,0x2a,0x6a,0x80] + vcvtsi2sd xmm29, xmm12, qword ptr [rdx - 1024] + +// CHECK: vcvtsi2sd xmm29, xmm12, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x61,0x9f,0x08,0x2a,0xaa,0xf8,0xfb,0xff,0xff] + vcvtsi2sd xmm29, xmm12, qword ptr [rdx - 1032] + +// CHECK: vcvtsi2ss xmm15, xmm10, eax +// CHECK: encoding: [0xc5,0x2a,0x2a,0xf8] + vcvtsi2ss xmm15, xmm10, eax + +// CHECK: vcvtsi2ss xmm15, xmm10, {rn-sae}, eax +// CHECK: encoding: [0x62,0x71,0x2e,0x18,0x2a,0xf8] + vcvtsi2ss xmm15, xmm10, {rn-sae}, eax + +// CHECK: vcvtsi2ss xmm15, xmm10, {ru-sae}, eax +// CHECK: encoding: [0x62,0x71,0x2e,0x58,0x2a,0xf8] + vcvtsi2ss xmm15, xmm10, {ru-sae}, eax + +// CHECK: vcvtsi2ss xmm15, xmm10, {rd-sae}, eax +// CHECK: encoding: [0x62,0x71,0x2e,0x38,0x2a,0xf8] + vcvtsi2ss xmm15, xmm10, {rd-sae}, eax + +// CHECK: vcvtsi2ss xmm15, xmm10, {rz-sae}, eax +// CHECK: encoding: [0x62,0x71,0x2e,0x78,0x2a,0xf8] + vcvtsi2ss xmm15, xmm10, {rz-sae}, eax + +// CHECK: vcvtsi2ss xmm15, xmm10, ebp +// CHECK: encoding: [0xc5,0x2a,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, ebp + +// CHECK: vcvtsi2ss xmm15, xmm10, {rn-sae}, ebp +// CHECK: encoding: [0x62,0x71,0x2e,0x18,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, {rn-sae}, ebp + +// CHECK: vcvtsi2ss xmm15, xmm10, {ru-sae}, ebp +// CHECK: encoding: [0x62,0x71,0x2e,0x58,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, {ru-sae}, ebp + +// CHECK: vcvtsi2ss xmm15, xmm10, {rd-sae}, ebp +// CHECK: encoding: [0x62,0x71,0x2e,0x38,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, {rd-sae}, ebp + +// CHECK: vcvtsi2ss xmm15, xmm10, {rz-sae}, ebp +// CHECK: encoding: [0x62,0x71,0x2e,0x78,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, {rz-sae}, ebp + +// CHECK: vcvtsi2ss xmm15, xmm10, r13d +// CHECK: encoding: [0xc4,0x41,0x2a,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, r13d + +// CHECK: vcvtsi2ss xmm15, xmm10, {rn-sae}, r13d +// CHECK: encoding: [0x62,0x51,0x2e,0x18,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, {rn-sae}, r13d + +// CHECK: vcvtsi2ss xmm15, xmm10, {ru-sae}, r13d +// CHECK: encoding: [0x62,0x51,0x2e,0x58,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, {ru-sae}, r13d + +// CHECK: vcvtsi2ss xmm15, xmm10, {rd-sae}, r13d +// CHECK: encoding: [0x62,0x51,0x2e,0x38,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, {rd-sae}, r13d + +// CHECK: vcvtsi2ss xmm15, xmm10, {rz-sae}, r13d +// CHECK: encoding: [0x62,0x51,0x2e,0x78,0x2a,0xfd] + vcvtsi2ss xmm15, xmm10, {rz-sae}, r13d + +// CHECK: vcvtsi2ss xmm15, xmm10, dword ptr [rcx] +// CHECK: encoding: [0xc5,0x2a,0x2a,0x39] + vcvtsi2ss xmm15, xmm10, dword ptr [rcx] + +// CHECK: vcvtsi2ss xmm15, xmm10, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0x21,0x2a,0x2a,0xbc,0xf0,0x23,0x01,0x00,0x00] + vcvtsi2ss xmm15, xmm10, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsi2ss xmm15, xmm10, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0x2a,0x2a,0xba,0xfc,0x01,0x00,0x00] + vcvtsi2ss xmm15, xmm10, dword ptr [rdx + 508] + +// CHECK: vcvtsi2ss xmm15, xmm10, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0x2a,0x2a,0xba,0x00,0x02,0x00,0x00] + vcvtsi2ss xmm15, xmm10, dword ptr [rdx + 512] + +// CHECK: vcvtsi2ss xmm15, xmm10, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0x2a,0x2a,0xba,0x00,0xfe,0xff,0xff] + vcvtsi2ss xmm15, xmm10, dword ptr [rdx - 512] + +// CHECK: vcvtsi2ss xmm15, xmm10, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0x2a,0x2a,0xba,0xfc,0xfd,0xff,0xff] + vcvtsi2ss xmm15, xmm10, dword ptr [rdx - 516] + +// CHECK: vcvtsi2ss xmm16, xmm10, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, rax + +// CHECK: vcvtsi2ss xmm16, xmm10, {rn-sae}, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x18,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, {rn-sae}, rax + +// CHECK: vcvtsi2ss xmm16, xmm10, {ru-sae}, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x58,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, {ru-sae}, rax + +// CHECK: vcvtsi2ss xmm16, xmm10, {rd-sae}, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x38,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, {rd-sae}, rax + +// CHECK: vcvtsi2ss xmm16, xmm10, {rz-sae}, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x78,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, {rz-sae}, rax + +// CHECK: vcvtsi2ss xmm16, xmm10, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x08,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, r8 + +// CHECK: vcvtsi2ss xmm16, xmm10, {rn-sae}, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x18,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, {rn-sae}, r8 + +// CHECK: vcvtsi2ss xmm16, xmm10, {ru-sae}, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x58,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, {ru-sae}, r8 + +// CHECK: vcvtsi2ss xmm16, xmm10, {rd-sae}, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x38,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, {rd-sae}, r8 + +// CHECK: vcvtsi2ss xmm16, xmm10, {rz-sae}, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x78,0x2a,0xc0] + vcvtsi2ss xmm16, xmm10, {rz-sae}, r8 + +// CHECK: vcvtsi2ss xmm16, xmm10, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x2a,0x01] + vcvtsi2ss xmm16, xmm10, qword ptr [rcx] + +// CHECK: vcvtsi2ss xmm16, xmm10, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xae,0x08,0x2a,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvtsi2ss xmm16, xmm10, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsi2ss xmm16, xmm10, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x2a,0x42,0x7f] + vcvtsi2ss xmm16, xmm10, qword ptr [rdx + 1016] + +// CHECK: vcvtsi2ss xmm16, xmm10, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x2a,0x82,0x00,0x04,0x00,0x00] + vcvtsi2ss xmm16, xmm10, qword ptr [rdx + 1024] + +// CHECK: vcvtsi2ss xmm16, xmm10, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x2a,0x42,0x80] + vcvtsi2ss xmm16, xmm10, qword ptr [rdx - 1024] + +// CHECK: vcvtsi2ss xmm16, xmm10, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x2a,0x82,0xf8,0xfb,0xff,0xff] + vcvtsi2ss xmm16, xmm10, qword ptr [rdx - 1032] + +// CHECK: vcvtss2sd xmm28, xmm6, xmm6 +// CHECK: encoding: [0x62,0x61,0x4e,0x48,0x5a,0xe6] + vcvtss2sd xmm28, xmm6, xmm6 + +// CHECK: vcvtss2sd xmm28 {k3}, xmm6, xmm6 +// CHECK: encoding: [0x62,0x61,0x4e,0x4b,0x5a,0xe6] + vcvtss2sd xmm28 {k3}, xmm6, xmm6 + +// CHECK: vcvtss2sd xmm28 {k3} {z}, xmm6, xmm6 +// CHECK: encoding: [0x62,0x61,0x4e,0xcb,0x5a,0xe6] + vcvtss2sd xmm28 {k3} {z}, xmm6, xmm6 + +// CHECK: vcvtss2sd xmm28, xmm6, xmm6, {sae} +// CHECK: encoding: [0x62,0x61,0x4e,0x18,0x5a,0xe6] + vcvtss2sd xmm28, xmm6, xmm6, {sae} + +// CHECK: vcvtss2sd xmm28, xmm6, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x4e,0x48,0x5a,0x21] + vcvtss2sd xmm28, xmm6, dword ptr [rcx] + +// CHECK: vcvtss2sd xmm28, xmm6, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x4e,0x48,0x5a,0xa4,0xf0,0x23,0x01,0x00,0x00] + vcvtss2sd xmm28, xmm6, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtss2sd xmm28, xmm6, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x4e,0x48,0x5a,0x62,0x7f] + vcvtss2sd xmm28, xmm6, dword ptr [rdx + 508] + +// CHECK: vcvtss2sd xmm28, xmm6, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x4e,0x48,0x5a,0xa2,0x00,0x02,0x00,0x00] + vcvtss2sd xmm28, xmm6, dword ptr [rdx + 512] + +// CHECK: vcvtss2sd xmm28, xmm6, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x4e,0x48,0x5a,0x62,0x80] + vcvtss2sd xmm28, xmm6, dword ptr [rdx - 512] + +// CHECK: vcvtss2sd xmm28, xmm6, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x4e,0x48,0x5a,0xa2,0xfc,0xfd,0xff,0xff] + vcvtss2sd xmm28, xmm6, dword ptr [rdx - 516] + +// CHECK: vcvtss2si eax, xmm22, {rn-sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x18,0x2d,0xc6] + vcvtss2si eax, xmm22, {rn-sae} + +// CHECK: vcvtss2si eax, xmm22, {ru-sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x58,0x2d,0xc6] + vcvtss2si eax, xmm22, {ru-sae} + +// CHECK: vcvtss2si eax, xmm22, {rd-sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x38,0x2d,0xc6] + vcvtss2si eax, xmm22, {rd-sae} + +// CHECK: vcvtss2si eax, xmm22, {rz-sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x78,0x2d,0xc6] + vcvtss2si eax, xmm22, {rz-sae} + +// CHECK: vcvtss2si ebp, xmm22, {rn-sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x18,0x2d,0xee] + vcvtss2si ebp, xmm22, {rn-sae} + +// CHECK: vcvtss2si ebp, xmm22, {ru-sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x58,0x2d,0xee] + vcvtss2si ebp, xmm22, {ru-sae} + +// CHECK: vcvtss2si ebp, xmm22, {rd-sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x38,0x2d,0xee] + vcvtss2si ebp, xmm22, {rd-sae} + +// CHECK: vcvtss2si ebp, xmm22, {rz-sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x78,0x2d,0xee] + vcvtss2si ebp, xmm22, {rz-sae} + +// CHECK: vcvtss2si r13d, xmm22, {rn-sae} +// CHECK: encoding: [0x62,0x31,0x7e,0x18,0x2d,0xee] + vcvtss2si r13d, xmm22, {rn-sae} + +// CHECK: vcvtss2si r13d, xmm22, {ru-sae} +// CHECK: encoding: [0x62,0x31,0x7e,0x58,0x2d,0xee] + vcvtss2si r13d, xmm22, {ru-sae} + +// CHECK: vcvtss2si r13d, xmm22, {rd-sae} +// CHECK: encoding: [0x62,0x31,0x7e,0x38,0x2d,0xee] + vcvtss2si r13d, xmm22, {rd-sae} + +// CHECK: vcvtss2si r13d, xmm22, {rz-sae} +// CHECK: encoding: [0x62,0x31,0x7e,0x78,0x2d,0xee] + vcvtss2si r13d, xmm22, {rz-sae} + +// CHECK: vcvtss2si rax, xmm29, {rn-sae} +// CHECK: encoding: [0x62,0x91,0xfe,0x18,0x2d,0xc5] + vcvtss2si rax, xmm29, {rn-sae} + +// CHECK: vcvtss2si rax, xmm29, {ru-sae} +// CHECK: encoding: [0x62,0x91,0xfe,0x58,0x2d,0xc5] + vcvtss2si rax, xmm29, {ru-sae} + +// CHECK: vcvtss2si rax, xmm29, {rd-sae} +// CHECK: encoding: [0x62,0x91,0xfe,0x38,0x2d,0xc5] + vcvtss2si rax, xmm29, {rd-sae} + +// CHECK: vcvtss2si rax, xmm29, {rz-sae} +// CHECK: encoding: [0x62,0x91,0xfe,0x78,0x2d,0xc5] + vcvtss2si rax, xmm29, {rz-sae} + +// CHECK: vcvtss2si r8, xmm29, {rn-sae} +// CHECK: encoding: [0x62,0x11,0xfe,0x18,0x2d,0xc5] + vcvtss2si r8, xmm29, {rn-sae} + +// CHECK: vcvtss2si r8, xmm29, {ru-sae} +// CHECK: encoding: [0x62,0x11,0xfe,0x58,0x2d,0xc5] + vcvtss2si r8, xmm29, {ru-sae} + +// CHECK: vcvtss2si r8, xmm29, {rd-sae} +// CHECK: encoding: [0x62,0x11,0xfe,0x38,0x2d,0xc5] + vcvtss2si r8, xmm29, {rd-sae} + +// CHECK: vcvtss2si r8, xmm29, {rz-sae} +// CHECK: encoding: [0x62,0x11,0xfe,0x78,0x2d,0xc5] + vcvtss2si r8, xmm29, {rz-sae} + +// CHECK: vcvttpd2dq ymm27, zmm9 +// CHECK: encoding: [0x62,0x41,0xfd,0x48,0xe6,0xd9] + vcvttpd2dq ymm27, zmm9 + +// CHECK: vcvttpd2dq ymm27 {k5}, zmm9 +// CHECK: encoding: [0x62,0x41,0xfd,0x4d,0xe6,0xd9] + vcvttpd2dq ymm27 {k5}, zmm9 + +// CHECK: vcvttpd2dq ymm27 {k5} {z}, zmm9 +// CHECK: encoding: [0x62,0x41,0xfd,0xcd,0xe6,0xd9] + vcvttpd2dq ymm27 {k5} {z}, zmm9 + +// CHECK: vcvttpd2dq ymm27, zmm9, {sae} +// CHECK: encoding: [0x62,0x41,0xfd,0x18,0xe6,0xd9] + vcvttpd2dq ymm27, zmm9, {sae} + +// CHECK: vcvttpd2dq ymm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0xe6,0x19] + vcvttpd2dq ymm27, zmmword ptr [rcx] + +// CHECK: vcvttpd2dq ymm27, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0xfd,0x48,0xe6,0x9c,0xf0,0x23,0x01,0x00,0x00] + vcvttpd2dq ymm27, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttpd2dq ymm27, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0xfd,0x58,0xe6,0x19] + vcvttpd2dq ymm27, qword ptr [rcx]{1to8} + +// CHECK: vcvttpd2dq ymm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0xe6,0x5a,0x7f] + vcvttpd2dq ymm27, zmmword ptr [rdx + 8128] + +// CHECK: vcvttpd2dq ymm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0xe6,0x9a,0x00,0x20,0x00,0x00] + vcvttpd2dq ymm27, zmmword ptr [rdx + 8192] + +// CHECK: vcvttpd2dq ymm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0xe6,0x5a,0x80] + vcvttpd2dq ymm27, zmmword ptr [rdx - 8192] + +// CHECK: vcvttpd2dq ymm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0xe6,0x9a,0xc0,0xdf,0xff,0xff] + vcvttpd2dq ymm27, zmmword ptr [rdx - 8256] + +// CHECK: vcvttpd2dq ymm27, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0xfd,0x58,0xe6,0x5a,0x7f] + vcvttpd2dq ymm27, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvttpd2dq ymm27, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xfd,0x58,0xe6,0x9a,0x00,0x04,0x00,0x00] + vcvttpd2dq ymm27, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvttpd2dq ymm27, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xfd,0x58,0xe6,0x5a,0x80] + vcvttpd2dq ymm27, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvttpd2dq ymm27, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0xfd,0x58,0xe6,0x9a,0xf8,0xfb,0xff,0xff] + vcvttpd2dq ymm27, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvttps2dq zmm14, zmm25 +// CHECK: encoding: [0x62,0x11,0x7e,0x48,0x5b,0xf1] + vcvttps2dq zmm14, zmm25 + +// CHECK: vcvttps2dq zmm14 {k3}, zmm25 +// CHECK: encoding: [0x62,0x11,0x7e,0x4b,0x5b,0xf1] + vcvttps2dq zmm14 {k3}, zmm25 + +// CHECK: vcvttps2dq zmm14 {k3} {z}, zmm25 +// CHECK: encoding: [0x62,0x11,0x7e,0xcb,0x5b,0xf1] + vcvttps2dq zmm14 {k3} {z}, zmm25 + +// CHECK: vcvttps2dq zmm14, zmm25, {sae} +// CHECK: encoding: [0x62,0x11,0x7e,0x18,0x5b,0xf1] + vcvttps2dq zmm14, zmm25, {sae} + +// CHECK: vcvttps2dq zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x5b,0x31] + vcvttps2dq zmm14, zmmword ptr [rcx] + +// CHECK: vcvttps2dq zmm14, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7e,0x48,0x5b,0xb4,0xf0,0x23,0x01,0x00,0x00] + vcvttps2dq zmm14, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttps2dq zmm14, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x71,0x7e,0x58,0x5b,0x31] + vcvttps2dq zmm14, dword ptr [rcx]{1to16} + +// CHECK: vcvttps2dq zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x5b,0x72,0x7f] + vcvttps2dq zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vcvttps2dq zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x5b,0xb2,0x00,0x20,0x00,0x00] + vcvttps2dq zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vcvttps2dq zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x5b,0x72,0x80] + vcvttps2dq zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vcvttps2dq zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x5b,0xb2,0xc0,0xdf,0xff,0xff] + vcvttps2dq zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vcvttps2dq zmm14, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x71,0x7e,0x58,0x5b,0x72,0x7f] + vcvttps2dq zmm14, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvttps2dq zmm14, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x7e,0x58,0x5b,0xb2,0x00,0x02,0x00,0x00] + vcvttps2dq zmm14, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvttps2dq zmm14, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x7e,0x58,0x5b,0x72,0x80] + vcvttps2dq zmm14, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvttps2dq zmm14, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x71,0x7e,0x58,0x5b,0xb2,0xfc,0xfd,0xff,0xff] + vcvttps2dq zmm14, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvttsd2si eax, xmm3, {sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x18,0x2c,0xc3] + vcvttsd2si eax, xmm3, {sae} + +// CHECK: vcvttsd2si ebp, xmm3, {sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x18,0x2c,0xeb] + vcvttsd2si ebp, xmm3, {sae} + +// CHECK: vcvttsd2si r13d, xmm3, {sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x18,0x2c,0xeb] + vcvttsd2si r13d, xmm3, {sae} + +// CHECK: vcvttsd2si rax, xmm1, {sae} +// CHECK: encoding: [0x62,0xf1,0xff,0x18,0x2c,0xc1] + vcvttsd2si rax, xmm1, {sae} + +// CHECK: vcvttsd2si r8, xmm1, {sae} +// CHECK: encoding: [0x62,0x71,0xff,0x18,0x2c,0xc1] + vcvttsd2si r8, xmm1, {sae} + +// CHECK: vcvttss2si eax, xmm14, {sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x18,0x2c,0xc6] + vcvttss2si eax, xmm14, {sae} + +// CHECK: vcvttss2si ebp, xmm14, {sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x18,0x2c,0xee] + vcvttss2si ebp, xmm14, {sae} + +// CHECK: vcvttss2si r13d, xmm14, {sae} +// CHECK: encoding: [0x62,0x51,0x7e,0x18,0x2c,0xee] + vcvttss2si r13d, xmm14, {sae} + +// CHECK: vcvttss2si rax, xmm21, {sae} +// CHECK: encoding: [0x62,0xb1,0xfe,0x18,0x2c,0xc5] + vcvttss2si rax, xmm21, {sae} + +// CHECK: vcvttss2si r8, xmm21, {sae} +// CHECK: encoding: [0x62,0x31,0xfe,0x18,0x2c,0xc5] + vcvttss2si r8, xmm21, {sae} + +// CHECK: vcvtudq2pd zmm18, ymm14 +// CHECK: encoding: [0x62,0xc1,0x7e,0x48,0x7a,0xd6] + vcvtudq2pd zmm18, ymm14 + +// CHECK: vcvtudq2pd zmm18 {k3}, ymm14 +// CHECK: encoding: [0x62,0xc1,0x7e,0x4b,0x7a,0xd6] + vcvtudq2pd zmm18 {k3}, ymm14 + +// CHECK: vcvtudq2pd zmm18 {k3} {z}, ymm14 +// CHECK: encoding: [0x62,0xc1,0x7e,0xcb,0x7a,0xd6] + vcvtudq2pd zmm18 {k3} {z}, ymm14 + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x11] + vcvtudq2pd zmm18, ymmword ptr [rcx] + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x7e,0x48,0x7a,0x94,0xf0,0x23,0x01,0x00,0x00] + vcvtudq2pd zmm18, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtudq2pd zmm18, dword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x11] + vcvtudq2pd zmm18, dword ptr [rcx]{1to8} + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x52,0x7f] + vcvtudq2pd zmm18, ymmword ptr [rdx + 4064] + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x92,0x00,0x10,0x00,0x00] + vcvtudq2pd zmm18, ymmword ptr [rdx + 4096] + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x52,0x80] + vcvtudq2pd zmm18, ymmword ptr [rdx - 4096] + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x92,0xe0,0xef,0xff,0xff] + vcvtudq2pd zmm18, ymmword ptr [rdx - 4128] + +// CHECK: vcvtudq2pd zmm18, dword ptr [rdx + 508]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x52,0x7f] + vcvtudq2pd zmm18, dword ptr [rdx + 508]{1to8} + +// CHECK: vcvtudq2pd zmm18, dword ptr [rdx + 512]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x92,0x00,0x02,0x00,0x00] + vcvtudq2pd zmm18, dword ptr [rdx + 512]{1to8} + +// CHECK: vcvtudq2pd zmm18, dword ptr [rdx - 512]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x52,0x80] + vcvtudq2pd zmm18, dword ptr [rdx - 512]{1to8} + +// CHECK: vcvtudq2pd zmm18, dword ptr [rdx - 516]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x92,0xfc,0xfd,0xff,0xff] + vcvtudq2pd zmm18, dword ptr [rdx - 516]{1to8} + +// CHECK: vcvtudq2ps zmm18, zmm7 +// CHECK: encoding: [0x62,0xe1,0x7f,0x48,0x7a,0xd7] + vcvtudq2ps zmm18, zmm7 + +// CHECK: vcvtudq2ps zmm18 {k2}, zmm7 +// CHECK: encoding: [0x62,0xe1,0x7f,0x4a,0x7a,0xd7] + vcvtudq2ps zmm18 {k2}, zmm7 + +// CHECK: vcvtudq2ps zmm18 {k2} {z}, zmm7 +// CHECK: encoding: [0x62,0xe1,0x7f,0xca,0x7a,0xd7] + vcvtudq2ps zmm18 {k2} {z}, zmm7 + +// CHECK: vcvtudq2ps zmm18, zmm7, {rn-sae} +// CHECK: encoding: [0x62,0xe1,0x7f,0x18,0x7a,0xd7] + vcvtudq2ps zmm18, zmm7, {rn-sae} + +// CHECK: vcvtudq2ps zmm18, zmm7, {ru-sae} +// CHECK: encoding: [0x62,0xe1,0x7f,0x58,0x7a,0xd7] + vcvtudq2ps zmm18, zmm7, {ru-sae} + +// CHECK: vcvtudq2ps zmm18, zmm7, {rd-sae} +// CHECK: encoding: [0x62,0xe1,0x7f,0x38,0x7a,0xd7] + vcvtudq2ps zmm18, zmm7, {rd-sae} + +// CHECK: vcvtudq2ps zmm18, zmm7, {rz-sae} +// CHECK: encoding: [0x62,0xe1,0x7f,0x78,0x7a,0xd7] + vcvtudq2ps zmm18, zmm7, {rz-sae} + +// CHECK: vcvtudq2ps zmm18, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7f,0x48,0x7a,0x11] + vcvtudq2ps zmm18, zmmword ptr [rcx] + +// CHECK: vcvtudq2ps zmm18, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x7f,0x48,0x7a,0x94,0xf0,0x23,0x01,0x00,0x00] + vcvtudq2ps zmm18, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtudq2ps zmm18, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7f,0x58,0x7a,0x11] + vcvtudq2ps zmm18, dword ptr [rcx]{1to16} + +// CHECK: vcvtudq2ps zmm18, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7f,0x48,0x7a,0x52,0x7f] + vcvtudq2ps zmm18, zmmword ptr [rdx + 8128] + +// CHECK: vcvtudq2ps zmm18, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7f,0x48,0x7a,0x92,0x00,0x20,0x00,0x00] + vcvtudq2ps zmm18, zmmword ptr [rdx + 8192] + +// CHECK: vcvtudq2ps zmm18, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7f,0x48,0x7a,0x52,0x80] + vcvtudq2ps zmm18, zmmword ptr [rdx - 8192] + +// CHECK: vcvtudq2ps zmm18, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7f,0x48,0x7a,0x92,0xc0,0xdf,0xff,0xff] + vcvtudq2ps zmm18, zmmword ptr [rdx - 8256] + +// CHECK: vcvtudq2ps zmm18, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7f,0x58,0x7a,0x52,0x7f] + vcvtudq2ps zmm18, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvtudq2ps zmm18, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7f,0x58,0x7a,0x92,0x00,0x02,0x00,0x00] + vcvtudq2ps zmm18, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvtudq2ps zmm18, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7f,0x58,0x7a,0x52,0x80] + vcvtudq2ps zmm18, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvtudq2ps zmm18, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7f,0x58,0x7a,0x92,0xfc,0xfd,0xff,0xff] + vcvtudq2ps zmm18, dword ptr [rdx - 516]{1to16} + +// CHECK: vdivpd zmm18, zmm6, zmm11 +// CHECK: encoding: [0x62,0xc1,0xcd,0x48,0x5e,0xd3] + vdivpd zmm18, zmm6, zmm11 + +// CHECK: vdivpd zmm18 {k4}, zmm6, zmm11 +// CHECK: encoding: [0x62,0xc1,0xcd,0x4c,0x5e,0xd3] + vdivpd zmm18 {k4}, zmm6, zmm11 + +// CHECK: vdivpd zmm18 {k4} {z}, zmm6, zmm11 +// CHECK: encoding: [0x62,0xc1,0xcd,0xcc,0x5e,0xd3] + vdivpd zmm18 {k4} {z}, zmm6, zmm11 + +// CHECK: vdivpd zmm18, zmm6, zmm11, {rn-sae} +// CHECK: encoding: [0x62,0xc1,0xcd,0x18,0x5e,0xd3] + vdivpd zmm18, zmm6, zmm11, {rn-sae} + +// CHECK: vdivpd zmm18, zmm6, zmm11, {ru-sae} +// CHECK: encoding: [0x62,0xc1,0xcd,0x58,0x5e,0xd3] + vdivpd zmm18, zmm6, zmm11, {ru-sae} + +// CHECK: vdivpd zmm18, zmm6, zmm11, {rd-sae} +// CHECK: encoding: [0x62,0xc1,0xcd,0x38,0x5e,0xd3] + vdivpd zmm18, zmm6, zmm11, {rd-sae} + +// CHECK: vdivpd zmm18, zmm6, zmm11, {rz-sae} +// CHECK: encoding: [0x62,0xc1,0xcd,0x78,0x5e,0xd3] + vdivpd zmm18, zmm6, zmm11, {rz-sae} + +// CHECK: vdivpd zmm18, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xcd,0x48,0x5e,0x11] + vdivpd zmm18, zmm6, zmmword ptr [rcx] + +// CHECK: vdivpd zmm18, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xcd,0x48,0x5e,0x94,0xf0,0x23,0x01,0x00,0x00] + vdivpd zmm18, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vdivpd zmm18, zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xcd,0x58,0x5e,0x11] + vdivpd zmm18, zmm6, qword ptr [rcx]{1to8} + +// CHECK: vdivpd zmm18, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xcd,0x48,0x5e,0x52,0x7f] + vdivpd zmm18, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vdivpd zmm18, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xcd,0x48,0x5e,0x92,0x00,0x20,0x00,0x00] + vdivpd zmm18, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vdivpd zmm18, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xcd,0x48,0x5e,0x52,0x80] + vdivpd zmm18, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vdivpd zmm18, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xcd,0x48,0x5e,0x92,0xc0,0xdf,0xff,0xff] + vdivpd zmm18, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vdivpd zmm18, zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xcd,0x58,0x5e,0x52,0x7f] + vdivpd zmm18, zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vdivpd zmm18, zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xcd,0x58,0x5e,0x92,0x00,0x04,0x00,0x00] + vdivpd zmm18, zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vdivpd zmm18, zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xcd,0x58,0x5e,0x52,0x80] + vdivpd zmm18, zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vdivpd zmm18, zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xcd,0x58,0x5e,0x92,0xf8,0xfb,0xff,0xff] + vdivpd zmm18, zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vdivps zmm23, zmm23, zmm28 +// CHECK: encoding: [0x62,0x81,0x44,0x40,0x5e,0xfc] + vdivps zmm23, zmm23, zmm28 + +// CHECK: vdivps zmm23 {k2}, zmm23, zmm28 +// CHECK: encoding: [0x62,0x81,0x44,0x42,0x5e,0xfc] + vdivps zmm23 {k2}, zmm23, zmm28 + +// CHECK: vdivps zmm23 {k2} {z}, zmm23, zmm28 +// CHECK: encoding: [0x62,0x81,0x44,0xc2,0x5e,0xfc] + vdivps zmm23 {k2} {z}, zmm23, zmm28 + +// CHECK: vdivps zmm23, zmm23, zmm28, {rn-sae} +// CHECK: encoding: [0x62,0x81,0x44,0x10,0x5e,0xfc] + vdivps zmm23, zmm23, zmm28, {rn-sae} + +// CHECK: vdivps zmm23, zmm23, zmm28, {ru-sae} +// CHECK: encoding: [0x62,0x81,0x44,0x50,0x5e,0xfc] + vdivps zmm23, zmm23, zmm28, {ru-sae} + +// CHECK: vdivps zmm23, zmm23, zmm28, {rd-sae} +// CHECK: encoding: [0x62,0x81,0x44,0x30,0x5e,0xfc] + vdivps zmm23, zmm23, zmm28, {rd-sae} + +// CHECK: vdivps zmm23, zmm23, zmm28, {rz-sae} +// CHECK: encoding: [0x62,0x81,0x44,0x70,0x5e,0xfc] + vdivps zmm23, zmm23, zmm28, {rz-sae} + +// CHECK: vdivps zmm23, zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x44,0x40,0x5e,0x39] + vdivps zmm23, zmm23, zmmword ptr [rcx] + +// CHECK: vdivps zmm23, zmm23, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x44,0x40,0x5e,0xbc,0xf0,0x23,0x01,0x00,0x00] + vdivps zmm23, zmm23, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vdivps zmm23, zmm23, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x44,0x50,0x5e,0x39] + vdivps zmm23, zmm23, dword ptr [rcx]{1to16} + +// CHECK: vdivps zmm23, zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x44,0x40,0x5e,0x7a,0x7f] + vdivps zmm23, zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vdivps zmm23, zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x44,0x40,0x5e,0xba,0x00,0x20,0x00,0x00] + vdivps zmm23, zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vdivps zmm23, zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x44,0x40,0x5e,0x7a,0x80] + vdivps zmm23, zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vdivps zmm23, zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x44,0x40,0x5e,0xba,0xc0,0xdf,0xff,0xff] + vdivps zmm23, zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vdivps zmm23, zmm23, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x44,0x50,0x5e,0x7a,0x7f] + vdivps zmm23, zmm23, dword ptr [rdx + 508]{1to16} + +// CHECK: vdivps zmm23, zmm23, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x44,0x50,0x5e,0xba,0x00,0x02,0x00,0x00] + vdivps zmm23, zmm23, dword ptr [rdx + 512]{1to16} + +// CHECK: vdivps zmm23, zmm23, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x44,0x50,0x5e,0x7a,0x80] + vdivps zmm23, zmm23, dword ptr [rdx - 512]{1to16} + +// CHECK: vdivps zmm23, zmm23, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x44,0x50,0x5e,0xba,0xfc,0xfd,0xff,0xff] + vdivps zmm23, zmm23, dword ptr [rdx - 516]{1to16} + +// CHECK: vdivsd xmm29, xmm13, xmm22 +// CHECK: encoding: [0x62,0x21,0x97,0x08,0x5e,0xee] + vdivsd xmm29, xmm13, xmm22 + +// CHECK: vdivsd xmm29 {k3}, xmm13, xmm22 +// CHECK: encoding: [0x62,0x21,0x97,0x0b,0x5e,0xee] + vdivsd xmm29 {k3}, xmm13, xmm22 + +// CHECK: vdivsd xmm29 {k3} {z}, xmm13, xmm22 +// CHECK: encoding: [0x62,0x21,0x97,0x8b,0x5e,0xee] + vdivsd xmm29 {k3} {z}, xmm13, xmm22 + +// CHECK: vdivsd xmm29, xmm13, xmm22, {rn-sae} +// CHECK: encoding: [0x62,0x21,0x97,0x18,0x5e,0xee] + vdivsd xmm29, xmm13, xmm22, {rn-sae} + +// CHECK: vdivsd xmm29, xmm13, xmm22, {ru-sae} +// CHECK: encoding: [0x62,0x21,0x97,0x58,0x5e,0xee] + vdivsd xmm29, xmm13, xmm22, {ru-sae} + +// CHECK: vdivsd xmm29, xmm13, xmm22, {rd-sae} +// CHECK: encoding: [0x62,0x21,0x97,0x38,0x5e,0xee] + vdivsd xmm29, xmm13, xmm22, {rd-sae} + +// CHECK: vdivsd xmm29, xmm13, xmm22, {rz-sae} +// CHECK: encoding: [0x62,0x21,0x97,0x78,0x5e,0xee] + vdivsd xmm29, xmm13, xmm22, {rz-sae} + +// CHECK: vdivsd xmm29, xmm13, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x97,0x08,0x5e,0x29] + vdivsd xmm29, xmm13, qword ptr [rcx] + +// CHECK: vdivsd xmm29, xmm13, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x97,0x08,0x5e,0xac,0xf0,0x23,0x01,0x00,0x00] + vdivsd xmm29, xmm13, qword ptr [rax + 8*r14 + 291] + +// CHECK: vdivsd xmm29, xmm13, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x61,0x97,0x08,0x5e,0x6a,0x7f] + vdivsd xmm29, xmm13, qword ptr [rdx + 1016] + +// CHECK: vdivsd xmm29, xmm13, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x61,0x97,0x08,0x5e,0xaa,0x00,0x04,0x00,0x00] + vdivsd xmm29, xmm13, qword ptr [rdx + 1024] + +// CHECK: vdivsd xmm29, xmm13, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x61,0x97,0x08,0x5e,0x6a,0x80] + vdivsd xmm29, xmm13, qword ptr [rdx - 1024] + +// CHECK: vdivsd xmm29, xmm13, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x61,0x97,0x08,0x5e,0xaa,0xf8,0xfb,0xff,0xff] + vdivsd xmm29, xmm13, qword ptr [rdx - 1032] + +// CHECK: vdivss xmm21, xmm6, xmm17 +// CHECK: encoding: [0x62,0xa1,0x4e,0x08,0x5e,0xe9] + vdivss xmm21, xmm6, xmm17 + +// CHECK: vdivss xmm21 {k5}, xmm6, xmm17 +// CHECK: encoding: [0x62,0xa1,0x4e,0x0d,0x5e,0xe9] + vdivss xmm21 {k5}, xmm6, xmm17 + +// CHECK: vdivss xmm21 {k5} {z}, xmm6, xmm17 +// CHECK: encoding: [0x62,0xa1,0x4e,0x8d,0x5e,0xe9] + vdivss xmm21 {k5} {z}, xmm6, xmm17 + +// CHECK: vdivss xmm21, xmm6, xmm17, {rn-sae} +// CHECK: encoding: [0x62,0xa1,0x4e,0x18,0x5e,0xe9] + vdivss xmm21, xmm6, xmm17, {rn-sae} + +// CHECK: vdivss xmm21, xmm6, xmm17, {ru-sae} +// CHECK: encoding: [0x62,0xa1,0x4e,0x58,0x5e,0xe9] + vdivss xmm21, xmm6, xmm17, {ru-sae} + +// CHECK: vdivss xmm21, xmm6, xmm17, {rd-sae} +// CHECK: encoding: [0x62,0xa1,0x4e,0x38,0x5e,0xe9] + vdivss xmm21, xmm6, xmm17, {rd-sae} + +// CHECK: vdivss xmm21, xmm6, xmm17, {rz-sae} +// CHECK: encoding: [0x62,0xa1,0x4e,0x78,0x5e,0xe9] + vdivss xmm21, xmm6, xmm17, {rz-sae} + +// CHECK: vdivss xmm21, xmm6, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x4e,0x08,0x5e,0x29] + vdivss xmm21, xmm6, dword ptr [rcx] + +// CHECK: vdivss xmm21, xmm6, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x4e,0x08,0x5e,0xac,0xf0,0x23,0x01,0x00,0x00] + vdivss xmm21, xmm6, dword ptr [rax + 8*r14 + 291] + +// CHECK: vdivss xmm21, xmm6, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe1,0x4e,0x08,0x5e,0x6a,0x7f] + vdivss xmm21, xmm6, dword ptr [rdx + 508] + +// CHECK: vdivss xmm21, xmm6, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe1,0x4e,0x08,0x5e,0xaa,0x00,0x02,0x00,0x00] + vdivss xmm21, xmm6, dword ptr [rdx + 512] + +// CHECK: vdivss xmm21, xmm6, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe1,0x4e,0x08,0x5e,0x6a,0x80] + vdivss xmm21, xmm6, dword ptr [rdx - 512] + +// CHECK: vdivss xmm21, xmm6, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe1,0x4e,0x08,0x5e,0xaa,0xfc,0xfd,0xff,0xff] + vdivss xmm21, xmm6, dword ptr [rdx - 516] + +// CHECK: vexpandpd zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x88,0x01] + vexpandpd zmm24, zmmword ptr [rcx] + +// CHECK: vexpandpd zmm24 {k4}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x4c,0x88,0x01] + vexpandpd zmm24 {k4}, zmmword ptr [rcx] + +// CHECK: vexpandpd zmm24 {k4} {z}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0xcc,0x88,0x01] + vexpandpd zmm24 {k4} {z}, zmmword ptr [rcx] + +// CHECK: vexpandpd zmm24, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x88,0x84,0xf0,0x23,0x01,0x00,0x00] + vexpandpd zmm24, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vexpandpd zmm24, zmmword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x88,0x42,0x7f] + vexpandpd zmm24, zmmword ptr [rdx + 1016] + +// CHECK: vexpandpd zmm24, zmmword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x88,0x82,0x00,0x04,0x00,0x00] + vexpandpd zmm24, zmmword ptr [rdx + 1024] + +// CHECK: vexpandpd zmm24, zmmword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x88,0x42,0x80] + vexpandpd zmm24, zmmword ptr [rdx - 1024] + +// CHECK: vexpandpd zmm24, zmmword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x88,0x82,0xf8,0xfb,0xff,0xff] + vexpandpd zmm24, zmmword ptr [rdx - 1032] + +// CHECK: vexpandpd zmm23, zmm15 +// CHECK: encoding: [0x62,0xc2,0xfd,0x48,0x88,0xff] + vexpandpd zmm23, zmm15 + +// CHECK: vexpandpd zmm23 {k5}, zmm15 +// CHECK: encoding: [0x62,0xc2,0xfd,0x4d,0x88,0xff] + vexpandpd zmm23 {k5}, zmm15 + +// CHECK: vexpandpd zmm23 {k5} {z}, zmm15 +// CHECK: encoding: [0x62,0xc2,0xfd,0xcd,0x88,0xff] + vexpandpd zmm23 {k5} {z}, zmm15 + +// CHECK: vexpandps zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x88,0x21] + vexpandps zmm4, zmmword ptr [rcx] + +// CHECK: vexpandps zmm4 {k6}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x4e,0x88,0x21] + vexpandps zmm4 {k6}, zmmword ptr [rcx] + +// CHECK: vexpandps zmm4 {k6} {z}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0xce,0x88,0x21] + vexpandps zmm4 {k6} {z}, zmmword ptr [rcx] + +// CHECK: vexpandps zmm4, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x88,0xa4,0xf0,0x23,0x01,0x00,0x00] + vexpandps zmm4, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vexpandps zmm4, zmmword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x88,0x62,0x7f] + vexpandps zmm4, zmmword ptr [rdx + 508] + +// CHECK: vexpandps zmm4, zmmword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x88,0xa2,0x00,0x02,0x00,0x00] + vexpandps zmm4, zmmword ptr [rdx + 512] + +// CHECK: vexpandps zmm4, zmmword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x88,0x62,0x80] + vexpandps zmm4, zmmword ptr [rdx - 512] + +// CHECK: vexpandps zmm4, zmmword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x88,0xa2,0xfc,0xfd,0xff,0xff] + vexpandps zmm4, zmmword ptr [rdx - 516] + +// CHECK: vexpandps zmm14, zmm9 +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x88,0xf1] + vexpandps zmm14, zmm9 + +// CHECK: vexpandps zmm14 {k2}, zmm9 +// CHECK: encoding: [0x62,0x52,0x7d,0x4a,0x88,0xf1] + vexpandps zmm14 {k2}, zmm9 + +// CHECK: vexpandps zmm14 {k2} {z}, zmm9 +// CHECK: encoding: [0x62,0x52,0x7d,0xca,0x88,0xf1] + vexpandps zmm14 {k2} {z}, zmm9 + +// CHECK: vextractf32x4 xmm15, zmm21, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0x48,0x19,0xef,0xab] + vextractf32x4 xmm15, zmm21, 171 + +// CHECK: vextractf32x4 xmm15 {k1}, zmm21, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0x49,0x19,0xef,0xab] + vextractf32x4 xmm15 {k1}, zmm21, 171 + +// CHECK: vextractf32x4 xmm15 {k1} {z}, zmm21, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0xc9,0x19,0xef,0xab] + vextractf32x4 xmm15 {k1} {z}, zmm21, 171 + +// CHECK: vextractf32x4 xmm15, zmm21, 123 +// CHECK: encoding: [0x62,0xc3,0x7d,0x48,0x19,0xef,0x7b] + vextractf32x4 xmm15, zmm21, 123 + +// CHECK: vextractf64x4 ymm11, zmm24, 171 +// CHECK: encoding: [0x62,0x43,0xfd,0x48,0x1b,0xc3,0xab] + vextractf64x4 ymm11, zmm24, 171 + +// CHECK: vextractf64x4 ymm11 {k5}, zmm24, 171 +// CHECK: encoding: [0x62,0x43,0xfd,0x4d,0x1b,0xc3,0xab] + vextractf64x4 ymm11 {k5}, zmm24, 171 + +// CHECK: vextractf64x4 ymm11 {k5} {z}, zmm24, 171 +// CHECK: encoding: [0x62,0x43,0xfd,0xcd,0x1b,0xc3,0xab] + vextractf64x4 ymm11 {k5} {z}, zmm24, 171 + +// CHECK: vextractf64x4 ymm11, zmm24, 123 +// CHECK: encoding: [0x62,0x43,0xfd,0x48,0x1b,0xc3,0x7b] + vextractf64x4 ymm11, zmm24, 123 + +// CHECK: vextracti32x4 xmm13, zmm16, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0x48,0x39,0xc5,0xab] + vextracti32x4 xmm13, zmm16, 171 + +// CHECK: vextracti32x4 xmm13 {k5}, zmm16, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0x4d,0x39,0xc5,0xab] + vextracti32x4 xmm13 {k5}, zmm16, 171 + +// CHECK: vextracti32x4 xmm13 {k5} {z}, zmm16, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0xcd,0x39,0xc5,0xab] + vextracti32x4 xmm13 {k5} {z}, zmm16, 171 + +// CHECK: vextracti32x4 xmm13, zmm16, 123 +// CHECK: encoding: [0x62,0xc3,0x7d,0x48,0x39,0xc5,0x7b] + vextracti32x4 xmm13, zmm16, 123 + +// CHECK: vextracti64x4 ymm13, zmm16, 171 +// CHECK: encoding: [0x62,0xc3,0xfd,0x48,0x3b,0xc5,0xab] + vextracti64x4 ymm13, zmm16, 171 + +// CHECK: vextracti64x4 ymm13 {k3}, zmm16, 171 +// CHECK: encoding: [0x62,0xc3,0xfd,0x4b,0x3b,0xc5,0xab] + vextracti64x4 ymm13 {k3}, zmm16, 171 + +// CHECK: vextracti64x4 ymm13 {k3} {z}, zmm16, 171 +// CHECK: encoding: [0x62,0xc3,0xfd,0xcb,0x3b,0xc5,0xab] + vextracti64x4 ymm13 {k3} {z}, zmm16, 171 + +// CHECK: vextracti64x4 ymm13, zmm16, 123 +// CHECK: encoding: [0x62,0xc3,0xfd,0x48,0x3b,0xc5,0x7b] + vextracti64x4 ymm13, zmm16, 123 + +// CHECK: vextractps eax, xmm24, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x17,0xc0,0xab] + vextractps eax, xmm24, 171 + +// CHECK: vextractps eax, xmm24, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x17,0xc0,0x7b] + vextractps eax, xmm24, 123 + +// CHECK: vextractps r8d, xmm24, 123 +// CHECK: encoding: [0x62,0x43,0x7d,0x08,0x17,0xc0,0x7b] + vextractps r8d, xmm24, 123 + +// CHECK: vextractps dword ptr [rcx], xmm24, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x17,0x01,0x7b] + vextractps dword ptr [rcx], xmm24, 123 + +// CHECK: vextractps dword ptr [rax + 8*r14 + 291], xmm24, 123 +// CHECK: encoding: [0x62,0x23,0x7d,0x08,0x17,0x84,0xf0,0x23,0x01,0x00,0x00,0x7b] + vextractps dword ptr [rax + 8*r14 + 291], xmm24, 123 + +// CHECK: vextractps dword ptr [rdx + 508], xmm24, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x17,0x42,0x7f,0x7b] + vextractps dword ptr [rdx + 508], xmm24, 123 + +// CHECK: vextractps dword ptr [rdx + 512], xmm24, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x17,0x82,0x00,0x02,0x00,0x00,0x7b] + vextractps dword ptr [rdx + 512], xmm24, 123 + +// CHECK: vextractps dword ptr [rdx - 512], xmm24, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x17,0x42,0x80,0x7b] + vextractps dword ptr [rdx - 512], xmm24, 123 + +// CHECK: vextractps dword ptr [rdx - 516], xmm24, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x17,0x82,0xfc,0xfd,0xff,0xff,0x7b] + vextractps dword ptr [rdx - 516], xmm24, 123 + +// CHECK: vfmadd132pd zmm26, zmm16, zmm21 +// CHECK: encoding: [0x62,0x22,0xfd,0x40,0x98,0xd5] + vfmadd132pd zmm26, zmm16, zmm21 + +// CHECK: vfmadd132pd zmm26 {k5}, zmm16, zmm21 +// CHECK: encoding: [0x62,0x22,0xfd,0x45,0x98,0xd5] + vfmadd132pd zmm26 {k5}, zmm16, zmm21 + +// CHECK: vfmadd132pd zmm26 {k5} {z}, zmm16, zmm21 +// CHECK: encoding: [0x62,0x22,0xfd,0xc5,0x98,0xd5] + vfmadd132pd zmm26 {k5} {z}, zmm16, zmm21 + +// CHECK: vfmadd132pd zmm26, zmm16, zmm21, {rn-sae} +// CHECK: encoding: [0x62,0x22,0xfd,0x10,0x98,0xd5] + vfmadd132pd zmm26, zmm16, zmm21, {rn-sae} + +// CHECK: vfmadd132pd zmm26, zmm16, zmm21, {ru-sae} +// CHECK: encoding: [0x62,0x22,0xfd,0x50,0x98,0xd5] + vfmadd132pd zmm26, zmm16, zmm21, {ru-sae} + +// CHECK: vfmadd132pd zmm26, zmm16, zmm21, {rd-sae} +// CHECK: encoding: [0x62,0x22,0xfd,0x30,0x98,0xd5] + vfmadd132pd zmm26, zmm16, zmm21, {rd-sae} + +// CHECK: vfmadd132pd zmm26, zmm16, zmm21, {rz-sae} +// CHECK: encoding: [0x62,0x22,0xfd,0x70,0x98,0xd5] + vfmadd132pd zmm26, zmm16, zmm21, {rz-sae} + +// CHECK: vfmadd132pd zmm26, zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x40,0x98,0x11] + vfmadd132pd zmm26, zmm16, zmmword ptr [rcx] + +// CHECK: vfmadd132pd zmm26, zmm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xfd,0x40,0x98,0x94,0xf0,0x23,0x01,0x00,0x00] + vfmadd132pd zmm26, zmm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd132pd zmm26, zmm16, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x50,0x98,0x11] + vfmadd132pd zmm26, zmm16, qword ptr [rcx]{1to8} + +// CHECK: vfmadd132pd zmm26, zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xfd,0x40,0x98,0x52,0x7f] + vfmadd132pd zmm26, zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd132pd zmm26, zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xfd,0x40,0x98,0x92,0x00,0x20,0x00,0x00] + vfmadd132pd zmm26, zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd132pd zmm26, zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xfd,0x40,0x98,0x52,0x80] + vfmadd132pd zmm26, zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd132pd zmm26, zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xfd,0x40,0x98,0x92,0xc0,0xdf,0xff,0xff] + vfmadd132pd zmm26, zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd132pd zmm26, zmm16, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x50,0x98,0x52,0x7f] + vfmadd132pd zmm26, zmm16, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmadd132pd zmm26, zmm16, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x50,0x98,0x92,0x00,0x04,0x00,0x00] + vfmadd132pd zmm26, zmm16, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmadd132pd zmm26, zmm16, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x50,0x98,0x52,0x80] + vfmadd132pd zmm26, zmm16, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmadd132pd zmm26, zmm16, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x50,0x98,0x92,0xf8,0xfb,0xff,0xff] + vfmadd132pd zmm26, zmm16, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmadd132ps zmm1, zmm20, zmm25 +// CHECK: encoding: [0x62,0x92,0x5d,0x40,0x98,0xc9] + vfmadd132ps zmm1, zmm20, zmm25 + +// CHECK: vfmadd132ps zmm1 {k1}, zmm20, zmm25 +// CHECK: encoding: [0x62,0x92,0x5d,0x41,0x98,0xc9] + vfmadd132ps zmm1 {k1}, zmm20, zmm25 + +// CHECK: vfmadd132ps zmm1 {k1} {z}, zmm20, zmm25 +// CHECK: encoding: [0x62,0x92,0x5d,0xc1,0x98,0xc9] + vfmadd132ps zmm1 {k1} {z}, zmm20, zmm25 + +// CHECK: vfmadd132ps zmm1, zmm20, zmm25, {rn-sae} +// CHECK: encoding: [0x62,0x92,0x5d,0x10,0x98,0xc9] + vfmadd132ps zmm1, zmm20, zmm25, {rn-sae} + +// CHECK: vfmadd132ps zmm1, zmm20, zmm25, {ru-sae} +// CHECK: encoding: [0x62,0x92,0x5d,0x50,0x98,0xc9] + vfmadd132ps zmm1, zmm20, zmm25, {ru-sae} + +// CHECK: vfmadd132ps zmm1, zmm20, zmm25, {rd-sae} +// CHECK: encoding: [0x62,0x92,0x5d,0x30,0x98,0xc9] + vfmadd132ps zmm1, zmm20, zmm25, {rd-sae} + +// CHECK: vfmadd132ps zmm1, zmm20, zmm25, {rz-sae} +// CHECK: encoding: [0x62,0x92,0x5d,0x70,0x98,0xc9] + vfmadd132ps zmm1, zmm20, zmm25, {rz-sae} + +// CHECK: vfmadd132ps zmm1, zmm20, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x5d,0x40,0x98,0x09] + vfmadd132ps zmm1, zmm20, zmmword ptr [rcx] + +// CHECK: vfmadd132ps zmm1, zmm20, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x5d,0x40,0x98,0x8c,0xf0,0x23,0x01,0x00,0x00] + vfmadd132ps zmm1, zmm20, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd132ps zmm1, zmm20, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x50,0x98,0x09] + vfmadd132ps zmm1, zmm20, dword ptr [rcx]{1to16} + +// CHECK: vfmadd132ps zmm1, zmm20, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x5d,0x40,0x98,0x4a,0x7f] + vfmadd132ps zmm1, zmm20, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd132ps zmm1, zmm20, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x5d,0x40,0x98,0x8a,0x00,0x20,0x00,0x00] + vfmadd132ps zmm1, zmm20, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd132ps zmm1, zmm20, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x5d,0x40,0x98,0x4a,0x80] + vfmadd132ps zmm1, zmm20, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd132ps zmm1, zmm20, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x5d,0x40,0x98,0x8a,0xc0,0xdf,0xff,0xff] + vfmadd132ps zmm1, zmm20, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd132ps zmm1, zmm20, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x50,0x98,0x4a,0x7f] + vfmadd132ps zmm1, zmm20, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmadd132ps zmm1, zmm20, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x50,0x98,0x8a,0x00,0x02,0x00,0x00] + vfmadd132ps zmm1, zmm20, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmadd132ps zmm1, zmm20, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x50,0x98,0x4a,0x80] + vfmadd132ps zmm1, zmm20, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmadd132ps zmm1, zmm20, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x50,0x98,0x8a,0xfc,0xfd,0xff,0xff] + vfmadd132ps zmm1, zmm20, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmadd132sd xmm28, xmm17, xmm3 +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x99,0xe3] + vfmadd132sd xmm28, xmm17, xmm3 + +// CHECK: vfmadd132sd xmm28 {k2}, xmm17, xmm3 +// CHECK: encoding: [0x62,0x62,0xf5,0x02,0x99,0xe3] + vfmadd132sd xmm28 {k2}, xmm17, xmm3 + +// CHECK: vfmadd132sd xmm28 {k2} {z}, xmm17, xmm3 +// CHECK: encoding: [0x62,0x62,0xf5,0x82,0x99,0xe3] + vfmadd132sd xmm28 {k2} {z}, xmm17, xmm3 + +// CHECK: vfmadd132sd xmm28, xmm17, xmm3, {rn-sae} +// CHECK: encoding: [0x62,0x62,0xf5,0x10,0x99,0xe3] + vfmadd132sd xmm28, xmm17, xmm3, {rn-sae} + +// CHECK: vfmadd132sd xmm28, xmm17, xmm3, {ru-sae} +// CHECK: encoding: [0x62,0x62,0xf5,0x50,0x99,0xe3] + vfmadd132sd xmm28, xmm17, xmm3, {ru-sae} + +// CHECK: vfmadd132sd xmm28, xmm17, xmm3, {rd-sae} +// CHECK: encoding: [0x62,0x62,0xf5,0x30,0x99,0xe3] + vfmadd132sd xmm28, xmm17, xmm3, {rd-sae} + +// CHECK: vfmadd132sd xmm28, xmm17, xmm3, {rz-sae} +// CHECK: encoding: [0x62,0x62,0xf5,0x70,0x99,0xe3] + vfmadd132sd xmm28, xmm17, xmm3, {rz-sae} + +// CHECK: vfmadd132sd xmm28, xmm17, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x99,0x21] + vfmadd132sd xmm28, xmm17, qword ptr [rcx] + +// CHECK: vfmadd132sd xmm28, xmm17, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xf5,0x00,0x99,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfmadd132sd xmm28, xmm17, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd132sd xmm28, xmm17, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x99,0x62,0x7f] + vfmadd132sd xmm28, xmm17, qword ptr [rdx + 1016] + +// CHECK: vfmadd132sd xmm28, xmm17, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x99,0xa2,0x00,0x04,0x00,0x00] + vfmadd132sd xmm28, xmm17, qword ptr [rdx + 1024] + +// CHECK: vfmadd132sd xmm28, xmm17, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x99,0x62,0x80] + vfmadd132sd xmm28, xmm17, qword ptr [rdx - 1024] + +// CHECK: vfmadd132sd xmm28, xmm17, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xf5,0x00,0x99,0xa2,0xf8,0xfb,0xff,0xff] + vfmadd132sd xmm28, xmm17, qword ptr [rdx - 1032] + +// CHECK: vfmadd132ss xmm30, xmm17, xmm22 +// CHECK: encoding: [0x62,0x22,0x75,0x00,0x99,0xf6] + vfmadd132ss xmm30, xmm17, xmm22 + +// CHECK: vfmadd132ss xmm30 {k3}, xmm17, xmm22 +// CHECK: encoding: [0x62,0x22,0x75,0x03,0x99,0xf6] + vfmadd132ss xmm30 {k3}, xmm17, xmm22 + +// CHECK: vfmadd132ss xmm30 {k3} {z}, xmm17, xmm22 +// CHECK: encoding: [0x62,0x22,0x75,0x83,0x99,0xf6] + vfmadd132ss xmm30 {k3} {z}, xmm17, xmm22 + +// CHECK: vfmadd132ss xmm30, xmm17, xmm22, {rn-sae} +// CHECK: encoding: [0x62,0x22,0x75,0x10,0x99,0xf6] + vfmadd132ss xmm30, xmm17, xmm22, {rn-sae} + +// CHECK: vfmadd132ss xmm30, xmm17, xmm22, {ru-sae} +// CHECK: encoding: [0x62,0x22,0x75,0x50,0x99,0xf6] + vfmadd132ss xmm30, xmm17, xmm22, {ru-sae} + +// CHECK: vfmadd132ss xmm30, xmm17, xmm22, {rd-sae} +// CHECK: encoding: [0x62,0x22,0x75,0x30,0x99,0xf6] + vfmadd132ss xmm30, xmm17, xmm22, {rd-sae} + +// CHECK: vfmadd132ss xmm30, xmm17, xmm22, {rz-sae} +// CHECK: encoding: [0x62,0x22,0x75,0x70,0x99,0xf6] + vfmadd132ss xmm30, xmm17, xmm22, {rz-sae} + +// CHECK: vfmadd132ss xmm30, xmm17, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x75,0x00,0x99,0x31] + vfmadd132ss xmm30, xmm17, dword ptr [rcx] + +// CHECK: vfmadd132ss xmm30, xmm17, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x75,0x00,0x99,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmadd132ss xmm30, xmm17, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd132ss xmm30, xmm17, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x75,0x00,0x99,0x72,0x7f] + vfmadd132ss xmm30, xmm17, dword ptr [rdx + 508] + +// CHECK: vfmadd132ss xmm30, xmm17, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x75,0x00,0x99,0xb2,0x00,0x02,0x00,0x00] + vfmadd132ss xmm30, xmm17, dword ptr [rdx + 512] + +// CHECK: vfmadd132ss xmm30, xmm17, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x75,0x00,0x99,0x72,0x80] + vfmadd132ss xmm30, xmm17, dword ptr [rdx - 512] + +// CHECK: vfmadd132ss xmm30, xmm17, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x75,0x00,0x99,0xb2,0xfc,0xfd,0xff,0xff] + vfmadd132ss xmm30, xmm17, dword ptr [rdx - 516] + +// CHECK: vfmadd213pd zmm18, zmm16, zmm25 +// CHECK: encoding: [0x62,0x82,0xfd,0x40,0xa8,0xd1] + vfmadd213pd zmm18, zmm16, zmm25 + +// CHECK: vfmadd213pd zmm18 {k3}, zmm16, zmm25 +// CHECK: encoding: [0x62,0x82,0xfd,0x43,0xa8,0xd1] + vfmadd213pd zmm18 {k3}, zmm16, zmm25 + +// CHECK: vfmadd213pd zmm18 {k3} {z}, zmm16, zmm25 +// CHECK: encoding: [0x62,0x82,0xfd,0xc3,0xa8,0xd1] + vfmadd213pd zmm18 {k3} {z}, zmm16, zmm25 + +// CHECK: vfmadd213pd zmm18, zmm16, zmm25, {rn-sae} +// CHECK: encoding: [0x62,0x82,0xfd,0x10,0xa8,0xd1] + vfmadd213pd zmm18, zmm16, zmm25, {rn-sae} + +// CHECK: vfmadd213pd zmm18, zmm16, zmm25, {ru-sae} +// CHECK: encoding: [0x62,0x82,0xfd,0x50,0xa8,0xd1] + vfmadd213pd zmm18, zmm16, zmm25, {ru-sae} + +// CHECK: vfmadd213pd zmm18, zmm16, zmm25, {rd-sae} +// CHECK: encoding: [0x62,0x82,0xfd,0x30,0xa8,0xd1] + vfmadd213pd zmm18, zmm16, zmm25, {rd-sae} + +// CHECK: vfmadd213pd zmm18, zmm16, zmm25, {rz-sae} +// CHECK: encoding: [0x62,0x82,0xfd,0x70,0xa8,0xd1] + vfmadd213pd zmm18, zmm16, zmm25, {rz-sae} + +// CHECK: vfmadd213pd zmm18, zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xa8,0x11] + vfmadd213pd zmm18, zmm16, zmmword ptr [rcx] + +// CHECK: vfmadd213pd zmm18, zmm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xfd,0x40,0xa8,0x94,0xf0,0x23,0x01,0x00,0x00] + vfmadd213pd zmm18, zmm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd213pd zmm18, zmm16, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xa8,0x11] + vfmadd213pd zmm18, zmm16, qword ptr [rcx]{1to8} + +// CHECK: vfmadd213pd zmm18, zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xa8,0x52,0x7f] + vfmadd213pd zmm18, zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd213pd zmm18, zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xa8,0x92,0x00,0x20,0x00,0x00] + vfmadd213pd zmm18, zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd213pd zmm18, zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xa8,0x52,0x80] + vfmadd213pd zmm18, zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd213pd zmm18, zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xa8,0x92,0xc0,0xdf,0xff,0xff] + vfmadd213pd zmm18, zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd213pd zmm18, zmm16, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xa8,0x52,0x7f] + vfmadd213pd zmm18, zmm16, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmadd213pd zmm18, zmm16, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xa8,0x92,0x00,0x04,0x00,0x00] + vfmadd213pd zmm18, zmm16, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmadd213pd zmm18, zmm16, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xa8,0x52,0x80] + vfmadd213pd zmm18, zmm16, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmadd213pd zmm18, zmm16, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xa8,0x92,0xf8,0xfb,0xff,0xff] + vfmadd213pd zmm18, zmm16, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmadd213ps zmm20, zmm19, zmm14 +// CHECK: encoding: [0x62,0xc2,0x65,0x40,0xa8,0xe6] + vfmadd213ps zmm20, zmm19, zmm14 + +// CHECK: vfmadd213ps zmm20 {k4}, zmm19, zmm14 +// CHECK: encoding: [0x62,0xc2,0x65,0x44,0xa8,0xe6] + vfmadd213ps zmm20 {k4}, zmm19, zmm14 + +// CHECK: vfmadd213ps zmm20 {k4} {z}, zmm19, zmm14 +// CHECK: encoding: [0x62,0xc2,0x65,0xc4,0xa8,0xe6] + vfmadd213ps zmm20 {k4} {z}, zmm19, zmm14 + +// CHECK: vfmadd213ps zmm20, zmm19, zmm14, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0x65,0x10,0xa8,0xe6] + vfmadd213ps zmm20, zmm19, zmm14, {rn-sae} + +// CHECK: vfmadd213ps zmm20, zmm19, zmm14, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0x65,0x50,0xa8,0xe6] + vfmadd213ps zmm20, zmm19, zmm14, {ru-sae} + +// CHECK: vfmadd213ps zmm20, zmm19, zmm14, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0x65,0x30,0xa8,0xe6] + vfmadd213ps zmm20, zmm19, zmm14, {rd-sae} + +// CHECK: vfmadd213ps zmm20, zmm19, zmm14, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0x65,0x70,0xa8,0xe6] + vfmadd213ps zmm20, zmm19, zmm14, {rz-sae} + +// CHECK: vfmadd213ps zmm20, zmm19, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x65,0x40,0xa8,0x21] + vfmadd213ps zmm20, zmm19, zmmword ptr [rcx] + +// CHECK: vfmadd213ps zmm20, zmm19, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x65,0x40,0xa8,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfmadd213ps zmm20, zmm19, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd213ps zmm20, zmm19, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x50,0xa8,0x21] + vfmadd213ps zmm20, zmm19, dword ptr [rcx]{1to16} + +// CHECK: vfmadd213ps zmm20, zmm19, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x65,0x40,0xa8,0x62,0x7f] + vfmadd213ps zmm20, zmm19, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd213ps zmm20, zmm19, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x65,0x40,0xa8,0xa2,0x00,0x20,0x00,0x00] + vfmadd213ps zmm20, zmm19, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd213ps zmm20, zmm19, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x65,0x40,0xa8,0x62,0x80] + vfmadd213ps zmm20, zmm19, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd213ps zmm20, zmm19, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x65,0x40,0xa8,0xa2,0xc0,0xdf,0xff,0xff] + vfmadd213ps zmm20, zmm19, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd213ps zmm20, zmm19, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x50,0xa8,0x62,0x7f] + vfmadd213ps zmm20, zmm19, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmadd213ps zmm20, zmm19, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x50,0xa8,0xa2,0x00,0x02,0x00,0x00] + vfmadd213ps zmm20, zmm19, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmadd213ps zmm20, zmm19, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x50,0xa8,0x62,0x80] + vfmadd213ps zmm20, zmm19, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmadd213ps zmm20, zmm19, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x50,0xa8,0xa2,0xfc,0xfd,0xff,0xff] + vfmadd213ps zmm20, zmm19, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmadd213sd xmm24, xmm26, xmm13 +// CHECK: encoding: [0x62,0x42,0xad,0x00,0xa9,0xc5] + vfmadd213sd xmm24, xmm26, xmm13 + +// CHECK: vfmadd213sd xmm24 {k3}, xmm26, xmm13 +// CHECK: encoding: [0x62,0x42,0xad,0x03,0xa9,0xc5] + vfmadd213sd xmm24 {k3}, xmm26, xmm13 + +// CHECK: vfmadd213sd xmm24 {k3} {z}, xmm26, xmm13 +// CHECK: encoding: [0x62,0x42,0xad,0x83,0xa9,0xc5] + vfmadd213sd xmm24 {k3} {z}, xmm26, xmm13 + +// CHECK: vfmadd213sd xmm24, xmm26, xmm13, {rn-sae} +// CHECK: encoding: [0x62,0x42,0xad,0x10,0xa9,0xc5] + vfmadd213sd xmm24, xmm26, xmm13, {rn-sae} + +// CHECK: vfmadd213sd xmm24, xmm26, xmm13, {ru-sae} +// CHECK: encoding: [0x62,0x42,0xad,0x50,0xa9,0xc5] + vfmadd213sd xmm24, xmm26, xmm13, {ru-sae} + +// CHECK: vfmadd213sd xmm24, xmm26, xmm13, {rd-sae} +// CHECK: encoding: [0x62,0x42,0xad,0x30,0xa9,0xc5] + vfmadd213sd xmm24, xmm26, xmm13, {rd-sae} + +// CHECK: vfmadd213sd xmm24, xmm26, xmm13, {rz-sae} +// CHECK: encoding: [0x62,0x42,0xad,0x70,0xa9,0xc5] + vfmadd213sd xmm24, xmm26, xmm13, {rz-sae} + +// CHECK: vfmadd213sd xmm24, xmm26, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xad,0x00,0xa9,0x01] + vfmadd213sd xmm24, xmm26, qword ptr [rcx] + +// CHECK: vfmadd213sd xmm24, xmm26, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xad,0x00,0xa9,0x84,0xf0,0x23,0x01,0x00,0x00] + vfmadd213sd xmm24, xmm26, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd213sd xmm24, xmm26, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xad,0x00,0xa9,0x42,0x7f] + vfmadd213sd xmm24, xmm26, qword ptr [rdx + 1016] + +// CHECK: vfmadd213sd xmm24, xmm26, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xad,0x00,0xa9,0x82,0x00,0x04,0x00,0x00] + vfmadd213sd xmm24, xmm26, qword ptr [rdx + 1024] + +// CHECK: vfmadd213sd xmm24, xmm26, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xad,0x00,0xa9,0x42,0x80] + vfmadd213sd xmm24, xmm26, qword ptr [rdx - 1024] + +// CHECK: vfmadd213sd xmm24, xmm26, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xad,0x00,0xa9,0x82,0xf8,0xfb,0xff,0xff] + vfmadd213sd xmm24, xmm26, qword ptr [rdx - 1032] + +// CHECK: vfmadd213ss xmm30, xmm22, xmm16 +// CHECK: encoding: [0x62,0x22,0x4d,0x00,0xa9,0xf0] + vfmadd213ss xmm30, xmm22, xmm16 + +// CHECK: vfmadd213ss xmm30 {k1}, xmm22, xmm16 +// CHECK: encoding: [0x62,0x22,0x4d,0x01,0xa9,0xf0] + vfmadd213ss xmm30 {k1}, xmm22, xmm16 + +// CHECK: vfmadd213ss xmm30 {k1} {z}, xmm22, xmm16 +// CHECK: encoding: [0x62,0x22,0x4d,0x81,0xa9,0xf0] + vfmadd213ss xmm30 {k1} {z}, xmm22, xmm16 + +// CHECK: vfmadd213ss xmm30, xmm22, xmm16, {rn-sae} +// CHECK: encoding: [0x62,0x22,0x4d,0x10,0xa9,0xf0] + vfmadd213ss xmm30, xmm22, xmm16, {rn-sae} + +// CHECK: vfmadd213ss xmm30, xmm22, xmm16, {ru-sae} +// CHECK: encoding: [0x62,0x22,0x4d,0x50,0xa9,0xf0] + vfmadd213ss xmm30, xmm22, xmm16, {ru-sae} + +// CHECK: vfmadd213ss xmm30, xmm22, xmm16, {rd-sae} +// CHECK: encoding: [0x62,0x22,0x4d,0x30,0xa9,0xf0] + vfmadd213ss xmm30, xmm22, xmm16, {rd-sae} + +// CHECK: vfmadd213ss xmm30, xmm22, xmm16, {rz-sae} +// CHECK: encoding: [0x62,0x22,0x4d,0x70,0xa9,0xf0] + vfmadd213ss xmm30, xmm22, xmm16, {rz-sae} + +// CHECK: vfmadd213ss xmm30, xmm22, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0xa9,0x31] + vfmadd213ss xmm30, xmm22, dword ptr [rcx] + +// CHECK: vfmadd213ss xmm30, xmm22, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x4d,0x00,0xa9,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmadd213ss xmm30, xmm22, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd213ss xmm30, xmm22, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0xa9,0x72,0x7f] + vfmadd213ss xmm30, xmm22, dword ptr [rdx + 508] + +// CHECK: vfmadd213ss xmm30, xmm22, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0xa9,0xb2,0x00,0x02,0x00,0x00] + vfmadd213ss xmm30, xmm22, dword ptr [rdx + 512] + +// CHECK: vfmadd213ss xmm30, xmm22, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0xa9,0x72,0x80] + vfmadd213ss xmm30, xmm22, dword ptr [rdx - 512] + +// CHECK: vfmadd213ss xmm30, xmm22, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0xa9,0xb2,0xfc,0xfd,0xff,0xff] + vfmadd213ss xmm30, xmm22, dword ptr [rdx - 516] + +// CHECK: vfmadd231pd zmm30, zmm6, zmm9 +// CHECK: encoding: [0x62,0x42,0xcd,0x48,0xb8,0xf1] + vfmadd231pd zmm30, zmm6, zmm9 + +// CHECK: vfmadd231pd zmm30 {k4}, zmm6, zmm9 +// CHECK: encoding: [0x62,0x42,0xcd,0x4c,0xb8,0xf1] + vfmadd231pd zmm30 {k4}, zmm6, zmm9 + +// CHECK: vfmadd231pd zmm30 {k4} {z}, zmm6, zmm9 +// CHECK: encoding: [0x62,0x42,0xcd,0xcc,0xb8,0xf1] + vfmadd231pd zmm30 {k4} {z}, zmm6, zmm9 + +// CHECK: vfmadd231pd zmm30, zmm6, zmm9, {rn-sae} +// CHECK: encoding: [0x62,0x42,0xcd,0x18,0xb8,0xf1] + vfmadd231pd zmm30, zmm6, zmm9, {rn-sae} + +// CHECK: vfmadd231pd zmm30, zmm6, zmm9, {ru-sae} +// CHECK: encoding: [0x62,0x42,0xcd,0x58,0xb8,0xf1] + vfmadd231pd zmm30, zmm6, zmm9, {ru-sae} + +// CHECK: vfmadd231pd zmm30, zmm6, zmm9, {rd-sae} +// CHECK: encoding: [0x62,0x42,0xcd,0x38,0xb8,0xf1] + vfmadd231pd zmm30, zmm6, zmm9, {rd-sae} + +// CHECK: vfmadd231pd zmm30, zmm6, zmm9, {rz-sae} +// CHECK: encoding: [0x62,0x42,0xcd,0x78,0xb8,0xf1] + vfmadd231pd zmm30, zmm6, zmm9, {rz-sae} + +// CHECK: vfmadd231pd zmm30, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xb8,0x31] + vfmadd231pd zmm30, zmm6, zmmword ptr [rcx] + +// CHECK: vfmadd231pd zmm30, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xcd,0x48,0xb8,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmadd231pd zmm30, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd231pd zmm30, zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xb8,0x31] + vfmadd231pd zmm30, zmm6, qword ptr [rcx]{1to8} + +// CHECK: vfmadd231pd zmm30, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xb8,0x72,0x7f] + vfmadd231pd zmm30, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd231pd zmm30, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xb8,0xb2,0x00,0x20,0x00,0x00] + vfmadd231pd zmm30, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd231pd zmm30, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xb8,0x72,0x80] + vfmadd231pd zmm30, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd231pd zmm30, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xb8,0xb2,0xc0,0xdf,0xff,0xff] + vfmadd231pd zmm30, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd231pd zmm30, zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xb8,0x72,0x7f] + vfmadd231pd zmm30, zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmadd231pd zmm30, zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xb8,0xb2,0x00,0x04,0x00,0x00] + vfmadd231pd zmm30, zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmadd231pd zmm30, zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xb8,0x72,0x80] + vfmadd231pd zmm30, zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmadd231pd zmm30, zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xb8,0xb2,0xf8,0xfb,0xff,0xff] + vfmadd231pd zmm30, zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmadd231ps zmm27, zmm28, zmm25 +// CHECK: encoding: [0x62,0x02,0x1d,0x40,0xb8,0xd9] + vfmadd231ps zmm27, zmm28, zmm25 + +// CHECK: vfmadd231ps zmm27 {k3}, zmm28, zmm25 +// CHECK: encoding: [0x62,0x02,0x1d,0x43,0xb8,0xd9] + vfmadd231ps zmm27 {k3}, zmm28, zmm25 + +// CHECK: vfmadd231ps zmm27 {k3} {z}, zmm28, zmm25 +// CHECK: encoding: [0x62,0x02,0x1d,0xc3,0xb8,0xd9] + vfmadd231ps zmm27 {k3} {z}, zmm28, zmm25 + +// CHECK: vfmadd231ps zmm27, zmm28, zmm25, {rn-sae} +// CHECK: encoding: [0x62,0x02,0x1d,0x10,0xb8,0xd9] + vfmadd231ps zmm27, zmm28, zmm25, {rn-sae} + +// CHECK: vfmadd231ps zmm27, zmm28, zmm25, {ru-sae} +// CHECK: encoding: [0x62,0x02,0x1d,0x50,0xb8,0xd9] + vfmadd231ps zmm27, zmm28, zmm25, {ru-sae} + +// CHECK: vfmadd231ps zmm27, zmm28, zmm25, {rd-sae} +// CHECK: encoding: [0x62,0x02,0x1d,0x30,0xb8,0xd9] + vfmadd231ps zmm27, zmm28, zmm25, {rd-sae} + +// CHECK: vfmadd231ps zmm27, zmm28, zmm25, {rz-sae} +// CHECK: encoding: [0x62,0x02,0x1d,0x70,0xb8,0xd9] + vfmadd231ps zmm27, zmm28, zmm25, {rz-sae} + +// CHECK: vfmadd231ps zmm27, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x1d,0x40,0xb8,0x19] + vfmadd231ps zmm27, zmm28, zmmword ptr [rcx] + +// CHECK: vfmadd231ps zmm27, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x1d,0x40,0xb8,0x9c,0xf0,0x23,0x01,0x00,0x00] + vfmadd231ps zmm27, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd231ps zmm27, zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x1d,0x50,0xb8,0x19] + vfmadd231ps zmm27, zmm28, dword ptr [rcx]{1to16} + +// CHECK: vfmadd231ps zmm27, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x1d,0x40,0xb8,0x5a,0x7f] + vfmadd231ps zmm27, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd231ps zmm27, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x1d,0x40,0xb8,0x9a,0x00,0x20,0x00,0x00] + vfmadd231ps zmm27, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd231ps zmm27, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x1d,0x40,0xb8,0x5a,0x80] + vfmadd231ps zmm27, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd231ps zmm27, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x1d,0x40,0xb8,0x9a,0xc0,0xdf,0xff,0xff] + vfmadd231ps zmm27, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd231ps zmm27, zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x1d,0x50,0xb8,0x5a,0x7f] + vfmadd231ps zmm27, zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmadd231ps zmm27, zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x1d,0x50,0xb8,0x9a,0x00,0x02,0x00,0x00] + vfmadd231ps zmm27, zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmadd231ps zmm27, zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x1d,0x50,0xb8,0x5a,0x80] + vfmadd231ps zmm27, zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmadd231ps zmm27, zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x1d,0x50,0xb8,0x9a,0xfc,0xfd,0xff,0xff] + vfmadd231ps zmm27, zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmadd231sd xmm4, xmm1, xmm14 +// CHECK: encoding: [0xc4,0xc2,0xf1,0xb9,0xe6] + vfmadd231sd xmm4, xmm1, xmm14 + +// CHECK: vfmadd231sd xmm4 {k1}, xmm1, xmm14 +// CHECK: encoding: [0x62,0xd2,0xf5,0x09,0xb9,0xe6] + vfmadd231sd xmm4 {k1}, xmm1, xmm14 + +// CHECK: vfmadd231sd xmm4 {k1} {z}, xmm1, xmm14 +// CHECK: encoding: [0x62,0xd2,0xf5,0x89,0xb9,0xe6] + vfmadd231sd xmm4 {k1} {z}, xmm1, xmm14 + +// CHECK: vfmadd231sd xmm4, xmm1, xmm14, {rn-sae} +// CHECK: encoding: [0x62,0xd2,0xf5,0x18,0xb9,0xe6] + vfmadd231sd xmm4, xmm1, xmm14, {rn-sae} + +// CHECK: vfmadd231sd xmm4, xmm1, xmm14, {ru-sae} +// CHECK: encoding: [0x62,0xd2,0xf5,0x58,0xb9,0xe6] + vfmadd231sd xmm4, xmm1, xmm14, {ru-sae} + +// CHECK: vfmadd231sd xmm4, xmm1, xmm14, {rd-sae} +// CHECK: encoding: [0x62,0xd2,0xf5,0x38,0xb9,0xe6] + vfmadd231sd xmm4, xmm1, xmm14, {rd-sae} + +// CHECK: vfmadd231sd xmm4, xmm1, xmm14, {rz-sae} +// CHECK: encoding: [0x62,0xd2,0xf5,0x78,0xb9,0xe6] + vfmadd231sd xmm4, xmm1, xmm14, {rz-sae} + +// CHECK: vfmadd231sd xmm4, xmm1, qword ptr [rcx] +// CHECK: encoding: [0xc4,0xe2,0xf1,0xb9,0x21] + vfmadd231sd xmm4, xmm1, qword ptr [rcx] + +// CHECK: vfmadd231sd xmm4, xmm1, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa2,0xf1,0xb9,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfmadd231sd xmm4, xmm1, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd231sd xmm4, xmm1, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0xe2,0xf1,0xb9,0xa2,0xf8,0x03,0x00,0x00] + vfmadd231sd xmm4, xmm1, qword ptr [rdx + 1016] + +// CHECK: vfmadd231sd xmm4, xmm1, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0xe2,0xf1,0xb9,0xa2,0x00,0x04,0x00,0x00] + vfmadd231sd xmm4, xmm1, qword ptr [rdx + 1024] + +// CHECK: vfmadd231sd xmm4, xmm1, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0xe2,0xf1,0xb9,0xa2,0x00,0xfc,0xff,0xff] + vfmadd231sd xmm4, xmm1, qword ptr [rdx - 1024] + +// CHECK: vfmadd231sd xmm4, xmm1, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0xe2,0xf1,0xb9,0xa2,0xf8,0xfb,0xff,0xff] + vfmadd231sd xmm4, xmm1, qword ptr [rdx - 1032] + +// CHECK: vfmadd231ss xmm29, xmm15, xmm10 +// CHECK: encoding: [0x62,0x42,0x05,0x08,0xb9,0xea] + vfmadd231ss xmm29, xmm15, xmm10 + +// CHECK: vfmadd231ss xmm29 {k4}, xmm15, xmm10 +// CHECK: encoding: [0x62,0x42,0x05,0x0c,0xb9,0xea] + vfmadd231ss xmm29 {k4}, xmm15, xmm10 + +// CHECK: vfmadd231ss xmm29 {k4} {z}, xmm15, xmm10 +// CHECK: encoding: [0x62,0x42,0x05,0x8c,0xb9,0xea] + vfmadd231ss xmm29 {k4} {z}, xmm15, xmm10 + +// CHECK: vfmadd231ss xmm29, xmm15, xmm10, {rn-sae} +// CHECK: encoding: [0x62,0x42,0x05,0x18,0xb9,0xea] + vfmadd231ss xmm29, xmm15, xmm10, {rn-sae} + +// CHECK: vfmadd231ss xmm29, xmm15, xmm10, {ru-sae} +// CHECK: encoding: [0x62,0x42,0x05,0x58,0xb9,0xea] + vfmadd231ss xmm29, xmm15, xmm10, {ru-sae} + +// CHECK: vfmadd231ss xmm29, xmm15, xmm10, {rd-sae} +// CHECK: encoding: [0x62,0x42,0x05,0x38,0xb9,0xea] + vfmadd231ss xmm29, xmm15, xmm10, {rd-sae} + +// CHECK: vfmadd231ss xmm29, xmm15, xmm10, {rz-sae} +// CHECK: encoding: [0x62,0x42,0x05,0x78,0xb9,0xea] + vfmadd231ss xmm29, xmm15, xmm10, {rz-sae} + +// CHECK: vfmadd231ss xmm29, xmm15, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x05,0x08,0xb9,0x29] + vfmadd231ss xmm29, xmm15, dword ptr [rcx] + +// CHECK: vfmadd231ss xmm29, xmm15, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x05,0x08,0xb9,0xac,0xf0,0x23,0x01,0x00,0x00] + vfmadd231ss xmm29, xmm15, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfmadd231ss xmm29, xmm15, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x05,0x08,0xb9,0x6a,0x7f] + vfmadd231ss xmm29, xmm15, dword ptr [rdx + 508] + +// CHECK: vfmadd231ss xmm29, xmm15, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x05,0x08,0xb9,0xaa,0x00,0x02,0x00,0x00] + vfmadd231ss xmm29, xmm15, dword ptr [rdx + 512] + +// CHECK: vfmadd231ss xmm29, xmm15, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x05,0x08,0xb9,0x6a,0x80] + vfmadd231ss xmm29, xmm15, dword ptr [rdx - 512] + +// CHECK: vfmadd231ss xmm29, xmm15, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x05,0x08,0xb9,0xaa,0xfc,0xfd,0xff,0xff] + vfmadd231ss xmm29, xmm15, dword ptr [rdx - 516] + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmm21 +// CHECK: encoding: [0x62,0xa2,0xb5,0x40,0x96,0xe5] + vfmaddsub132pd zmm20, zmm25, zmm21 + +// CHECK: vfmaddsub132pd zmm20 {k2}, zmm25, zmm21 +// CHECK: encoding: [0x62,0xa2,0xb5,0x42,0x96,0xe5] + vfmaddsub132pd zmm20 {k2}, zmm25, zmm21 + +// CHECK: vfmaddsub132pd zmm20 {k2} {z}, zmm25, zmm21 +// CHECK: encoding: [0x62,0xa2,0xb5,0xc2,0x96,0xe5] + vfmaddsub132pd zmm20 {k2} {z}, zmm25, zmm21 + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmm21, {rn-sae} +// CHECK: encoding: [0x62,0xa2,0xb5,0x10,0x96,0xe5] + vfmaddsub132pd zmm20, zmm25, zmm21, {rn-sae} + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmm21, {ru-sae} +// CHECK: encoding: [0x62,0xa2,0xb5,0x50,0x96,0xe5] + vfmaddsub132pd zmm20, zmm25, zmm21, {ru-sae} + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmm21, {rd-sae} +// CHECK: encoding: [0x62,0xa2,0xb5,0x30,0x96,0xe5] + vfmaddsub132pd zmm20, zmm25, zmm21, {rd-sae} + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmm21, {rz-sae} +// CHECK: encoding: [0x62,0xa2,0xb5,0x70,0x96,0xe5] + vfmaddsub132pd zmm20, zmm25, zmm21, {rz-sae} + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xb5,0x40,0x96,0x21] + vfmaddsub132pd zmm20, zmm25, zmmword ptr [rcx] + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xb5,0x40,0x96,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfmaddsub132pd zmm20, zmm25, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmaddsub132pd zmm20, zmm25, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xb5,0x50,0x96,0x21] + vfmaddsub132pd zmm20, zmm25, qword ptr [rcx]{1to8} + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xb5,0x40,0x96,0x62,0x7f] + vfmaddsub132pd zmm20, zmm25, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xb5,0x40,0x96,0xa2,0x00,0x20,0x00,0x00] + vfmaddsub132pd zmm20, zmm25, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xb5,0x40,0x96,0x62,0x80] + vfmaddsub132pd zmm20, zmm25, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub132pd zmm20, zmm25, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xb5,0x40,0x96,0xa2,0xc0,0xdf,0xff,0xff] + vfmaddsub132pd zmm20, zmm25, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub132pd zmm20, zmm25, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xb5,0x50,0x96,0x62,0x7f] + vfmaddsub132pd zmm20, zmm25, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmaddsub132pd zmm20, zmm25, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xb5,0x50,0x96,0xa2,0x00,0x04,0x00,0x00] + vfmaddsub132pd zmm20, zmm25, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmaddsub132pd zmm20, zmm25, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xb5,0x50,0x96,0x62,0x80] + vfmaddsub132pd zmm20, zmm25, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmaddsub132pd zmm20, zmm25, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xb5,0x50,0x96,0xa2,0xf8,0xfb,0xff,0xff] + vfmaddsub132pd zmm20, zmm25, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmm20 +// CHECK: encoding: [0x62,0x32,0x35,0x48,0x96,0xd4] + vfmaddsub132ps zmm10, zmm9, zmm20 + +// CHECK: vfmaddsub132ps zmm10 {k3}, zmm9, zmm20 +// CHECK: encoding: [0x62,0x32,0x35,0x4b,0x96,0xd4] + vfmaddsub132ps zmm10 {k3}, zmm9, zmm20 + +// CHECK: vfmaddsub132ps zmm10 {k3} {z}, zmm9, zmm20 +// CHECK: encoding: [0x62,0x32,0x35,0xcb,0x96,0xd4] + vfmaddsub132ps zmm10 {k3} {z}, zmm9, zmm20 + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmm20, {rn-sae} +// CHECK: encoding: [0x62,0x32,0x35,0x18,0x96,0xd4] + vfmaddsub132ps zmm10, zmm9, zmm20, {rn-sae} + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmm20, {ru-sae} +// CHECK: encoding: [0x62,0x32,0x35,0x58,0x96,0xd4] + vfmaddsub132ps zmm10, zmm9, zmm20, {ru-sae} + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmm20, {rd-sae} +// CHECK: encoding: [0x62,0x32,0x35,0x38,0x96,0xd4] + vfmaddsub132ps zmm10, zmm9, zmm20, {rd-sae} + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmm20, {rz-sae} +// CHECK: encoding: [0x62,0x32,0x35,0x78,0x96,0xd4] + vfmaddsub132ps zmm10, zmm9, zmm20, {rz-sae} + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0x96,0x11] + vfmaddsub132ps zmm10, zmm9, zmmword ptr [rcx] + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x35,0x48,0x96,0x94,0xf0,0x23,0x01,0x00,0x00] + vfmaddsub132ps zmm10, zmm9, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmaddsub132ps zmm10, zmm9, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0x96,0x11] + vfmaddsub132ps zmm10, zmm9, dword ptr [rcx]{1to16} + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0x96,0x52,0x7f] + vfmaddsub132ps zmm10, zmm9, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0x96,0x92,0x00,0x20,0x00,0x00] + vfmaddsub132ps zmm10, zmm9, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0x96,0x52,0x80] + vfmaddsub132ps zmm10, zmm9, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub132ps zmm10, zmm9, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0x96,0x92,0xc0,0xdf,0xff,0xff] + vfmaddsub132ps zmm10, zmm9, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub132ps zmm10, zmm9, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0x96,0x52,0x7f] + vfmaddsub132ps zmm10, zmm9, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmaddsub132ps zmm10, zmm9, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0x96,0x92,0x00,0x02,0x00,0x00] + vfmaddsub132ps zmm10, zmm9, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmaddsub132ps zmm10, zmm9, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0x96,0x52,0x80] + vfmaddsub132ps zmm10, zmm9, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmaddsub132ps zmm10, zmm9, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0x96,0x92,0xfc,0xfd,0xff,0xff] + vfmaddsub132ps zmm10, zmm9, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmm10 +// CHECK: encoding: [0x62,0x42,0xcd,0x48,0xa6,0xd2] + vfmaddsub213pd zmm26, zmm6, zmm10 + +// CHECK: vfmaddsub213pd zmm26 {k6}, zmm6, zmm10 +// CHECK: encoding: [0x62,0x42,0xcd,0x4e,0xa6,0xd2] + vfmaddsub213pd zmm26 {k6}, zmm6, zmm10 + +// CHECK: vfmaddsub213pd zmm26 {k6} {z}, zmm6, zmm10 +// CHECK: encoding: [0x62,0x42,0xcd,0xce,0xa6,0xd2] + vfmaddsub213pd zmm26 {k6} {z}, zmm6, zmm10 + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmm10, {rn-sae} +// CHECK: encoding: [0x62,0x42,0xcd,0x18,0xa6,0xd2] + vfmaddsub213pd zmm26, zmm6, zmm10, {rn-sae} + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmm10, {ru-sae} +// CHECK: encoding: [0x62,0x42,0xcd,0x58,0xa6,0xd2] + vfmaddsub213pd zmm26, zmm6, zmm10, {ru-sae} + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmm10, {rd-sae} +// CHECK: encoding: [0x62,0x42,0xcd,0x38,0xa6,0xd2] + vfmaddsub213pd zmm26, zmm6, zmm10, {rd-sae} + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmm10, {rz-sae} +// CHECK: encoding: [0x62,0x42,0xcd,0x78,0xa6,0xd2] + vfmaddsub213pd zmm26, zmm6, zmm10, {rz-sae} + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xa6,0x11] + vfmaddsub213pd zmm26, zmm6, zmmword ptr [rcx] + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xcd,0x48,0xa6,0x94,0xf0,0x23,0x01,0x00,0x00] + vfmaddsub213pd zmm26, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmaddsub213pd zmm26, zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xa6,0x11] + vfmaddsub213pd zmm26, zmm6, qword ptr [rcx]{1to8} + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xa6,0x52,0x7f] + vfmaddsub213pd zmm26, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xa6,0x92,0x00,0x20,0x00,0x00] + vfmaddsub213pd zmm26, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xa6,0x52,0x80] + vfmaddsub213pd zmm26, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub213pd zmm26, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xcd,0x48,0xa6,0x92,0xc0,0xdf,0xff,0xff] + vfmaddsub213pd zmm26, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub213pd zmm26, zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xa6,0x52,0x7f] + vfmaddsub213pd zmm26, zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmaddsub213pd zmm26, zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xa6,0x92,0x00,0x04,0x00,0x00] + vfmaddsub213pd zmm26, zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmaddsub213pd zmm26, zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xa6,0x52,0x80] + vfmaddsub213pd zmm26, zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmaddsub213pd zmm26, zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x58,0xa6,0x92,0xf8,0xfb,0xff,0xff] + vfmaddsub213pd zmm26, zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmm28 +// CHECK: encoding: [0x62,0x82,0x3d,0x40,0xa6,0xcc] + vfmaddsub213ps zmm17, zmm24, zmm28 + +// CHECK: vfmaddsub213ps zmm17 {k6}, zmm24, zmm28 +// CHECK: encoding: [0x62,0x82,0x3d,0x46,0xa6,0xcc] + vfmaddsub213ps zmm17 {k6}, zmm24, zmm28 + +// CHECK: vfmaddsub213ps zmm17 {k6} {z}, zmm24, zmm28 +// CHECK: encoding: [0x62,0x82,0x3d,0xc6,0xa6,0xcc] + vfmaddsub213ps zmm17 {k6} {z}, zmm24, zmm28 + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmm28, {rn-sae} +// CHECK: encoding: [0x62,0x82,0x3d,0x10,0xa6,0xcc] + vfmaddsub213ps zmm17, zmm24, zmm28, {rn-sae} + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmm28, {ru-sae} +// CHECK: encoding: [0x62,0x82,0x3d,0x50,0xa6,0xcc] + vfmaddsub213ps zmm17, zmm24, zmm28, {ru-sae} + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmm28, {rd-sae} +// CHECK: encoding: [0x62,0x82,0x3d,0x30,0xa6,0xcc] + vfmaddsub213ps zmm17, zmm24, zmm28, {rd-sae} + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmm28, {rz-sae} +// CHECK: encoding: [0x62,0x82,0x3d,0x70,0xa6,0xcc] + vfmaddsub213ps zmm17, zmm24, zmm28, {rz-sae} + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0xa6,0x09] + vfmaddsub213ps zmm17, zmm24, zmmword ptr [rcx] + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x3d,0x40,0xa6,0x8c,0xf0,0x23,0x01,0x00,0x00] + vfmaddsub213ps zmm17, zmm24, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmaddsub213ps zmm17, zmm24, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0xa6,0x09] + vfmaddsub213ps zmm17, zmm24, dword ptr [rcx]{1to16} + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0xa6,0x4a,0x7f] + vfmaddsub213ps zmm17, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0xa6,0x8a,0x00,0x20,0x00,0x00] + vfmaddsub213ps zmm17, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0xa6,0x4a,0x80] + vfmaddsub213ps zmm17, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub213ps zmm17, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0xa6,0x8a,0xc0,0xdf,0xff,0xff] + vfmaddsub213ps zmm17, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub213ps zmm17, zmm24, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0xa6,0x4a,0x7f] + vfmaddsub213ps zmm17, zmm24, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmaddsub213ps zmm17, zmm24, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0xa6,0x8a,0x00,0x02,0x00,0x00] + vfmaddsub213ps zmm17, zmm24, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmaddsub213ps zmm17, zmm24, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0xa6,0x4a,0x80] + vfmaddsub213ps zmm17, zmm24, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmaddsub213ps zmm17, zmm24, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0xa6,0x8a,0xfc,0xfd,0xff,0xff] + vfmaddsub213ps zmm17, zmm24, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmm24 +// CHECK: encoding: [0x62,0x12,0xa5,0x40,0xb6,0xc8] + vfmaddsub231pd zmm9, zmm27, zmm24 + +// CHECK: vfmaddsub231pd zmm9 {k7}, zmm27, zmm24 +// CHECK: encoding: [0x62,0x12,0xa5,0x47,0xb6,0xc8] + vfmaddsub231pd zmm9 {k7}, zmm27, zmm24 + +// CHECK: vfmaddsub231pd zmm9 {k7} {z}, zmm27, zmm24 +// CHECK: encoding: [0x62,0x12,0xa5,0xc7,0xb6,0xc8] + vfmaddsub231pd zmm9 {k7} {z}, zmm27, zmm24 + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmm24, {rn-sae} +// CHECK: encoding: [0x62,0x12,0xa5,0x10,0xb6,0xc8] + vfmaddsub231pd zmm9, zmm27, zmm24, {rn-sae} + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmm24, {ru-sae} +// CHECK: encoding: [0x62,0x12,0xa5,0x50,0xb6,0xc8] + vfmaddsub231pd zmm9, zmm27, zmm24, {ru-sae} + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmm24, {rd-sae} +// CHECK: encoding: [0x62,0x12,0xa5,0x30,0xb6,0xc8] + vfmaddsub231pd zmm9, zmm27, zmm24, {rd-sae} + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmm24, {rz-sae} +// CHECK: encoding: [0x62,0x12,0xa5,0x70,0xb6,0xc8] + vfmaddsub231pd zmm9, zmm27, zmm24, {rz-sae} + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xa5,0x40,0xb6,0x09] + vfmaddsub231pd zmm9, zmm27, zmmword ptr [rcx] + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xa5,0x40,0xb6,0x8c,0xf0,0x23,0x01,0x00,0x00] + vfmaddsub231pd zmm9, zmm27, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmaddsub231pd zmm9, zmm27, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x50,0xb6,0x09] + vfmaddsub231pd zmm9, zmm27, qword ptr [rcx]{1to8} + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xa5,0x40,0xb6,0x4a,0x7f] + vfmaddsub231pd zmm9, zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xa5,0x40,0xb6,0x8a,0x00,0x20,0x00,0x00] + vfmaddsub231pd zmm9, zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xa5,0x40,0xb6,0x4a,0x80] + vfmaddsub231pd zmm9, zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub231pd zmm9, zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xa5,0x40,0xb6,0x8a,0xc0,0xdf,0xff,0xff] + vfmaddsub231pd zmm9, zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub231pd zmm9, zmm27, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x50,0xb6,0x4a,0x7f] + vfmaddsub231pd zmm9, zmm27, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmaddsub231pd zmm9, zmm27, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x50,0xb6,0x8a,0x00,0x04,0x00,0x00] + vfmaddsub231pd zmm9, zmm27, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmaddsub231pd zmm9, zmm27, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x50,0xb6,0x4a,0x80] + vfmaddsub231pd zmm9, zmm27, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmaddsub231pd zmm9, zmm27, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x50,0xb6,0x8a,0xf8,0xfb,0xff,0xff] + vfmaddsub231pd zmm9, zmm27, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmm19 +// CHECK: encoding: [0x62,0x32,0x55,0x40,0xb6,0xfb] + vfmaddsub231ps zmm15, zmm21, zmm19 + +// CHECK: vfmaddsub231ps zmm15 {k6}, zmm21, zmm19 +// CHECK: encoding: [0x62,0x32,0x55,0x46,0xb6,0xfb] + vfmaddsub231ps zmm15 {k6}, zmm21, zmm19 + +// CHECK: vfmaddsub231ps zmm15 {k6} {z}, zmm21, zmm19 +// CHECK: encoding: [0x62,0x32,0x55,0xc6,0xb6,0xfb] + vfmaddsub231ps zmm15 {k6} {z}, zmm21, zmm19 + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0x32,0x55,0x10,0xb6,0xfb] + vfmaddsub231ps zmm15, zmm21, zmm19, {rn-sae} + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0x32,0x55,0x50,0xb6,0xfb] + vfmaddsub231ps zmm15, zmm21, zmm19, {ru-sae} + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0x32,0x55,0x30,0xb6,0xfb] + vfmaddsub231ps zmm15, zmm21, zmm19, {rd-sae} + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0x32,0x55,0x70,0xb6,0xfb] + vfmaddsub231ps zmm15, zmm21, zmm19, {rz-sae} + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x55,0x40,0xb6,0x39] + vfmaddsub231ps zmm15, zmm21, zmmword ptr [rcx] + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x55,0x40,0xb6,0xbc,0xf0,0x23,0x01,0x00,0x00] + vfmaddsub231ps zmm15, zmm21, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmaddsub231ps zmm15, zmm21, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x55,0x50,0xb6,0x39] + vfmaddsub231ps zmm15, zmm21, dword ptr [rcx]{1to16} + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x55,0x40,0xb6,0x7a,0x7f] + vfmaddsub231ps zmm15, zmm21, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x55,0x40,0xb6,0xba,0x00,0x20,0x00,0x00] + vfmaddsub231ps zmm15, zmm21, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x55,0x40,0xb6,0x7a,0x80] + vfmaddsub231ps zmm15, zmm21, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub231ps zmm15, zmm21, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x55,0x40,0xb6,0xba,0xc0,0xdf,0xff,0xff] + vfmaddsub231ps zmm15, zmm21, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub231ps zmm15, zmm21, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x55,0x50,0xb6,0x7a,0x7f] + vfmaddsub231ps zmm15, zmm21, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmaddsub231ps zmm15, zmm21, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x55,0x50,0xb6,0xba,0x00,0x02,0x00,0x00] + vfmaddsub231ps zmm15, zmm21, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmaddsub231ps zmm15, zmm21, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x55,0x50,0xb6,0x7a,0x80] + vfmaddsub231ps zmm15, zmm21, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmaddsub231ps zmm15, zmm21, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x55,0x50,0xb6,0xba,0xfc,0xfd,0xff,0xff] + vfmaddsub231ps zmm15, zmm21, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsub132pd zmm22, zmm12, zmm27 +// CHECK: encoding: [0x62,0x82,0x9d,0x48,0x9a,0xf3] + vfmsub132pd zmm22, zmm12, zmm27 + +// CHECK: vfmsub132pd zmm22 {k2}, zmm12, zmm27 +// CHECK: encoding: [0x62,0x82,0x9d,0x4a,0x9a,0xf3] + vfmsub132pd zmm22 {k2}, zmm12, zmm27 + +// CHECK: vfmsub132pd zmm22 {k2} {z}, zmm12, zmm27 +// CHECK: encoding: [0x62,0x82,0x9d,0xca,0x9a,0xf3] + vfmsub132pd zmm22 {k2} {z}, zmm12, zmm27 + +// CHECK: vfmsub132pd zmm22, zmm12, zmm27, {rn-sae} +// CHECK: encoding: [0x62,0x82,0x9d,0x18,0x9a,0xf3] + vfmsub132pd zmm22, zmm12, zmm27, {rn-sae} + +// CHECK: vfmsub132pd zmm22, zmm12, zmm27, {ru-sae} +// CHECK: encoding: [0x62,0x82,0x9d,0x58,0x9a,0xf3] + vfmsub132pd zmm22, zmm12, zmm27, {ru-sae} + +// CHECK: vfmsub132pd zmm22, zmm12, zmm27, {rd-sae} +// CHECK: encoding: [0x62,0x82,0x9d,0x38,0x9a,0xf3] + vfmsub132pd zmm22, zmm12, zmm27, {rd-sae} + +// CHECK: vfmsub132pd zmm22, zmm12, zmm27, {rz-sae} +// CHECK: encoding: [0x62,0x82,0x9d,0x78,0x9a,0xf3] + vfmsub132pd zmm22, zmm12, zmm27, {rz-sae} + +// CHECK: vfmsub132pd zmm22, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x9a,0x31] + vfmsub132pd zmm22, zmm12, zmmword ptr [rcx] + +// CHECK: vfmsub132pd zmm22, zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x9d,0x48,0x9a,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmsub132pd zmm22, zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub132pd zmm22, zmm12, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x9a,0x31] + vfmsub132pd zmm22, zmm12, qword ptr [rcx]{1to8} + +// CHECK: vfmsub132pd zmm22, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x9a,0x72,0x7f] + vfmsub132pd zmm22, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub132pd zmm22, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x9a,0xb2,0x00,0x20,0x00,0x00] + vfmsub132pd zmm22, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub132pd zmm22, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x9a,0x72,0x80] + vfmsub132pd zmm22, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub132pd zmm22, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x9a,0xb2,0xc0,0xdf,0xff,0xff] + vfmsub132pd zmm22, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub132pd zmm22, zmm12, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x9a,0x72,0x7f] + vfmsub132pd zmm22, zmm12, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsub132pd zmm22, zmm12, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x9a,0xb2,0x00,0x04,0x00,0x00] + vfmsub132pd zmm22, zmm12, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsub132pd zmm22, zmm12, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x9a,0x72,0x80] + vfmsub132pd zmm22, zmm12, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsub132pd zmm22, zmm12, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x9a,0xb2,0xf8,0xfb,0xff,0xff] + vfmsub132pd zmm22, zmm12, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsub132ps zmm1, zmm13, zmm16 +// CHECK: encoding: [0x62,0xb2,0x15,0x48,0x9a,0xc8] + vfmsub132ps zmm1, zmm13, zmm16 + +// CHECK: vfmsub132ps zmm1 {k4}, zmm13, zmm16 +// CHECK: encoding: [0x62,0xb2,0x15,0x4c,0x9a,0xc8] + vfmsub132ps zmm1 {k4}, zmm13, zmm16 + +// CHECK: vfmsub132ps zmm1 {k4} {z}, zmm13, zmm16 +// CHECK: encoding: [0x62,0xb2,0x15,0xcc,0x9a,0xc8] + vfmsub132ps zmm1 {k4} {z}, zmm13, zmm16 + +// CHECK: vfmsub132ps zmm1, zmm13, zmm16, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0x15,0x18,0x9a,0xc8] + vfmsub132ps zmm1, zmm13, zmm16, {rn-sae} + +// CHECK: vfmsub132ps zmm1, zmm13, zmm16, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0x15,0x58,0x9a,0xc8] + vfmsub132ps zmm1, zmm13, zmm16, {ru-sae} + +// CHECK: vfmsub132ps zmm1, zmm13, zmm16, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0x15,0x38,0x9a,0xc8] + vfmsub132ps zmm1, zmm13, zmm16, {rd-sae} + +// CHECK: vfmsub132ps zmm1, zmm13, zmm16, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0x15,0x78,0x9a,0xc8] + vfmsub132ps zmm1, zmm13, zmm16, {rz-sae} + +// CHECK: vfmsub132ps zmm1, zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x9a,0x09] + vfmsub132ps zmm1, zmm13, zmmword ptr [rcx] + +// CHECK: vfmsub132ps zmm1, zmm13, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x15,0x48,0x9a,0x8c,0xf0,0x23,0x01,0x00,0x00] + vfmsub132ps zmm1, zmm13, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub132ps zmm1, zmm13, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x9a,0x09] + vfmsub132ps zmm1, zmm13, dword ptr [rcx]{1to16} + +// CHECK: vfmsub132ps zmm1, zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x9a,0x4a,0x7f] + vfmsub132ps zmm1, zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub132ps zmm1, zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x9a,0x8a,0x00,0x20,0x00,0x00] + vfmsub132ps zmm1, zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub132ps zmm1, zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x9a,0x4a,0x80] + vfmsub132ps zmm1, zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub132ps zmm1, zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x9a,0x8a,0xc0,0xdf,0xff,0xff] + vfmsub132ps zmm1, zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub132ps zmm1, zmm13, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x9a,0x4a,0x7f] + vfmsub132ps zmm1, zmm13, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsub132ps zmm1, zmm13, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x9a,0x8a,0x00,0x02,0x00,0x00] + vfmsub132ps zmm1, zmm13, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsub132ps zmm1, zmm13, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x9a,0x4a,0x80] + vfmsub132ps zmm1, zmm13, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsub132ps zmm1, zmm13, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x9a,0x8a,0xfc,0xfd,0xff,0xff] + vfmsub132ps zmm1, zmm13, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsub132sd xmm12, xmm8, xmm27 +// CHECK: encoding: [0x62,0x12,0xbd,0x08,0x9b,0xe3] + vfmsub132sd xmm12, xmm8, xmm27 + +// CHECK: vfmsub132sd xmm12 {k3}, xmm8, xmm27 +// CHECK: encoding: [0x62,0x12,0xbd,0x0b,0x9b,0xe3] + vfmsub132sd xmm12 {k3}, xmm8, xmm27 + +// CHECK: vfmsub132sd xmm12 {k3} {z}, xmm8, xmm27 +// CHECK: encoding: [0x62,0x12,0xbd,0x8b,0x9b,0xe3] + vfmsub132sd xmm12 {k3} {z}, xmm8, xmm27 + +// CHECK: vfmsub132sd xmm12, xmm8, xmm27, {rn-sae} +// CHECK: encoding: [0x62,0x12,0xbd,0x18,0x9b,0xe3] + vfmsub132sd xmm12, xmm8, xmm27, {rn-sae} + +// CHECK: vfmsub132sd xmm12, xmm8, xmm27, {ru-sae} +// CHECK: encoding: [0x62,0x12,0xbd,0x58,0x9b,0xe3] + vfmsub132sd xmm12, xmm8, xmm27, {ru-sae} + +// CHECK: vfmsub132sd xmm12, xmm8, xmm27, {rd-sae} +// CHECK: encoding: [0x62,0x12,0xbd,0x38,0x9b,0xe3] + vfmsub132sd xmm12, xmm8, xmm27, {rd-sae} + +// CHECK: vfmsub132sd xmm12, xmm8, xmm27, {rz-sae} +// CHECK: encoding: [0x62,0x12,0xbd,0x78,0x9b,0xe3] + vfmsub132sd xmm12, xmm8, xmm27, {rz-sae} + +// CHECK: vfmsub132sd xmm12, xmm8, qword ptr [rcx] +// CHECK: encoding: [0xc4,0x62,0xb9,0x9b,0x21] + vfmsub132sd xmm12, xmm8, qword ptr [rcx] + +// CHECK: vfmsub132sd xmm12, xmm8, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0x22,0xb9,0x9b,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfmsub132sd xmm12, xmm8, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub132sd xmm12, xmm8, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0x62,0xb9,0x9b,0xa2,0xf8,0x03,0x00,0x00] + vfmsub132sd xmm12, xmm8, qword ptr [rdx + 1016] + +// CHECK: vfmsub132sd xmm12, xmm8, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0x62,0xb9,0x9b,0xa2,0x00,0x04,0x00,0x00] + vfmsub132sd xmm12, xmm8, qword ptr [rdx + 1024] + +// CHECK: vfmsub132sd xmm12, xmm8, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0x62,0xb9,0x9b,0xa2,0x00,0xfc,0xff,0xff] + vfmsub132sd xmm12, xmm8, qword ptr [rdx - 1024] + +// CHECK: vfmsub132sd xmm12, xmm8, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0x62,0xb9,0x9b,0xa2,0xf8,0xfb,0xff,0xff] + vfmsub132sd xmm12, xmm8, qword ptr [rdx - 1032] + +// CHECK: vfmsub132ss xmm30, xmm22, xmm27 +// CHECK: encoding: [0x62,0x02,0x4d,0x00,0x9b,0xf3] + vfmsub132ss xmm30, xmm22, xmm27 + +// CHECK: vfmsub132ss xmm30 {k3}, xmm22, xmm27 +// CHECK: encoding: [0x62,0x02,0x4d,0x03,0x9b,0xf3] + vfmsub132ss xmm30 {k3}, xmm22, xmm27 + +// CHECK: vfmsub132ss xmm30 {k3} {z}, xmm22, xmm27 +// CHECK: encoding: [0x62,0x02,0x4d,0x83,0x9b,0xf3] + vfmsub132ss xmm30 {k3} {z}, xmm22, xmm27 + +// CHECK: vfmsub132ss xmm30, xmm22, xmm27, {rn-sae} +// CHECK: encoding: [0x62,0x02,0x4d,0x10,0x9b,0xf3] + vfmsub132ss xmm30, xmm22, xmm27, {rn-sae} + +// CHECK: vfmsub132ss xmm30, xmm22, xmm27, {ru-sae} +// CHECK: encoding: [0x62,0x02,0x4d,0x50,0x9b,0xf3] + vfmsub132ss xmm30, xmm22, xmm27, {ru-sae} + +// CHECK: vfmsub132ss xmm30, xmm22, xmm27, {rd-sae} +// CHECK: encoding: [0x62,0x02,0x4d,0x30,0x9b,0xf3] + vfmsub132ss xmm30, xmm22, xmm27, {rd-sae} + +// CHECK: vfmsub132ss xmm30, xmm22, xmm27, {rz-sae} +// CHECK: encoding: [0x62,0x02,0x4d,0x70,0x9b,0xf3] + vfmsub132ss xmm30, xmm22, xmm27, {rz-sae} + +// CHECK: vfmsub132ss xmm30, xmm22, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0x9b,0x31] + vfmsub132ss xmm30, xmm22, dword ptr [rcx] + +// CHECK: vfmsub132ss xmm30, xmm22, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x4d,0x00,0x9b,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmsub132ss xmm30, xmm22, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub132ss xmm30, xmm22, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0x9b,0x72,0x7f] + vfmsub132ss xmm30, xmm22, dword ptr [rdx + 508] + +// CHECK: vfmsub132ss xmm30, xmm22, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0x9b,0xb2,0x00,0x02,0x00,0x00] + vfmsub132ss xmm30, xmm22, dword ptr [rdx + 512] + +// CHECK: vfmsub132ss xmm30, xmm22, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0x9b,0x72,0x80] + vfmsub132ss xmm30, xmm22, dword ptr [rdx - 512] + +// CHECK: vfmsub132ss xmm30, xmm22, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x4d,0x00,0x9b,0xb2,0xfc,0xfd,0xff,0xff] + vfmsub132ss xmm30, xmm22, dword ptr [rdx - 516] + +// CHECK: vfmsub213pd zmm5, zmm10, zmm4 +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xaa,0xec] + vfmsub213pd zmm5, zmm10, zmm4 + +// CHECK: vfmsub213pd zmm5 {k1}, zmm10, zmm4 +// CHECK: encoding: [0x62,0xf2,0xad,0x49,0xaa,0xec] + vfmsub213pd zmm5 {k1}, zmm10, zmm4 + +// CHECK: vfmsub213pd zmm5 {k1} {z}, zmm10, zmm4 +// CHECK: encoding: [0x62,0xf2,0xad,0xc9,0xaa,0xec] + vfmsub213pd zmm5 {k1} {z}, zmm10, zmm4 + +// CHECK: vfmsub213pd zmm5, zmm10, zmm4, {rn-sae} +// CHECK: encoding: [0x62,0xf2,0xad,0x18,0xaa,0xec] + vfmsub213pd zmm5, zmm10, zmm4, {rn-sae} + +// CHECK: vfmsub213pd zmm5, zmm10, zmm4, {ru-sae} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xaa,0xec] + vfmsub213pd zmm5, zmm10, zmm4, {ru-sae} + +// CHECK: vfmsub213pd zmm5, zmm10, zmm4, {rd-sae} +// CHECK: encoding: [0x62,0xf2,0xad,0x38,0xaa,0xec] + vfmsub213pd zmm5, zmm10, zmm4, {rd-sae} + +// CHECK: vfmsub213pd zmm5, zmm10, zmm4, {rz-sae} +// CHECK: encoding: [0x62,0xf2,0xad,0x78,0xaa,0xec] + vfmsub213pd zmm5, zmm10, zmm4, {rz-sae} + +// CHECK: vfmsub213pd zmm5, zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xaa,0x29] + vfmsub213pd zmm5, zmm10, zmmword ptr [rcx] + +// CHECK: vfmsub213pd zmm5, zmm10, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xad,0x48,0xaa,0xac,0xf0,0x23,0x01,0x00,0x00] + vfmsub213pd zmm5, zmm10, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub213pd zmm5, zmm10, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xaa,0x29] + vfmsub213pd zmm5, zmm10, qword ptr [rcx]{1to8} + +// CHECK: vfmsub213pd zmm5, zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xaa,0x6a,0x7f] + vfmsub213pd zmm5, zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub213pd zmm5, zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xaa,0xaa,0x00,0x20,0x00,0x00] + vfmsub213pd zmm5, zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub213pd zmm5, zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xaa,0x6a,0x80] + vfmsub213pd zmm5, zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub213pd zmm5, zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xaa,0xaa,0xc0,0xdf,0xff,0xff] + vfmsub213pd zmm5, zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub213pd zmm5, zmm10, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xaa,0x6a,0x7f] + vfmsub213pd zmm5, zmm10, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsub213pd zmm5, zmm10, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xaa,0xaa,0x00,0x04,0x00,0x00] + vfmsub213pd zmm5, zmm10, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsub213pd zmm5, zmm10, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xaa,0x6a,0x80] + vfmsub213pd zmm5, zmm10, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsub213pd zmm5, zmm10, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xaa,0xaa,0xf8,0xfb,0xff,0xff] + vfmsub213pd zmm5, zmm10, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsub213ps zmm22, zmm22, zmm10 +// CHECK: encoding: [0x62,0xc2,0x4d,0x40,0xaa,0xf2] + vfmsub213ps zmm22, zmm22, zmm10 + +// CHECK: vfmsub213ps zmm22 {k6}, zmm22, zmm10 +// CHECK: encoding: [0x62,0xc2,0x4d,0x46,0xaa,0xf2] + vfmsub213ps zmm22 {k6}, zmm22, zmm10 + +// CHECK: vfmsub213ps zmm22 {k6} {z}, zmm22, zmm10 +// CHECK: encoding: [0x62,0xc2,0x4d,0xc6,0xaa,0xf2] + vfmsub213ps zmm22 {k6} {z}, zmm22, zmm10 + +// CHECK: vfmsub213ps zmm22, zmm22, zmm10, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0x4d,0x10,0xaa,0xf2] + vfmsub213ps zmm22, zmm22, zmm10, {rn-sae} + +// CHECK: vfmsub213ps zmm22, zmm22, zmm10, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0x4d,0x50,0xaa,0xf2] + vfmsub213ps zmm22, zmm22, zmm10, {ru-sae} + +// CHECK: vfmsub213ps zmm22, zmm22, zmm10, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0x4d,0x30,0xaa,0xf2] + vfmsub213ps zmm22, zmm22, zmm10, {rd-sae} + +// CHECK: vfmsub213ps zmm22, zmm22, zmm10, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0x4d,0x70,0xaa,0xf2] + vfmsub213ps zmm22, zmm22, zmm10, {rz-sae} + +// CHECK: vfmsub213ps zmm22, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x4d,0x40,0xaa,0x31] + vfmsub213ps zmm22, zmm22, zmmword ptr [rcx] + +// CHECK: vfmsub213ps zmm22, zmm22, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x4d,0x40,0xaa,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmsub213ps zmm22, zmm22, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub213ps zmm22, zmm22, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x50,0xaa,0x31] + vfmsub213ps zmm22, zmm22, dword ptr [rcx]{1to16} + +// CHECK: vfmsub213ps zmm22, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x4d,0x40,0xaa,0x72,0x7f] + vfmsub213ps zmm22, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub213ps zmm22, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x4d,0x40,0xaa,0xb2,0x00,0x20,0x00,0x00] + vfmsub213ps zmm22, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub213ps zmm22, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x4d,0x40,0xaa,0x72,0x80] + vfmsub213ps zmm22, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub213ps zmm22, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x4d,0x40,0xaa,0xb2,0xc0,0xdf,0xff,0xff] + vfmsub213ps zmm22, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub213ps zmm22, zmm22, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x50,0xaa,0x72,0x7f] + vfmsub213ps zmm22, zmm22, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsub213ps zmm22, zmm22, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x50,0xaa,0xb2,0x00,0x02,0x00,0x00] + vfmsub213ps zmm22, zmm22, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsub213ps zmm22, zmm22, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x50,0xaa,0x72,0x80] + vfmsub213ps zmm22, zmm22, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsub213ps zmm22, zmm22, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x50,0xaa,0xb2,0xfc,0xfd,0xff,0xff] + vfmsub213ps zmm22, zmm22, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsub213sd xmm6, xmm8, xmm12 +// CHECK: encoding: [0xc4,0xc2,0xb9,0xab,0xf4] + vfmsub213sd xmm6, xmm8, xmm12 + +// CHECK: vfmsub213sd xmm6 {k1}, xmm8, xmm12 +// CHECK: encoding: [0x62,0xd2,0xbd,0x09,0xab,0xf4] + vfmsub213sd xmm6 {k1}, xmm8, xmm12 + +// CHECK: vfmsub213sd xmm6 {k1} {z}, xmm8, xmm12 +// CHECK: encoding: [0x62,0xd2,0xbd,0x89,0xab,0xf4] + vfmsub213sd xmm6 {k1} {z}, xmm8, xmm12 + +// CHECK: vfmsub213sd xmm6, xmm8, xmm12, {rn-sae} +// CHECK: encoding: [0x62,0xd2,0xbd,0x18,0xab,0xf4] + vfmsub213sd xmm6, xmm8, xmm12, {rn-sae} + +// CHECK: vfmsub213sd xmm6, xmm8, xmm12, {ru-sae} +// CHECK: encoding: [0x62,0xd2,0xbd,0x58,0xab,0xf4] + vfmsub213sd xmm6, xmm8, xmm12, {ru-sae} + +// CHECK: vfmsub213sd xmm6, xmm8, xmm12, {rd-sae} +// CHECK: encoding: [0x62,0xd2,0xbd,0x38,0xab,0xf4] + vfmsub213sd xmm6, xmm8, xmm12, {rd-sae} + +// CHECK: vfmsub213sd xmm6, xmm8, xmm12, {rz-sae} +// CHECK: encoding: [0x62,0xd2,0xbd,0x78,0xab,0xf4] + vfmsub213sd xmm6, xmm8, xmm12, {rz-sae} + +// CHECK: vfmsub213sd xmm6, xmm8, qword ptr [rcx] +// CHECK: encoding: [0xc4,0xe2,0xb9,0xab,0x31] + vfmsub213sd xmm6, xmm8, qword ptr [rcx] + +// CHECK: vfmsub213sd xmm6, xmm8, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa2,0xb9,0xab,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmsub213sd xmm6, xmm8, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub213sd xmm6, xmm8, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0xe2,0xb9,0xab,0xb2,0xf8,0x03,0x00,0x00] + vfmsub213sd xmm6, xmm8, qword ptr [rdx + 1016] + +// CHECK: vfmsub213sd xmm6, xmm8, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0xe2,0xb9,0xab,0xb2,0x00,0x04,0x00,0x00] + vfmsub213sd xmm6, xmm8, qword ptr [rdx + 1024] + +// CHECK: vfmsub213sd xmm6, xmm8, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0xe2,0xb9,0xab,0xb2,0x00,0xfc,0xff,0xff] + vfmsub213sd xmm6, xmm8, qword ptr [rdx - 1024] + +// CHECK: vfmsub213sd xmm6, xmm8, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0xe2,0xb9,0xab,0xb2,0xf8,0xfb,0xff,0xff] + vfmsub213sd xmm6, xmm8, qword ptr [rdx - 1032] + +// CHECK: vfmsub213ss xmm30, xmm13, xmm26 +// CHECK: encoding: [0x62,0x02,0x15,0x08,0xab,0xf2] + vfmsub213ss xmm30, xmm13, xmm26 + +// CHECK: vfmsub213ss xmm30 {k1}, xmm13, xmm26 +// CHECK: encoding: [0x62,0x02,0x15,0x09,0xab,0xf2] + vfmsub213ss xmm30 {k1}, xmm13, xmm26 + +// CHECK: vfmsub213ss xmm30 {k1} {z}, xmm13, xmm26 +// CHECK: encoding: [0x62,0x02,0x15,0x89,0xab,0xf2] + vfmsub213ss xmm30 {k1} {z}, xmm13, xmm26 + +// CHECK: vfmsub213ss xmm30, xmm13, xmm26, {rn-sae} +// CHECK: encoding: [0x62,0x02,0x15,0x18,0xab,0xf2] + vfmsub213ss xmm30, xmm13, xmm26, {rn-sae} + +// CHECK: vfmsub213ss xmm30, xmm13, xmm26, {ru-sae} +// CHECK: encoding: [0x62,0x02,0x15,0x58,0xab,0xf2] + vfmsub213ss xmm30, xmm13, xmm26, {ru-sae} + +// CHECK: vfmsub213ss xmm30, xmm13, xmm26, {rd-sae} +// CHECK: encoding: [0x62,0x02,0x15,0x38,0xab,0xf2] + vfmsub213ss xmm30, xmm13, xmm26, {rd-sae} + +// CHECK: vfmsub213ss xmm30, xmm13, xmm26, {rz-sae} +// CHECK: encoding: [0x62,0x02,0x15,0x78,0xab,0xf2] + vfmsub213ss xmm30, xmm13, xmm26, {rz-sae} + +// CHECK: vfmsub213ss xmm30, xmm13, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xab,0x31] + vfmsub213ss xmm30, xmm13, dword ptr [rcx] + +// CHECK: vfmsub213ss xmm30, xmm13, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x15,0x08,0xab,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmsub213ss xmm30, xmm13, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub213ss xmm30, xmm13, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xab,0x72,0x7f] + vfmsub213ss xmm30, xmm13, dword ptr [rdx + 508] + +// CHECK: vfmsub213ss xmm30, xmm13, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xab,0xb2,0x00,0x02,0x00,0x00] + vfmsub213ss xmm30, xmm13, dword ptr [rdx + 512] + +// CHECK: vfmsub213ss xmm30, xmm13, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xab,0x72,0x80] + vfmsub213ss xmm30, xmm13, dword ptr [rdx - 512] + +// CHECK: vfmsub213ss xmm30, xmm13, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xab,0xb2,0xfc,0xfd,0xff,0xff] + vfmsub213ss xmm30, xmm13, dword ptr [rdx - 516] + +// CHECK: vfmsub231pd zmm5, zmm12, zmm11 +// CHECK: encoding: [0x62,0xd2,0x9d,0x48,0xba,0xeb] + vfmsub231pd zmm5, zmm12, zmm11 + +// CHECK: vfmsub231pd zmm5 {k2}, zmm12, zmm11 +// CHECK: encoding: [0x62,0xd2,0x9d,0x4a,0xba,0xeb] + vfmsub231pd zmm5 {k2}, zmm12, zmm11 + +// CHECK: vfmsub231pd zmm5 {k2} {z}, zmm12, zmm11 +// CHECK: encoding: [0x62,0xd2,0x9d,0xca,0xba,0xeb] + vfmsub231pd zmm5 {k2} {z}, zmm12, zmm11 + +// CHECK: vfmsub231pd zmm5, zmm12, zmm11, {rn-sae} +// CHECK: encoding: [0x62,0xd2,0x9d,0x18,0xba,0xeb] + vfmsub231pd zmm5, zmm12, zmm11, {rn-sae} + +// CHECK: vfmsub231pd zmm5, zmm12, zmm11, {ru-sae} +// CHECK: encoding: [0x62,0xd2,0x9d,0x58,0xba,0xeb] + vfmsub231pd zmm5, zmm12, zmm11, {ru-sae} + +// CHECK: vfmsub231pd zmm5, zmm12, zmm11, {rd-sae} +// CHECK: encoding: [0x62,0xd2,0x9d,0x38,0xba,0xeb] + vfmsub231pd zmm5, zmm12, zmm11, {rd-sae} + +// CHECK: vfmsub231pd zmm5, zmm12, zmm11, {rz-sae} +// CHECK: encoding: [0x62,0xd2,0x9d,0x78,0xba,0xeb] + vfmsub231pd zmm5, zmm12, zmm11, {rz-sae} + +// CHECK: vfmsub231pd zmm5, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0xba,0x29] + vfmsub231pd zmm5, zmm12, zmmword ptr [rcx] + +// CHECK: vfmsub231pd zmm5, zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x9d,0x48,0xba,0xac,0xf0,0x23,0x01,0x00,0x00] + vfmsub231pd zmm5, zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub231pd zmm5, zmm12, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0xba,0x29] + vfmsub231pd zmm5, zmm12, qword ptr [rcx]{1to8} + +// CHECK: vfmsub231pd zmm5, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0xba,0x6a,0x7f] + vfmsub231pd zmm5, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub231pd zmm5, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0xba,0xaa,0x00,0x20,0x00,0x00] + vfmsub231pd zmm5, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub231pd zmm5, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0xba,0x6a,0x80] + vfmsub231pd zmm5, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub231pd zmm5, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0xba,0xaa,0xc0,0xdf,0xff,0xff] + vfmsub231pd zmm5, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub231pd zmm5, zmm12, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0xba,0x6a,0x7f] + vfmsub231pd zmm5, zmm12, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsub231pd zmm5, zmm12, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0xba,0xaa,0x00,0x04,0x00,0x00] + vfmsub231pd zmm5, zmm12, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsub231pd zmm5, zmm12, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0xba,0x6a,0x80] + vfmsub231pd zmm5, zmm12, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsub231pd zmm5, zmm12, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0xba,0xaa,0xf8,0xfb,0xff,0xff] + vfmsub231pd zmm5, zmm12, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsub231ps zmm6, zmm21, zmm27 +// CHECK: encoding: [0x62,0x92,0x55,0x40,0xba,0xf3] + vfmsub231ps zmm6, zmm21, zmm27 + +// CHECK: vfmsub231ps zmm6 {k3}, zmm21, zmm27 +// CHECK: encoding: [0x62,0x92,0x55,0x43,0xba,0xf3] + vfmsub231ps zmm6 {k3}, zmm21, zmm27 + +// CHECK: vfmsub231ps zmm6 {k3} {z}, zmm21, zmm27 +// CHECK: encoding: [0x62,0x92,0x55,0xc3,0xba,0xf3] + vfmsub231ps zmm6 {k3} {z}, zmm21, zmm27 + +// CHECK: vfmsub231ps zmm6, zmm21, zmm27, {rn-sae} +// CHECK: encoding: [0x62,0x92,0x55,0x10,0xba,0xf3] + vfmsub231ps zmm6, zmm21, zmm27, {rn-sae} + +// CHECK: vfmsub231ps zmm6, zmm21, zmm27, {ru-sae} +// CHECK: encoding: [0x62,0x92,0x55,0x50,0xba,0xf3] + vfmsub231ps zmm6, zmm21, zmm27, {ru-sae} + +// CHECK: vfmsub231ps zmm6, zmm21, zmm27, {rd-sae} +// CHECK: encoding: [0x62,0x92,0x55,0x30,0xba,0xf3] + vfmsub231ps zmm6, zmm21, zmm27, {rd-sae} + +// CHECK: vfmsub231ps zmm6, zmm21, zmm27, {rz-sae} +// CHECK: encoding: [0x62,0x92,0x55,0x70,0xba,0xf3] + vfmsub231ps zmm6, zmm21, zmm27, {rz-sae} + +// CHECK: vfmsub231ps zmm6, zmm21, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x55,0x40,0xba,0x31] + vfmsub231ps zmm6, zmm21, zmmword ptr [rcx] + +// CHECK: vfmsub231ps zmm6, zmm21, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x55,0x40,0xba,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmsub231ps zmm6, zmm21, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub231ps zmm6, zmm21, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x55,0x50,0xba,0x31] + vfmsub231ps zmm6, zmm21, dword ptr [rcx]{1to16} + +// CHECK: vfmsub231ps zmm6, zmm21, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x55,0x40,0xba,0x72,0x7f] + vfmsub231ps zmm6, zmm21, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub231ps zmm6, zmm21, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x55,0x40,0xba,0xb2,0x00,0x20,0x00,0x00] + vfmsub231ps zmm6, zmm21, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub231ps zmm6, zmm21, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x55,0x40,0xba,0x72,0x80] + vfmsub231ps zmm6, zmm21, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub231ps zmm6, zmm21, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x55,0x40,0xba,0xb2,0xc0,0xdf,0xff,0xff] + vfmsub231ps zmm6, zmm21, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub231ps zmm6, zmm21, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x55,0x50,0xba,0x72,0x7f] + vfmsub231ps zmm6, zmm21, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsub231ps zmm6, zmm21, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x55,0x50,0xba,0xb2,0x00,0x02,0x00,0x00] + vfmsub231ps zmm6, zmm21, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsub231ps zmm6, zmm21, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x55,0x50,0xba,0x72,0x80] + vfmsub231ps zmm6, zmm21, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsub231ps zmm6, zmm21, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x55,0x50,0xba,0xb2,0xfc,0xfd,0xff,0xff] + vfmsub231ps zmm6, zmm21, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsub231sd xmm3, xmm11, xmm6 +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbb,0xde] + vfmsub231sd xmm3, xmm11, xmm6 + +// CHECK: vfmsub231sd xmm3 {k7}, xmm11, xmm6 +// CHECK: encoding: [0x62,0xf2,0xa5,0x0f,0xbb,0xde] + vfmsub231sd xmm3 {k7}, xmm11, xmm6 + +// CHECK: vfmsub231sd xmm3 {k7} {z}, xmm11, xmm6 +// CHECK: encoding: [0x62,0xf2,0xa5,0x8f,0xbb,0xde] + vfmsub231sd xmm3 {k7} {z}, xmm11, xmm6 + +// CHECK: vfmsub231sd xmm3, xmm11, xmm6, {rn-sae} +// CHECK: encoding: [0x62,0xf2,0xa5,0x18,0xbb,0xde] + vfmsub231sd xmm3, xmm11, xmm6, {rn-sae} + +// CHECK: vfmsub231sd xmm3, xmm11, xmm6, {ru-sae} +// CHECK: encoding: [0x62,0xf2,0xa5,0x58,0xbb,0xde] + vfmsub231sd xmm3, xmm11, xmm6, {ru-sae} + +// CHECK: vfmsub231sd xmm3, xmm11, xmm6, {rd-sae} +// CHECK: encoding: [0x62,0xf2,0xa5,0x38,0xbb,0xde] + vfmsub231sd xmm3, xmm11, xmm6, {rd-sae} + +// CHECK: vfmsub231sd xmm3, xmm11, xmm6, {rz-sae} +// CHECK: encoding: [0x62,0xf2,0xa5,0x78,0xbb,0xde] + vfmsub231sd xmm3, xmm11, xmm6, {rz-sae} + +// CHECK: vfmsub231sd xmm3, xmm11, qword ptr [rcx] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbb,0x19] + vfmsub231sd xmm3, xmm11, qword ptr [rcx] + +// CHECK: vfmsub231sd xmm3, xmm11, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa2,0xa1,0xbb,0x9c,0xf0,0x23,0x01,0x00,0x00] + vfmsub231sd xmm3, xmm11, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub231sd xmm3, xmm11, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbb,0x9a,0xf8,0x03,0x00,0x00] + vfmsub231sd xmm3, xmm11, qword ptr [rdx + 1016] + +// CHECK: vfmsub231sd xmm3, xmm11, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbb,0x9a,0x00,0x04,0x00,0x00] + vfmsub231sd xmm3, xmm11, qword ptr [rdx + 1024] + +// CHECK: vfmsub231sd xmm3, xmm11, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbb,0x9a,0x00,0xfc,0xff,0xff] + vfmsub231sd xmm3, xmm11, qword ptr [rdx - 1024] + +// CHECK: vfmsub231sd xmm3, xmm11, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbb,0x9a,0xf8,0xfb,0xff,0xff] + vfmsub231sd xmm3, xmm11, qword ptr [rdx - 1032] + +// CHECK: vfmsub231ss xmm29, xmm3, xmm5 +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xbb,0xed] + vfmsub231ss xmm29, xmm3, xmm5 + +// CHECK: vfmsub231ss xmm29 {k6}, xmm3, xmm5 +// CHECK: encoding: [0x62,0x62,0x65,0x0e,0xbb,0xed] + vfmsub231ss xmm29 {k6}, xmm3, xmm5 + +// CHECK: vfmsub231ss xmm29 {k6} {z}, xmm3, xmm5 +// CHECK: encoding: [0x62,0x62,0x65,0x8e,0xbb,0xed] + vfmsub231ss xmm29 {k6} {z}, xmm3, xmm5 + +// CHECK: vfmsub231ss xmm29, xmm3, xmm5, {rn-sae} +// CHECK: encoding: [0x62,0x62,0x65,0x18,0xbb,0xed] + vfmsub231ss xmm29, xmm3, xmm5, {rn-sae} + +// CHECK: vfmsub231ss xmm29, xmm3, xmm5, {ru-sae} +// CHECK: encoding: [0x62,0x62,0x65,0x58,0xbb,0xed] + vfmsub231ss xmm29, xmm3, xmm5, {ru-sae} + +// CHECK: vfmsub231ss xmm29, xmm3, xmm5, {rd-sae} +// CHECK: encoding: [0x62,0x62,0x65,0x38,0xbb,0xed] + vfmsub231ss xmm29, xmm3, xmm5, {rd-sae} + +// CHECK: vfmsub231ss xmm29, xmm3, xmm5, {rz-sae} +// CHECK: encoding: [0x62,0x62,0x65,0x78,0xbb,0xed] + vfmsub231ss xmm29, xmm3, xmm5, {rz-sae} + +// CHECK: vfmsub231ss xmm29, xmm3, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xbb,0x29] + vfmsub231ss xmm29, xmm3, dword ptr [rcx] + +// CHECK: vfmsub231ss xmm29, xmm3, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x65,0x08,0xbb,0xac,0xf0,0x23,0x01,0x00,0x00] + vfmsub231ss xmm29, xmm3, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsub231ss xmm29, xmm3, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xbb,0x6a,0x7f] + vfmsub231ss xmm29, xmm3, dword ptr [rdx + 508] + +// CHECK: vfmsub231ss xmm29, xmm3, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xbb,0xaa,0x00,0x02,0x00,0x00] + vfmsub231ss xmm29, xmm3, dword ptr [rdx + 512] + +// CHECK: vfmsub231ss xmm29, xmm3, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xbb,0x6a,0x80] + vfmsub231ss xmm29, xmm3, dword ptr [rdx - 512] + +// CHECK: vfmsub231ss xmm29, xmm3, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xbb,0xaa,0xfc,0xfd,0xff,0xff] + vfmsub231ss xmm29, xmm3, dword ptr [rdx - 516] + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmm18 +// CHECK: encoding: [0x62,0xa2,0x9d,0x40,0x97,0xea] + vfmsubadd132pd zmm21, zmm28, zmm18 + +// CHECK: vfmsubadd132pd zmm21 {k7}, zmm28, zmm18 +// CHECK: encoding: [0x62,0xa2,0x9d,0x47,0x97,0xea] + vfmsubadd132pd zmm21 {k7}, zmm28, zmm18 + +// CHECK: vfmsubadd132pd zmm21 {k7} {z}, zmm28, zmm18 +// CHECK: encoding: [0x62,0xa2,0x9d,0xc7,0x97,0xea] + vfmsubadd132pd zmm21 {k7} {z}, zmm28, zmm18 + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmm18, {rn-sae} +// CHECK: encoding: [0x62,0xa2,0x9d,0x10,0x97,0xea] + vfmsubadd132pd zmm21, zmm28, zmm18, {rn-sae} + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmm18, {ru-sae} +// CHECK: encoding: [0x62,0xa2,0x9d,0x50,0x97,0xea] + vfmsubadd132pd zmm21, zmm28, zmm18, {ru-sae} + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmm18, {rd-sae} +// CHECK: encoding: [0x62,0xa2,0x9d,0x30,0x97,0xea] + vfmsubadd132pd zmm21, zmm28, zmm18, {rd-sae} + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmm18, {rz-sae} +// CHECK: encoding: [0x62,0xa2,0x9d,0x70,0x97,0xea] + vfmsubadd132pd zmm21, zmm28, zmm18, {rz-sae} + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x97,0x29] + vfmsubadd132pd zmm21, zmm28, zmmword ptr [rcx] + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x9d,0x40,0x97,0xac,0xf0,0x23,0x01,0x00,0x00] + vfmsubadd132pd zmm21, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsubadd132pd zmm21, zmm28, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x97,0x29] + vfmsubadd132pd zmm21, zmm28, qword ptr [rcx]{1to8} + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x97,0x6a,0x7f] + vfmsubadd132pd zmm21, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x97,0xaa,0x00,0x20,0x00,0x00] + vfmsubadd132pd zmm21, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x97,0x6a,0x80] + vfmsubadd132pd zmm21, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd132pd zmm21, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x97,0xaa,0xc0,0xdf,0xff,0xff] + vfmsubadd132pd zmm21, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd132pd zmm21, zmm28, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x97,0x6a,0x7f] + vfmsubadd132pd zmm21, zmm28, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsubadd132pd zmm21, zmm28, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x97,0xaa,0x00,0x04,0x00,0x00] + vfmsubadd132pd zmm21, zmm28, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsubadd132pd zmm21, zmm28, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x97,0x6a,0x80] + vfmsubadd132pd zmm21, zmm28, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsubadd132pd zmm21, zmm28, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x97,0xaa,0xf8,0xfb,0xff,0xff] + vfmsubadd132pd zmm21, zmm28, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmm21 +// CHECK: encoding: [0x62,0xb2,0x15,0x48,0x97,0xd5] + vfmsubadd132ps zmm2, zmm13, zmm21 + +// CHECK: vfmsubadd132ps zmm2 {k7}, zmm13, zmm21 +// CHECK: encoding: [0x62,0xb2,0x15,0x4f,0x97,0xd5] + vfmsubadd132ps zmm2 {k7}, zmm13, zmm21 + +// CHECK: vfmsubadd132ps zmm2 {k7} {z}, zmm13, zmm21 +// CHECK: encoding: [0x62,0xb2,0x15,0xcf,0x97,0xd5] + vfmsubadd132ps zmm2 {k7} {z}, zmm13, zmm21 + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmm21, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0x15,0x18,0x97,0xd5] + vfmsubadd132ps zmm2, zmm13, zmm21, {rn-sae} + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmm21, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0x15,0x58,0x97,0xd5] + vfmsubadd132ps zmm2, zmm13, zmm21, {ru-sae} + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmm21, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0x15,0x38,0x97,0xd5] + vfmsubadd132ps zmm2, zmm13, zmm21, {rd-sae} + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmm21, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0x15,0x78,0x97,0xd5] + vfmsubadd132ps zmm2, zmm13, zmm21, {rz-sae} + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x97,0x11] + vfmsubadd132ps zmm2, zmm13, zmmword ptr [rcx] + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x15,0x48,0x97,0x94,0xf0,0x23,0x01,0x00,0x00] + vfmsubadd132ps zmm2, zmm13, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsubadd132ps zmm2, zmm13, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x97,0x11] + vfmsubadd132ps zmm2, zmm13, dword ptr [rcx]{1to16} + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x97,0x52,0x7f] + vfmsubadd132ps zmm2, zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x97,0x92,0x00,0x20,0x00,0x00] + vfmsubadd132ps zmm2, zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x97,0x52,0x80] + vfmsubadd132ps zmm2, zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd132ps zmm2, zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x15,0x48,0x97,0x92,0xc0,0xdf,0xff,0xff] + vfmsubadd132ps zmm2, zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd132ps zmm2, zmm13, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x97,0x52,0x7f] + vfmsubadd132ps zmm2, zmm13, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsubadd132ps zmm2, zmm13, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x97,0x92,0x00,0x02,0x00,0x00] + vfmsubadd132ps zmm2, zmm13, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsubadd132ps zmm2, zmm13, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x97,0x52,0x80] + vfmsubadd132ps zmm2, zmm13, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsubadd132ps zmm2, zmm13, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x58,0x97,0x92,0xfc,0xfd,0xff,0xff] + vfmsubadd132ps zmm2, zmm13, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmm2 +// CHECK: encoding: [0x62,0xf2,0xc5,0x40,0xa7,0xd2] + vfmsubadd213pd zmm2, zmm23, zmm2 + +// CHECK: vfmsubadd213pd zmm2 {k6}, zmm23, zmm2 +// CHECK: encoding: [0x62,0xf2,0xc5,0x46,0xa7,0xd2] + vfmsubadd213pd zmm2 {k6}, zmm23, zmm2 + +// CHECK: vfmsubadd213pd zmm2 {k6} {z}, zmm23, zmm2 +// CHECK: encoding: [0x62,0xf2,0xc5,0xc6,0xa7,0xd2] + vfmsubadd213pd zmm2 {k6} {z}, zmm23, zmm2 + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmm2, {rn-sae} +// CHECK: encoding: [0x62,0xf2,0xc5,0x10,0xa7,0xd2] + vfmsubadd213pd zmm2, zmm23, zmm2, {rn-sae} + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmm2, {ru-sae} +// CHECK: encoding: [0x62,0xf2,0xc5,0x50,0xa7,0xd2] + vfmsubadd213pd zmm2, zmm23, zmm2, {ru-sae} + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmm2, {rd-sae} +// CHECK: encoding: [0x62,0xf2,0xc5,0x30,0xa7,0xd2] + vfmsubadd213pd zmm2, zmm23, zmm2, {rd-sae} + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmm2, {rz-sae} +// CHECK: encoding: [0x62,0xf2,0xc5,0x70,0xa7,0xd2] + vfmsubadd213pd zmm2, zmm23, zmm2, {rz-sae} + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xc5,0x40,0xa7,0x11] + vfmsubadd213pd zmm2, zmm23, zmmword ptr [rcx] + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xc5,0x40,0xa7,0x94,0xf0,0x23,0x01,0x00,0x00] + vfmsubadd213pd zmm2, zmm23, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsubadd213pd zmm2, zmm23, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x50,0xa7,0x11] + vfmsubadd213pd zmm2, zmm23, qword ptr [rcx]{1to8} + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xc5,0x40,0xa7,0x52,0x7f] + vfmsubadd213pd zmm2, zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xc5,0x40,0xa7,0x92,0x00,0x20,0x00,0x00] + vfmsubadd213pd zmm2, zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xc5,0x40,0xa7,0x52,0x80] + vfmsubadd213pd zmm2, zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd213pd zmm2, zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xc5,0x40,0xa7,0x92,0xc0,0xdf,0xff,0xff] + vfmsubadd213pd zmm2, zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd213pd zmm2, zmm23, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x50,0xa7,0x52,0x7f] + vfmsubadd213pd zmm2, zmm23, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsubadd213pd zmm2, zmm23, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x50,0xa7,0x92,0x00,0x04,0x00,0x00] + vfmsubadd213pd zmm2, zmm23, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsubadd213pd zmm2, zmm23, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x50,0xa7,0x52,0x80] + vfmsubadd213pd zmm2, zmm23, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsubadd213pd zmm2, zmm23, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x50,0xa7,0x92,0xf8,0xfb,0xff,0xff] + vfmsubadd213pd zmm2, zmm23, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmm14 +// CHECK: encoding: [0x62,0xc2,0x1d,0x48,0xa7,0xf6] + vfmsubadd213ps zmm22, zmm12, zmm14 + +// CHECK: vfmsubadd213ps zmm22 {k6}, zmm12, zmm14 +// CHECK: encoding: [0x62,0xc2,0x1d,0x4e,0xa7,0xf6] + vfmsubadd213ps zmm22 {k6}, zmm12, zmm14 + +// CHECK: vfmsubadd213ps zmm22 {k6} {z}, zmm12, zmm14 +// CHECK: encoding: [0x62,0xc2,0x1d,0xce,0xa7,0xf6] + vfmsubadd213ps zmm22 {k6} {z}, zmm12, zmm14 + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmm14, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0x1d,0x18,0xa7,0xf6] + vfmsubadd213ps zmm22, zmm12, zmm14, {rn-sae} + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmm14, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0x1d,0x58,0xa7,0xf6] + vfmsubadd213ps zmm22, zmm12, zmm14, {ru-sae} + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmm14, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0x1d,0x38,0xa7,0xf6] + vfmsubadd213ps zmm22, zmm12, zmm14, {rd-sae} + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmm14, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0x1d,0x78,0xa7,0xf6] + vfmsubadd213ps zmm22, zmm12, zmm14, {rz-sae} + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x1d,0x48,0xa7,0x31] + vfmsubadd213ps zmm22, zmm12, zmmword ptr [rcx] + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x1d,0x48,0xa7,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfmsubadd213ps zmm22, zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsubadd213ps zmm22, zmm12, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x58,0xa7,0x31] + vfmsubadd213ps zmm22, zmm12, dword ptr [rcx]{1to16} + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x1d,0x48,0xa7,0x72,0x7f] + vfmsubadd213ps zmm22, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x1d,0x48,0xa7,0xb2,0x00,0x20,0x00,0x00] + vfmsubadd213ps zmm22, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x1d,0x48,0xa7,0x72,0x80] + vfmsubadd213ps zmm22, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd213ps zmm22, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x1d,0x48,0xa7,0xb2,0xc0,0xdf,0xff,0xff] + vfmsubadd213ps zmm22, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd213ps zmm22, zmm12, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x58,0xa7,0x72,0x7f] + vfmsubadd213ps zmm22, zmm12, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsubadd213ps zmm22, zmm12, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x58,0xa7,0xb2,0x00,0x02,0x00,0x00] + vfmsubadd213ps zmm22, zmm12, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsubadd213ps zmm22, zmm12, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x58,0xa7,0x72,0x80] + vfmsubadd213ps zmm22, zmm12, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsubadd213ps zmm22, zmm12, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x58,0xa7,0xb2,0xfc,0xfd,0xff,0xff] + vfmsubadd213ps zmm22, zmm12, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmm21 +// CHECK: encoding: [0x62,0xa2,0xa5,0x40,0xb7,0xc5] + vfmsubadd231pd zmm16, zmm27, zmm21 + +// CHECK: vfmsubadd231pd zmm16 {k2}, zmm27, zmm21 +// CHECK: encoding: [0x62,0xa2,0xa5,0x42,0xb7,0xc5] + vfmsubadd231pd zmm16 {k2}, zmm27, zmm21 + +// CHECK: vfmsubadd231pd zmm16 {k2} {z}, zmm27, zmm21 +// CHECK: encoding: [0x62,0xa2,0xa5,0xc2,0xb7,0xc5] + vfmsubadd231pd zmm16 {k2} {z}, zmm27, zmm21 + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmm21, {rn-sae} +// CHECK: encoding: [0x62,0xa2,0xa5,0x10,0xb7,0xc5] + vfmsubadd231pd zmm16, zmm27, zmm21, {rn-sae} + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmm21, {ru-sae} +// CHECK: encoding: [0x62,0xa2,0xa5,0x50,0xb7,0xc5] + vfmsubadd231pd zmm16, zmm27, zmm21, {ru-sae} + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmm21, {rd-sae} +// CHECK: encoding: [0x62,0xa2,0xa5,0x30,0xb7,0xc5] + vfmsubadd231pd zmm16, zmm27, zmm21, {rd-sae} + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmm21, {rz-sae} +// CHECK: encoding: [0x62,0xa2,0xa5,0x70,0xb7,0xc5] + vfmsubadd231pd zmm16, zmm27, zmm21, {rz-sae} + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0xb7,0x01] + vfmsubadd231pd zmm16, zmm27, zmmword ptr [rcx] + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xa5,0x40,0xb7,0x84,0xf0,0x23,0x01,0x00,0x00] + vfmsubadd231pd zmm16, zmm27, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsubadd231pd zmm16, zmm27, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0xb7,0x01] + vfmsubadd231pd zmm16, zmm27, qword ptr [rcx]{1to8} + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0xb7,0x42,0x7f] + vfmsubadd231pd zmm16, zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0xb7,0x82,0x00,0x20,0x00,0x00] + vfmsubadd231pd zmm16, zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0xb7,0x42,0x80] + vfmsubadd231pd zmm16, zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd231pd zmm16, zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0xb7,0x82,0xc0,0xdf,0xff,0xff] + vfmsubadd231pd zmm16, zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd231pd zmm16, zmm27, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0xb7,0x42,0x7f] + vfmsubadd231pd zmm16, zmm27, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsubadd231pd zmm16, zmm27, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0xb7,0x82,0x00,0x04,0x00,0x00] + vfmsubadd231pd zmm16, zmm27, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsubadd231pd zmm16, zmm27, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0xb7,0x42,0x80] + vfmsubadd231pd zmm16, zmm27, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsubadd231pd zmm16, zmm27, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0xb7,0x82,0xf8,0xfb,0xff,0xff] + vfmsubadd231pd zmm16, zmm27, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmm1 +// CHECK: encoding: [0x62,0x72,0x65,0x40,0xb7,0xc1] + vfmsubadd231ps zmm8, zmm19, zmm1 + +// CHECK: vfmsubadd231ps zmm8 {k2}, zmm19, zmm1 +// CHECK: encoding: [0x62,0x72,0x65,0x42,0xb7,0xc1] + vfmsubadd231ps zmm8 {k2}, zmm19, zmm1 + +// CHECK: vfmsubadd231ps zmm8 {k2} {z}, zmm19, zmm1 +// CHECK: encoding: [0x62,0x72,0x65,0xc2,0xb7,0xc1] + vfmsubadd231ps zmm8 {k2} {z}, zmm19, zmm1 + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmm1, {rn-sae} +// CHECK: encoding: [0x62,0x72,0x65,0x10,0xb7,0xc1] + vfmsubadd231ps zmm8, zmm19, zmm1, {rn-sae} + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmm1, {ru-sae} +// CHECK: encoding: [0x62,0x72,0x65,0x50,0xb7,0xc1] + vfmsubadd231ps zmm8, zmm19, zmm1, {ru-sae} + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmm1, {rd-sae} +// CHECK: encoding: [0x62,0x72,0x65,0x30,0xb7,0xc1] + vfmsubadd231ps zmm8, zmm19, zmm1, {rd-sae} + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmm1, {rz-sae} +// CHECK: encoding: [0x62,0x72,0x65,0x70,0xb7,0xc1] + vfmsubadd231ps zmm8, zmm19, zmm1, {rz-sae} + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x65,0x40,0xb7,0x01] + vfmsubadd231ps zmm8, zmm19, zmmword ptr [rcx] + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x65,0x40,0xb7,0x84,0xf0,0x23,0x01,0x00,0x00] + vfmsubadd231ps zmm8, zmm19, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfmsubadd231ps zmm8, zmm19, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x50,0xb7,0x01] + vfmsubadd231ps zmm8, zmm19, dword ptr [rcx]{1to16} + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x65,0x40,0xb7,0x42,0x7f] + vfmsubadd231ps zmm8, zmm19, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x65,0x40,0xb7,0x82,0x00,0x20,0x00,0x00] + vfmsubadd231ps zmm8, zmm19, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x65,0x40,0xb7,0x42,0x80] + vfmsubadd231ps zmm8, zmm19, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd231ps zmm8, zmm19, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x65,0x40,0xb7,0x82,0xc0,0xdf,0xff,0xff] + vfmsubadd231ps zmm8, zmm19, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd231ps zmm8, zmm19, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x50,0xb7,0x42,0x7f] + vfmsubadd231ps zmm8, zmm19, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsubadd231ps zmm8, zmm19, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x50,0xb7,0x82,0x00,0x02,0x00,0x00] + vfmsubadd231ps zmm8, zmm19, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsubadd231ps zmm8, zmm19, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x50,0xb7,0x42,0x80] + vfmsubadd231ps zmm8, zmm19, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsubadd231ps zmm8, zmm19, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x50,0xb7,0x82,0xfc,0xfd,0xff,0xff] + vfmsubadd231ps zmm8, zmm19, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmadd132pd zmm12, zmm14, zmm1 +// CHECK: encoding: [0x62,0x72,0x8d,0x48,0x9c,0xe1] + vfnmadd132pd zmm12, zmm14, zmm1 + +// CHECK: vfnmadd132pd zmm12 {k7}, zmm14, zmm1 +// CHECK: encoding: [0x62,0x72,0x8d,0x4f,0x9c,0xe1] + vfnmadd132pd zmm12 {k7}, zmm14, zmm1 + +// CHECK: vfnmadd132pd zmm12 {k7} {z}, zmm14, zmm1 +// CHECK: encoding: [0x62,0x72,0x8d,0xcf,0x9c,0xe1] + vfnmadd132pd zmm12 {k7} {z}, zmm14, zmm1 + +// CHECK: vfnmadd132pd zmm12, zmm14, zmm1, {rn-sae} +// CHECK: encoding: [0x62,0x72,0x8d,0x18,0x9c,0xe1] + vfnmadd132pd zmm12, zmm14, zmm1, {rn-sae} + +// CHECK: vfnmadd132pd zmm12, zmm14, zmm1, {ru-sae} +// CHECK: encoding: [0x62,0x72,0x8d,0x58,0x9c,0xe1] + vfnmadd132pd zmm12, zmm14, zmm1, {ru-sae} + +// CHECK: vfnmadd132pd zmm12, zmm14, zmm1, {rd-sae} +// CHECK: encoding: [0x62,0x72,0x8d,0x38,0x9c,0xe1] + vfnmadd132pd zmm12, zmm14, zmm1, {rd-sae} + +// CHECK: vfnmadd132pd zmm12, zmm14, zmm1, {rz-sae} +// CHECK: encoding: [0x62,0x72,0x8d,0x78,0x9c,0xe1] + vfnmadd132pd zmm12, zmm14, zmm1, {rz-sae} + +// CHECK: vfnmadd132pd zmm12, zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x8d,0x48,0x9c,0x21] + vfnmadd132pd zmm12, zmm14, zmmword ptr [rcx] + +// CHECK: vfnmadd132pd zmm12, zmm14, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x8d,0x48,0x9c,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfnmadd132pd zmm12, zmm14, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd132pd zmm12, zmm14, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0x8d,0x58,0x9c,0x21] + vfnmadd132pd zmm12, zmm14, qword ptr [rcx]{1to8} + +// CHECK: vfnmadd132pd zmm12, zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x8d,0x48,0x9c,0x62,0x7f] + vfnmadd132pd zmm12, zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd132pd zmm12, zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x8d,0x48,0x9c,0xa2,0x00,0x20,0x00,0x00] + vfnmadd132pd zmm12, zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd132pd zmm12, zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x8d,0x48,0x9c,0x62,0x80] + vfnmadd132pd zmm12, zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd132pd zmm12, zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x8d,0x48,0x9c,0xa2,0xc0,0xdf,0xff,0xff] + vfnmadd132pd zmm12, zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd132pd zmm12, zmm14, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0x8d,0x58,0x9c,0x62,0x7f] + vfnmadd132pd zmm12, zmm14, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmadd132pd zmm12, zmm14, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0x8d,0x58,0x9c,0xa2,0x00,0x04,0x00,0x00] + vfnmadd132pd zmm12, zmm14, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmadd132pd zmm12, zmm14, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0x8d,0x58,0x9c,0x62,0x80] + vfnmadd132pd zmm12, zmm14, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmadd132pd zmm12, zmm14, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0x8d,0x58,0x9c,0xa2,0xf8,0xfb,0xff,0xff] + vfnmadd132pd zmm12, zmm14, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmadd132ps zmm21, zmm16, zmm10 +// CHECK: encoding: [0x62,0xc2,0x7d,0x40,0x9c,0xea] + vfnmadd132ps zmm21, zmm16, zmm10 + +// CHECK: vfnmadd132ps zmm21 {k5}, zmm16, zmm10 +// CHECK: encoding: [0x62,0xc2,0x7d,0x45,0x9c,0xea] + vfnmadd132ps zmm21 {k5}, zmm16, zmm10 + +// CHECK: vfnmadd132ps zmm21 {k5} {z}, zmm16, zmm10 +// CHECK: encoding: [0x62,0xc2,0x7d,0xc5,0x9c,0xea] + vfnmadd132ps zmm21 {k5} {z}, zmm16, zmm10 + +// CHECK: vfnmadd132ps zmm21, zmm16, zmm10, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0x7d,0x10,0x9c,0xea] + vfnmadd132ps zmm21, zmm16, zmm10, {rn-sae} + +// CHECK: vfnmadd132ps zmm21, zmm16, zmm10, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0x7d,0x50,0x9c,0xea] + vfnmadd132ps zmm21, zmm16, zmm10, {ru-sae} + +// CHECK: vfnmadd132ps zmm21, zmm16, zmm10, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0x7d,0x30,0x9c,0xea] + vfnmadd132ps zmm21, zmm16, zmm10, {rd-sae} + +// CHECK: vfnmadd132ps zmm21, zmm16, zmm10, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0x7d,0x70,0x9c,0xea] + vfnmadd132ps zmm21, zmm16, zmm10, {rz-sae} + +// CHECK: vfnmadd132ps zmm21, zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x40,0x9c,0x29] + vfnmadd132ps zmm21, zmm16, zmmword ptr [rcx] + +// CHECK: vfnmadd132ps zmm21, zmm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x7d,0x40,0x9c,0xac,0xf0,0x23,0x01,0x00,0x00] + vfnmadd132ps zmm21, zmm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd132ps zmm21, zmm16, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x50,0x9c,0x29] + vfnmadd132ps zmm21, zmm16, dword ptr [rcx]{1to16} + +// CHECK: vfnmadd132ps zmm21, zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x7d,0x40,0x9c,0x6a,0x7f] + vfnmadd132ps zmm21, zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd132ps zmm21, zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x7d,0x40,0x9c,0xaa,0x00,0x20,0x00,0x00] + vfnmadd132ps zmm21, zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd132ps zmm21, zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x7d,0x40,0x9c,0x6a,0x80] + vfnmadd132ps zmm21, zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd132ps zmm21, zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x7d,0x40,0x9c,0xaa,0xc0,0xdf,0xff,0xff] + vfnmadd132ps zmm21, zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd132ps zmm21, zmm16, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x50,0x9c,0x6a,0x7f] + vfnmadd132ps zmm21, zmm16, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmadd132ps zmm21, zmm16, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x50,0x9c,0xaa,0x00,0x02,0x00,0x00] + vfnmadd132ps zmm21, zmm16, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmadd132ps zmm21, zmm16, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x50,0x9c,0x6a,0x80] + vfnmadd132ps zmm21, zmm16, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmadd132ps zmm21, zmm16, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x50,0x9c,0xaa,0xfc,0xfd,0xff,0xff] + vfnmadd132ps zmm21, zmm16, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmadd132sd xmm19, xmm3, xmm11 +// CHECK: encoding: [0x62,0xc2,0xe5,0x08,0x9d,0xdb] + vfnmadd132sd xmm19, xmm3, xmm11 + +// CHECK: vfnmadd132sd xmm19 {k2}, xmm3, xmm11 +// CHECK: encoding: [0x62,0xc2,0xe5,0x0a,0x9d,0xdb] + vfnmadd132sd xmm19 {k2}, xmm3, xmm11 + +// CHECK: vfnmadd132sd xmm19 {k2} {z}, xmm3, xmm11 +// CHECK: encoding: [0x62,0xc2,0xe5,0x8a,0x9d,0xdb] + vfnmadd132sd xmm19 {k2} {z}, xmm3, xmm11 + +// CHECK: vfnmadd132sd xmm19, xmm3, xmm11, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0xe5,0x18,0x9d,0xdb] + vfnmadd132sd xmm19, xmm3, xmm11, {rn-sae} + +// CHECK: vfnmadd132sd xmm19, xmm3, xmm11, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0xe5,0x58,0x9d,0xdb] + vfnmadd132sd xmm19, xmm3, xmm11, {ru-sae} + +// CHECK: vfnmadd132sd xmm19, xmm3, xmm11, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0xe5,0x38,0x9d,0xdb] + vfnmadd132sd xmm19, xmm3, xmm11, {rd-sae} + +// CHECK: vfnmadd132sd xmm19, xmm3, xmm11, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0xe5,0x78,0x9d,0xdb] + vfnmadd132sd xmm19, xmm3, xmm11, {rz-sae} + +// CHECK: vfnmadd132sd xmm19, xmm3, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xe5,0x08,0x9d,0x19] + vfnmadd132sd xmm19, xmm3, qword ptr [rcx] + +// CHECK: vfnmadd132sd xmm19, xmm3, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xe5,0x08,0x9d,0x9c,0xf0,0x23,0x01,0x00,0x00] + vfnmadd132sd xmm19, xmm3, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd132sd xmm19, xmm3, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe2,0xe5,0x08,0x9d,0x5a,0x7f] + vfnmadd132sd xmm19, xmm3, qword ptr [rdx + 1016] + +// CHECK: vfnmadd132sd xmm19, xmm3, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe2,0xe5,0x08,0x9d,0x9a,0x00,0x04,0x00,0x00] + vfnmadd132sd xmm19, xmm3, qword ptr [rdx + 1024] + +// CHECK: vfnmadd132sd xmm19, xmm3, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe2,0xe5,0x08,0x9d,0x5a,0x80] + vfnmadd132sd xmm19, xmm3, qword ptr [rdx - 1024] + +// CHECK: vfnmadd132sd xmm19, xmm3, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe2,0xe5,0x08,0x9d,0x9a,0xf8,0xfb,0xff,0xff] + vfnmadd132sd xmm19, xmm3, qword ptr [rdx - 1032] + +// CHECK: vfnmadd132ss xmm25, xmm1, xmm23 +// CHECK: encoding: [0x62,0x22,0x75,0x08,0x9d,0xcf] + vfnmadd132ss xmm25, xmm1, xmm23 + +// CHECK: vfnmadd132ss xmm25 {k3}, xmm1, xmm23 +// CHECK: encoding: [0x62,0x22,0x75,0x0b,0x9d,0xcf] + vfnmadd132ss xmm25 {k3}, xmm1, xmm23 + +// CHECK: vfnmadd132ss xmm25 {k3} {z}, xmm1, xmm23 +// CHECK: encoding: [0x62,0x22,0x75,0x8b,0x9d,0xcf] + vfnmadd132ss xmm25 {k3} {z}, xmm1, xmm23 + +// CHECK: vfnmadd132ss xmm25, xmm1, xmm23, {rn-sae} +// CHECK: encoding: [0x62,0x22,0x75,0x18,0x9d,0xcf] + vfnmadd132ss xmm25, xmm1, xmm23, {rn-sae} + +// CHECK: vfnmadd132ss xmm25, xmm1, xmm23, {ru-sae} +// CHECK: encoding: [0x62,0x22,0x75,0x58,0x9d,0xcf] + vfnmadd132ss xmm25, xmm1, xmm23, {ru-sae} + +// CHECK: vfnmadd132ss xmm25, xmm1, xmm23, {rd-sae} +// CHECK: encoding: [0x62,0x22,0x75,0x38,0x9d,0xcf] + vfnmadd132ss xmm25, xmm1, xmm23, {rd-sae} + +// CHECK: vfnmadd132ss xmm25, xmm1, xmm23, {rz-sae} +// CHECK: encoding: [0x62,0x22,0x75,0x78,0x9d,0xcf] + vfnmadd132ss xmm25, xmm1, xmm23, {rz-sae} + +// CHECK: vfnmadd132ss xmm25, xmm1, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x9d,0x09] + vfnmadd132ss xmm25, xmm1, dword ptr [rcx] + +// CHECK: vfnmadd132ss xmm25, xmm1, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x75,0x08,0x9d,0x8c,0xf0,0x23,0x01,0x00,0x00] + vfnmadd132ss xmm25, xmm1, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd132ss xmm25, xmm1, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x9d,0x4a,0x7f] + vfnmadd132ss xmm25, xmm1, dword ptr [rdx + 508] + +// CHECK: vfnmadd132ss xmm25, xmm1, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x9d,0x8a,0x00,0x02,0x00,0x00] + vfnmadd132ss xmm25, xmm1, dword ptr [rdx + 512] + +// CHECK: vfnmadd132ss xmm25, xmm1, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x9d,0x4a,0x80] + vfnmadd132ss xmm25, xmm1, dword ptr [rdx - 512] + +// CHECK: vfnmadd132ss xmm25, xmm1, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x9d,0x8a,0xfc,0xfd,0xff,0xff] + vfnmadd132ss xmm25, xmm1, dword ptr [rdx - 516] + +// CHECK: vfnmadd213pd zmm17, zmm16, zmm9 +// CHECK: encoding: [0x62,0xc2,0xfd,0x40,0xac,0xc9] + vfnmadd213pd zmm17, zmm16, zmm9 + +// CHECK: vfnmadd213pd zmm17 {k4}, zmm16, zmm9 +// CHECK: encoding: [0x62,0xc2,0xfd,0x44,0xac,0xc9] + vfnmadd213pd zmm17 {k4}, zmm16, zmm9 + +// CHECK: vfnmadd213pd zmm17 {k4} {z}, zmm16, zmm9 +// CHECK: encoding: [0x62,0xc2,0xfd,0xc4,0xac,0xc9] + vfnmadd213pd zmm17 {k4} {z}, zmm16, zmm9 + +// CHECK: vfnmadd213pd zmm17, zmm16, zmm9, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0xfd,0x10,0xac,0xc9] + vfnmadd213pd zmm17, zmm16, zmm9, {rn-sae} + +// CHECK: vfnmadd213pd zmm17, zmm16, zmm9, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0xfd,0x50,0xac,0xc9] + vfnmadd213pd zmm17, zmm16, zmm9, {ru-sae} + +// CHECK: vfnmadd213pd zmm17, zmm16, zmm9, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0xfd,0x30,0xac,0xc9] + vfnmadd213pd zmm17, zmm16, zmm9, {rd-sae} + +// CHECK: vfnmadd213pd zmm17, zmm16, zmm9, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0xfd,0x70,0xac,0xc9] + vfnmadd213pd zmm17, zmm16, zmm9, {rz-sae} + +// CHECK: vfnmadd213pd zmm17, zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xac,0x09] + vfnmadd213pd zmm17, zmm16, zmmword ptr [rcx] + +// CHECK: vfnmadd213pd zmm17, zmm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xfd,0x40,0xac,0x8c,0xf0,0x23,0x01,0x00,0x00] + vfnmadd213pd zmm17, zmm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd213pd zmm17, zmm16, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xac,0x09] + vfnmadd213pd zmm17, zmm16, qword ptr [rcx]{1to8} + +// CHECK: vfnmadd213pd zmm17, zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xac,0x4a,0x7f] + vfnmadd213pd zmm17, zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd213pd zmm17, zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xac,0x8a,0x00,0x20,0x00,0x00] + vfnmadd213pd zmm17, zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd213pd zmm17, zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xac,0x4a,0x80] + vfnmadd213pd zmm17, zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd213pd zmm17, zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0xac,0x8a,0xc0,0xdf,0xff,0xff] + vfnmadd213pd zmm17, zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd213pd zmm17, zmm16, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xac,0x4a,0x7f] + vfnmadd213pd zmm17, zmm16, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmadd213pd zmm17, zmm16, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xac,0x8a,0x00,0x04,0x00,0x00] + vfnmadd213pd zmm17, zmm16, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmadd213pd zmm17, zmm16, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xac,0x4a,0x80] + vfnmadd213pd zmm17, zmm16, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmadd213pd zmm17, zmm16, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0xac,0x8a,0xf8,0xfb,0xff,0xff] + vfnmadd213pd zmm17, zmm16, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmadd213ps zmm26, zmm10, zmm6 +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0xac,0xd6] + vfnmadd213ps zmm26, zmm10, zmm6 + +// CHECK: vfnmadd213ps zmm26 {k6}, zmm10, zmm6 +// CHECK: encoding: [0x62,0x62,0x2d,0x4e,0xac,0xd6] + vfnmadd213ps zmm26 {k6}, zmm10, zmm6 + +// CHECK: vfnmadd213ps zmm26 {k6} {z}, zmm10, zmm6 +// CHECK: encoding: [0x62,0x62,0x2d,0xce,0xac,0xd6] + vfnmadd213ps zmm26 {k6} {z}, zmm10, zmm6 + +// CHECK: vfnmadd213ps zmm26, zmm10, zmm6, {rn-sae} +// CHECK: encoding: [0x62,0x62,0x2d,0x18,0xac,0xd6] + vfnmadd213ps zmm26, zmm10, zmm6, {rn-sae} + +// CHECK: vfnmadd213ps zmm26, zmm10, zmm6, {ru-sae} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0xac,0xd6] + vfnmadd213ps zmm26, zmm10, zmm6, {ru-sae} + +// CHECK: vfnmadd213ps zmm26, zmm10, zmm6, {rd-sae} +// CHECK: encoding: [0x62,0x62,0x2d,0x38,0xac,0xd6] + vfnmadd213ps zmm26, zmm10, zmm6, {rd-sae} + +// CHECK: vfnmadd213ps zmm26, zmm10, zmm6, {rz-sae} +// CHECK: encoding: [0x62,0x62,0x2d,0x78,0xac,0xd6] + vfnmadd213ps zmm26, zmm10, zmm6, {rz-sae} + +// CHECK: vfnmadd213ps zmm26, zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0xac,0x11] + vfnmadd213ps zmm26, zmm10, zmmword ptr [rcx] + +// CHECK: vfnmadd213ps zmm26, zmm10, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x2d,0x48,0xac,0x94,0xf0,0x23,0x01,0x00,0x00] + vfnmadd213ps zmm26, zmm10, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd213ps zmm26, zmm10, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0xac,0x11] + vfnmadd213ps zmm26, zmm10, dword ptr [rcx]{1to16} + +// CHECK: vfnmadd213ps zmm26, zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0xac,0x52,0x7f] + vfnmadd213ps zmm26, zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd213ps zmm26, zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0xac,0x92,0x00,0x20,0x00,0x00] + vfnmadd213ps zmm26, zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd213ps zmm26, zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0xac,0x52,0x80] + vfnmadd213ps zmm26, zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd213ps zmm26, zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0xac,0x92,0xc0,0xdf,0xff,0xff] + vfnmadd213ps zmm26, zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd213ps zmm26, zmm10, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0xac,0x52,0x7f] + vfnmadd213ps zmm26, zmm10, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmadd213ps zmm26, zmm10, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0xac,0x92,0x00,0x02,0x00,0x00] + vfnmadd213ps zmm26, zmm10, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmadd213ps zmm26, zmm10, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0xac,0x52,0x80] + vfnmadd213ps zmm26, zmm10, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmadd213ps zmm26, zmm10, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0xac,0x92,0xfc,0xfd,0xff,0xff] + vfnmadd213ps zmm26, zmm10, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmadd213sd xmm13, xmm27, xmm2 +// CHECK: encoding: [0x62,0x72,0xa5,0x00,0xad,0xea] + vfnmadd213sd xmm13, xmm27, xmm2 + +// CHECK: vfnmadd213sd xmm13 {k7}, xmm27, xmm2 +// CHECK: encoding: [0x62,0x72,0xa5,0x07,0xad,0xea] + vfnmadd213sd xmm13 {k7}, xmm27, xmm2 + +// CHECK: vfnmadd213sd xmm13 {k7} {z}, xmm27, xmm2 +// CHECK: encoding: [0x62,0x72,0xa5,0x87,0xad,0xea] + vfnmadd213sd xmm13 {k7} {z}, xmm27, xmm2 + +// CHECK: vfnmadd213sd xmm13, xmm27, xmm2, {rn-sae} +// CHECK: encoding: [0x62,0x72,0xa5,0x10,0xad,0xea] + vfnmadd213sd xmm13, xmm27, xmm2, {rn-sae} + +// CHECK: vfnmadd213sd xmm13, xmm27, xmm2, {ru-sae} +// CHECK: encoding: [0x62,0x72,0xa5,0x50,0xad,0xea] + vfnmadd213sd xmm13, xmm27, xmm2, {ru-sae} + +// CHECK: vfnmadd213sd xmm13, xmm27, xmm2, {rd-sae} +// CHECK: encoding: [0x62,0x72,0xa5,0x30,0xad,0xea] + vfnmadd213sd xmm13, xmm27, xmm2, {rd-sae} + +// CHECK: vfnmadd213sd xmm13, xmm27, xmm2, {rz-sae} +// CHECK: encoding: [0x62,0x72,0xa5,0x70,0xad,0xea] + vfnmadd213sd xmm13, xmm27, xmm2, {rz-sae} + +// CHECK: vfnmadd213sd xmm13, xmm27, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xa5,0x00,0xad,0x29] + vfnmadd213sd xmm13, xmm27, qword ptr [rcx] + +// CHECK: vfnmadd213sd xmm13, xmm27, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xa5,0x00,0xad,0xac,0xf0,0x23,0x01,0x00,0x00] + vfnmadd213sd xmm13, xmm27, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd213sd xmm13, xmm27, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x72,0xa5,0x00,0xad,0x6a,0x7f] + vfnmadd213sd xmm13, xmm27, qword ptr [rdx + 1016] + +// CHECK: vfnmadd213sd xmm13, xmm27, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x72,0xa5,0x00,0xad,0xaa,0x00,0x04,0x00,0x00] + vfnmadd213sd xmm13, xmm27, qword ptr [rdx + 1024] + +// CHECK: vfnmadd213sd xmm13, xmm27, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x72,0xa5,0x00,0xad,0x6a,0x80] + vfnmadd213sd xmm13, xmm27, qword ptr [rdx - 1024] + +// CHECK: vfnmadd213sd xmm13, xmm27, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x72,0xa5,0x00,0xad,0xaa,0xf8,0xfb,0xff,0xff] + vfnmadd213sd xmm13, xmm27, qword ptr [rdx - 1032] + +// CHECK: vfnmadd213ss xmm29, xmm7, xmm28 +// CHECK: encoding: [0x62,0x02,0x45,0x08,0xad,0xec] + vfnmadd213ss xmm29, xmm7, xmm28 + +// CHECK: vfnmadd213ss xmm29 {k2}, xmm7, xmm28 +// CHECK: encoding: [0x62,0x02,0x45,0x0a,0xad,0xec] + vfnmadd213ss xmm29 {k2}, xmm7, xmm28 + +// CHECK: vfnmadd213ss xmm29 {k2} {z}, xmm7, xmm28 +// CHECK: encoding: [0x62,0x02,0x45,0x8a,0xad,0xec] + vfnmadd213ss xmm29 {k2} {z}, xmm7, xmm28 + +// CHECK: vfnmadd213ss xmm29, xmm7, xmm28, {rn-sae} +// CHECK: encoding: [0x62,0x02,0x45,0x18,0xad,0xec] + vfnmadd213ss xmm29, xmm7, xmm28, {rn-sae} + +// CHECK: vfnmadd213ss xmm29, xmm7, xmm28, {ru-sae} +// CHECK: encoding: [0x62,0x02,0x45,0x58,0xad,0xec] + vfnmadd213ss xmm29, xmm7, xmm28, {ru-sae} + +// CHECK: vfnmadd213ss xmm29, xmm7, xmm28, {rd-sae} +// CHECK: encoding: [0x62,0x02,0x45,0x38,0xad,0xec] + vfnmadd213ss xmm29, xmm7, xmm28, {rd-sae} + +// CHECK: vfnmadd213ss xmm29, xmm7, xmm28, {rz-sae} +// CHECK: encoding: [0x62,0x02,0x45,0x78,0xad,0xec] + vfnmadd213ss xmm29, xmm7, xmm28, {rz-sae} + +// CHECK: vfnmadd213ss xmm29, xmm7, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x45,0x08,0xad,0x29] + vfnmadd213ss xmm29, xmm7, dword ptr [rcx] + +// CHECK: vfnmadd213ss xmm29, xmm7, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x45,0x08,0xad,0xac,0xf0,0x23,0x01,0x00,0x00] + vfnmadd213ss xmm29, xmm7, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd213ss xmm29, xmm7, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x45,0x08,0xad,0x6a,0x7f] + vfnmadd213ss xmm29, xmm7, dword ptr [rdx + 508] + +// CHECK: vfnmadd213ss xmm29, xmm7, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x45,0x08,0xad,0xaa,0x00,0x02,0x00,0x00] + vfnmadd213ss xmm29, xmm7, dword ptr [rdx + 512] + +// CHECK: vfnmadd213ss xmm29, xmm7, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x45,0x08,0xad,0x6a,0x80] + vfnmadd213ss xmm29, xmm7, dword ptr [rdx - 512] + +// CHECK: vfnmadd213ss xmm29, xmm7, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x45,0x08,0xad,0xaa,0xfc,0xfd,0xff,0xff] + vfnmadd213ss xmm29, xmm7, dword ptr [rdx - 516] + +// CHECK: vfnmadd231pd zmm12, zmm11, zmm16 +// CHECK: encoding: [0x62,0x32,0xa5,0x48,0xbc,0xe0] + vfnmadd231pd zmm12, zmm11, zmm16 + +// CHECK: vfnmadd231pd zmm12 {k6}, zmm11, zmm16 +// CHECK: encoding: [0x62,0x32,0xa5,0x4e,0xbc,0xe0] + vfnmadd231pd zmm12 {k6}, zmm11, zmm16 + +// CHECK: vfnmadd231pd zmm12 {k6} {z}, zmm11, zmm16 +// CHECK: encoding: [0x62,0x32,0xa5,0xce,0xbc,0xe0] + vfnmadd231pd zmm12 {k6} {z}, zmm11, zmm16 + +// CHECK: vfnmadd231pd zmm12, zmm11, zmm16, {rn-sae} +// CHECK: encoding: [0x62,0x32,0xa5,0x18,0xbc,0xe0] + vfnmadd231pd zmm12, zmm11, zmm16, {rn-sae} + +// CHECK: vfnmadd231pd zmm12, zmm11, zmm16, {ru-sae} +// CHECK: encoding: [0x62,0x32,0xa5,0x58,0xbc,0xe0] + vfnmadd231pd zmm12, zmm11, zmm16, {ru-sae} + +// CHECK: vfnmadd231pd zmm12, zmm11, zmm16, {rd-sae} +// CHECK: encoding: [0x62,0x32,0xa5,0x38,0xbc,0xe0] + vfnmadd231pd zmm12, zmm11, zmm16, {rd-sae} + +// CHECK: vfnmadd231pd zmm12, zmm11, zmm16, {rz-sae} +// CHECK: encoding: [0x62,0x32,0xa5,0x78,0xbc,0xe0] + vfnmadd231pd zmm12, zmm11, zmm16, {rz-sae} + +// CHECK: vfnmadd231pd zmm12, zmm11, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xa5,0x48,0xbc,0x21] + vfnmadd231pd zmm12, zmm11, zmmword ptr [rcx] + +// CHECK: vfnmadd231pd zmm12, zmm11, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xa5,0x48,0xbc,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfnmadd231pd zmm12, zmm11, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd231pd zmm12, zmm11, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x58,0xbc,0x21] + vfnmadd231pd zmm12, zmm11, qword ptr [rcx]{1to8} + +// CHECK: vfnmadd231pd zmm12, zmm11, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xa5,0x48,0xbc,0x62,0x7f] + vfnmadd231pd zmm12, zmm11, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd231pd zmm12, zmm11, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xa5,0x48,0xbc,0xa2,0x00,0x20,0x00,0x00] + vfnmadd231pd zmm12, zmm11, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd231pd zmm12, zmm11, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xa5,0x48,0xbc,0x62,0x80] + vfnmadd231pd zmm12, zmm11, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd231pd zmm12, zmm11, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xa5,0x48,0xbc,0xa2,0xc0,0xdf,0xff,0xff] + vfnmadd231pd zmm12, zmm11, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd231pd zmm12, zmm11, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x58,0xbc,0x62,0x7f] + vfnmadd231pd zmm12, zmm11, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmadd231pd zmm12, zmm11, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x58,0xbc,0xa2,0x00,0x04,0x00,0x00] + vfnmadd231pd zmm12, zmm11, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmadd231pd zmm12, zmm11, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x58,0xbc,0x62,0x80] + vfnmadd231pd zmm12, zmm11, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmadd231pd zmm12, zmm11, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xa5,0x58,0xbc,0xa2,0xf8,0xfb,0xff,0xff] + vfnmadd231pd zmm12, zmm11, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmadd231ps zmm14, zmm7, zmm24 +// CHECK: encoding: [0x62,0x12,0x45,0x48,0xbc,0xf0] + vfnmadd231ps zmm14, zmm7, zmm24 + +// CHECK: vfnmadd231ps zmm14 {k5}, zmm7, zmm24 +// CHECK: encoding: [0x62,0x12,0x45,0x4d,0xbc,0xf0] + vfnmadd231ps zmm14 {k5}, zmm7, zmm24 + +// CHECK: vfnmadd231ps zmm14 {k5} {z}, zmm7, zmm24 +// CHECK: encoding: [0x62,0x12,0x45,0xcd,0xbc,0xf0] + vfnmadd231ps zmm14 {k5} {z}, zmm7, zmm24 + +// CHECK: vfnmadd231ps zmm14, zmm7, zmm24, {rn-sae} +// CHECK: encoding: [0x62,0x12,0x45,0x18,0xbc,0xf0] + vfnmadd231ps zmm14, zmm7, zmm24, {rn-sae} + +// CHECK: vfnmadd231ps zmm14, zmm7, zmm24, {ru-sae} +// CHECK: encoding: [0x62,0x12,0x45,0x58,0xbc,0xf0] + vfnmadd231ps zmm14, zmm7, zmm24, {ru-sae} + +// CHECK: vfnmadd231ps zmm14, zmm7, zmm24, {rd-sae} +// CHECK: encoding: [0x62,0x12,0x45,0x38,0xbc,0xf0] + vfnmadd231ps zmm14, zmm7, zmm24, {rd-sae} + +// CHECK: vfnmadd231ps zmm14, zmm7, zmm24, {rz-sae} +// CHECK: encoding: [0x62,0x12,0x45,0x78,0xbc,0xf0] + vfnmadd231ps zmm14, zmm7, zmm24, {rz-sae} + +// CHECK: vfnmadd231ps zmm14, zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x45,0x48,0xbc,0x31] + vfnmadd231ps zmm14, zmm7, zmmword ptr [rcx] + +// CHECK: vfnmadd231ps zmm14, zmm7, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x45,0x48,0xbc,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfnmadd231ps zmm14, zmm7, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd231ps zmm14, zmm7, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x45,0x58,0xbc,0x31] + vfnmadd231ps zmm14, zmm7, dword ptr [rcx]{1to16} + +// CHECK: vfnmadd231ps zmm14, zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x45,0x48,0xbc,0x72,0x7f] + vfnmadd231ps zmm14, zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd231ps zmm14, zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x45,0x48,0xbc,0xb2,0x00,0x20,0x00,0x00] + vfnmadd231ps zmm14, zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd231ps zmm14, zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x45,0x48,0xbc,0x72,0x80] + vfnmadd231ps zmm14, zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd231ps zmm14, zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x45,0x48,0xbc,0xb2,0xc0,0xdf,0xff,0xff] + vfnmadd231ps zmm14, zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd231ps zmm14, zmm7, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x45,0x58,0xbc,0x72,0x7f] + vfnmadd231ps zmm14, zmm7, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmadd231ps zmm14, zmm7, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x45,0x58,0xbc,0xb2,0x00,0x02,0x00,0x00] + vfnmadd231ps zmm14, zmm7, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmadd231ps zmm14, zmm7, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x45,0x58,0xbc,0x72,0x80] + vfnmadd231ps zmm14, zmm7, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmadd231ps zmm14, zmm7, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x45,0x58,0xbc,0xb2,0xfc,0xfd,0xff,0xff] + vfnmadd231ps zmm14, zmm7, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmadd231sd xmm6, xmm11, xmm18 +// CHECK: encoding: [0x62,0xb2,0xa5,0x08,0xbd,0xf2] + vfnmadd231sd xmm6, xmm11, xmm18 + +// CHECK: vfnmadd231sd xmm6 {k3}, xmm11, xmm18 +// CHECK: encoding: [0x62,0xb2,0xa5,0x0b,0xbd,0xf2] + vfnmadd231sd xmm6 {k3}, xmm11, xmm18 + +// CHECK: vfnmadd231sd xmm6 {k3} {z}, xmm11, xmm18 +// CHECK: encoding: [0x62,0xb2,0xa5,0x8b,0xbd,0xf2] + vfnmadd231sd xmm6 {k3} {z}, xmm11, xmm18 + +// CHECK: vfnmadd231sd xmm6, xmm11, xmm18, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0xa5,0x18,0xbd,0xf2] + vfnmadd231sd xmm6, xmm11, xmm18, {rn-sae} + +// CHECK: vfnmadd231sd xmm6, xmm11, xmm18, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0xa5,0x58,0xbd,0xf2] + vfnmadd231sd xmm6, xmm11, xmm18, {ru-sae} + +// CHECK: vfnmadd231sd xmm6, xmm11, xmm18, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0xa5,0x38,0xbd,0xf2] + vfnmadd231sd xmm6, xmm11, xmm18, {rd-sae} + +// CHECK: vfnmadd231sd xmm6, xmm11, xmm18, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0xa5,0x78,0xbd,0xf2] + vfnmadd231sd xmm6, xmm11, xmm18, {rz-sae} + +// CHECK: vfnmadd231sd xmm6, xmm11, qword ptr [rcx] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbd,0x31] + vfnmadd231sd xmm6, xmm11, qword ptr [rcx] + +// CHECK: vfnmadd231sd xmm6, xmm11, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa2,0xa1,0xbd,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfnmadd231sd xmm6, xmm11, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd231sd xmm6, xmm11, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbd,0xb2,0xf8,0x03,0x00,0x00] + vfnmadd231sd xmm6, xmm11, qword ptr [rdx + 1016] + +// CHECK: vfnmadd231sd xmm6, xmm11, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbd,0xb2,0x00,0x04,0x00,0x00] + vfnmadd231sd xmm6, xmm11, qword ptr [rdx + 1024] + +// CHECK: vfnmadd231sd xmm6, xmm11, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbd,0xb2,0x00,0xfc,0xff,0xff] + vfnmadd231sd xmm6, xmm11, qword ptr [rdx - 1024] + +// CHECK: vfnmadd231sd xmm6, xmm11, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0xe2,0xa1,0xbd,0xb2,0xf8,0xfb,0xff,0xff] + vfnmadd231sd xmm6, xmm11, qword ptr [rdx - 1032] + +// CHECK: vfnmadd231ss xmm27, xmm2, xmm17 +// CHECK: encoding: [0x62,0x22,0x6d,0x08,0xbd,0xd9] + vfnmadd231ss xmm27, xmm2, xmm17 + +// CHECK: vfnmadd231ss xmm27 {k1}, xmm2, xmm17 +// CHECK: encoding: [0x62,0x22,0x6d,0x09,0xbd,0xd9] + vfnmadd231ss xmm27 {k1}, xmm2, xmm17 + +// CHECK: vfnmadd231ss xmm27 {k1} {z}, xmm2, xmm17 +// CHECK: encoding: [0x62,0x22,0x6d,0x89,0xbd,0xd9] + vfnmadd231ss xmm27 {k1} {z}, xmm2, xmm17 + +// CHECK: vfnmadd231ss xmm27, xmm2, xmm17, {rn-sae} +// CHECK: encoding: [0x62,0x22,0x6d,0x18,0xbd,0xd9] + vfnmadd231ss xmm27, xmm2, xmm17, {rn-sae} + +// CHECK: vfnmadd231ss xmm27, xmm2, xmm17, {ru-sae} +// CHECK: encoding: [0x62,0x22,0x6d,0x58,0xbd,0xd9] + vfnmadd231ss xmm27, xmm2, xmm17, {ru-sae} + +// CHECK: vfnmadd231ss xmm27, xmm2, xmm17, {rd-sae} +// CHECK: encoding: [0x62,0x22,0x6d,0x38,0xbd,0xd9] + vfnmadd231ss xmm27, xmm2, xmm17, {rd-sae} + +// CHECK: vfnmadd231ss xmm27, xmm2, xmm17, {rz-sae} +// CHECK: encoding: [0x62,0x22,0x6d,0x78,0xbd,0xd9] + vfnmadd231ss xmm27, xmm2, xmm17, {rz-sae} + +// CHECK: vfnmadd231ss xmm27, xmm2, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x6d,0x08,0xbd,0x19] + vfnmadd231ss xmm27, xmm2, dword ptr [rcx] + +// CHECK: vfnmadd231ss xmm27, xmm2, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x6d,0x08,0xbd,0x9c,0xf0,0x23,0x01,0x00,0x00] + vfnmadd231ss xmm27, xmm2, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmadd231ss xmm27, xmm2, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x6d,0x08,0xbd,0x5a,0x7f] + vfnmadd231ss xmm27, xmm2, dword ptr [rdx + 508] + +// CHECK: vfnmadd231ss xmm27, xmm2, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x6d,0x08,0xbd,0x9a,0x00,0x02,0x00,0x00] + vfnmadd231ss xmm27, xmm2, dword ptr [rdx + 512] + +// CHECK: vfnmadd231ss xmm27, xmm2, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x6d,0x08,0xbd,0x5a,0x80] + vfnmadd231ss xmm27, xmm2, dword ptr [rdx - 512] + +// CHECK: vfnmadd231ss xmm27, xmm2, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x6d,0x08,0xbd,0x9a,0xfc,0xfd,0xff,0xff] + vfnmadd231ss xmm27, xmm2, dword ptr [rdx - 516] + +// CHECK: vfnmsub132pd zmm28, zmm5, zmm6 +// CHECK: encoding: [0x62,0x62,0xd5,0x48,0x9e,0xe6] + vfnmsub132pd zmm28, zmm5, zmm6 + +// CHECK: vfnmsub132pd zmm28 {k2}, zmm5, zmm6 +// CHECK: encoding: [0x62,0x62,0xd5,0x4a,0x9e,0xe6] + vfnmsub132pd zmm28 {k2}, zmm5, zmm6 + +// CHECK: vfnmsub132pd zmm28 {k2} {z}, zmm5, zmm6 +// CHECK: encoding: [0x62,0x62,0xd5,0xca,0x9e,0xe6] + vfnmsub132pd zmm28 {k2} {z}, zmm5, zmm6 + +// CHECK: vfnmsub132pd zmm28, zmm5, zmm6, {rn-sae} +// CHECK: encoding: [0x62,0x62,0xd5,0x18,0x9e,0xe6] + vfnmsub132pd zmm28, zmm5, zmm6, {rn-sae} + +// CHECK: vfnmsub132pd zmm28, zmm5, zmm6, {ru-sae} +// CHECK: encoding: [0x62,0x62,0xd5,0x58,0x9e,0xe6] + vfnmsub132pd zmm28, zmm5, zmm6, {ru-sae} + +// CHECK: vfnmsub132pd zmm28, zmm5, zmm6, {rd-sae} +// CHECK: encoding: [0x62,0x62,0xd5,0x38,0x9e,0xe6] + vfnmsub132pd zmm28, zmm5, zmm6, {rd-sae} + +// CHECK: vfnmsub132pd zmm28, zmm5, zmm6, {rz-sae} +// CHECK: encoding: [0x62,0x62,0xd5,0x78,0x9e,0xe6] + vfnmsub132pd zmm28, zmm5, zmm6, {rz-sae} + +// CHECK: vfnmsub132pd zmm28, zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xd5,0x48,0x9e,0x21] + vfnmsub132pd zmm28, zmm5, zmmword ptr [rcx] + +// CHECK: vfnmsub132pd zmm28, zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xd5,0x48,0x9e,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfnmsub132pd zmm28, zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub132pd zmm28, zmm5, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xd5,0x58,0x9e,0x21] + vfnmsub132pd zmm28, zmm5, qword ptr [rcx]{1to8} + +// CHECK: vfnmsub132pd zmm28, zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xd5,0x48,0x9e,0x62,0x7f] + vfnmsub132pd zmm28, zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub132pd zmm28, zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xd5,0x48,0x9e,0xa2,0x00,0x20,0x00,0x00] + vfnmsub132pd zmm28, zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub132pd zmm28, zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xd5,0x48,0x9e,0x62,0x80] + vfnmsub132pd zmm28, zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub132pd zmm28, zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xd5,0x48,0x9e,0xa2,0xc0,0xdf,0xff,0xff] + vfnmsub132pd zmm28, zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub132pd zmm28, zmm5, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xd5,0x58,0x9e,0x62,0x7f] + vfnmsub132pd zmm28, zmm5, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmsub132pd zmm28, zmm5, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xd5,0x58,0x9e,0xa2,0x00,0x04,0x00,0x00] + vfnmsub132pd zmm28, zmm5, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmsub132pd zmm28, zmm5, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xd5,0x58,0x9e,0x62,0x80] + vfnmsub132pd zmm28, zmm5, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmsub132pd zmm28, zmm5, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xd5,0x58,0x9e,0xa2,0xf8,0xfb,0xff,0xff] + vfnmsub132pd zmm28, zmm5, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmsub132ps zmm4, zmm18, zmm6 +// CHECK: encoding: [0x62,0xf2,0x6d,0x40,0x9e,0xe6] + vfnmsub132ps zmm4, zmm18, zmm6 + +// CHECK: vfnmsub132ps zmm4 {k2}, zmm18, zmm6 +// CHECK: encoding: [0x62,0xf2,0x6d,0x42,0x9e,0xe6] + vfnmsub132ps zmm4 {k2}, zmm18, zmm6 + +// CHECK: vfnmsub132ps zmm4 {k2} {z}, zmm18, zmm6 +// CHECK: encoding: [0x62,0xf2,0x6d,0xc2,0x9e,0xe6] + vfnmsub132ps zmm4 {k2} {z}, zmm18, zmm6 + +// CHECK: vfnmsub132ps zmm4, zmm18, zmm6, {rn-sae} +// CHECK: encoding: [0x62,0xf2,0x6d,0x10,0x9e,0xe6] + vfnmsub132ps zmm4, zmm18, zmm6, {rn-sae} + +// CHECK: vfnmsub132ps zmm4, zmm18, zmm6, {ru-sae} +// CHECK: encoding: [0x62,0xf2,0x6d,0x50,0x9e,0xe6] + vfnmsub132ps zmm4, zmm18, zmm6, {ru-sae} + +// CHECK: vfnmsub132ps zmm4, zmm18, zmm6, {rd-sae} +// CHECK: encoding: [0x62,0xf2,0x6d,0x30,0x9e,0xe6] + vfnmsub132ps zmm4, zmm18, zmm6, {rd-sae} + +// CHECK: vfnmsub132ps zmm4, zmm18, zmm6, {rz-sae} +// CHECK: encoding: [0x62,0xf2,0x6d,0x70,0x9e,0xe6] + vfnmsub132ps zmm4, zmm18, zmm6, {rz-sae} + +// CHECK: vfnmsub132ps zmm4, zmm18, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x6d,0x40,0x9e,0x21] + vfnmsub132ps zmm4, zmm18, zmmword ptr [rcx] + +// CHECK: vfnmsub132ps zmm4, zmm18, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x6d,0x40,0x9e,0xa4,0xf0,0x23,0x01,0x00,0x00] + vfnmsub132ps zmm4, zmm18, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub132ps zmm4, zmm18, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x50,0x9e,0x21] + vfnmsub132ps zmm4, zmm18, dword ptr [rcx]{1to16} + +// CHECK: vfnmsub132ps zmm4, zmm18, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x6d,0x40,0x9e,0x62,0x7f] + vfnmsub132ps zmm4, zmm18, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub132ps zmm4, zmm18, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x6d,0x40,0x9e,0xa2,0x00,0x20,0x00,0x00] + vfnmsub132ps zmm4, zmm18, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub132ps zmm4, zmm18, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x6d,0x40,0x9e,0x62,0x80] + vfnmsub132ps zmm4, zmm18, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub132ps zmm4, zmm18, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x6d,0x40,0x9e,0xa2,0xc0,0xdf,0xff,0xff] + vfnmsub132ps zmm4, zmm18, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub132ps zmm4, zmm18, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x50,0x9e,0x62,0x7f] + vfnmsub132ps zmm4, zmm18, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmsub132ps zmm4, zmm18, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x50,0x9e,0xa2,0x00,0x02,0x00,0x00] + vfnmsub132ps zmm4, zmm18, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmsub132ps zmm4, zmm18, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x50,0x9e,0x62,0x80] + vfnmsub132ps zmm4, zmm18, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmsub132ps zmm4, zmm18, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x50,0x9e,0xa2,0xfc,0xfd,0xff,0xff] + vfnmsub132ps zmm4, zmm18, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmsub132sd xmm26, xmm11, xmm13 +// CHECK: encoding: [0x62,0x42,0xa5,0x08,0x9f,0xd5] + vfnmsub132sd xmm26, xmm11, xmm13 + +// CHECK: vfnmsub132sd xmm26 {k6}, xmm11, xmm13 +// CHECK: encoding: [0x62,0x42,0xa5,0x0e,0x9f,0xd5] + vfnmsub132sd xmm26 {k6}, xmm11, xmm13 + +// CHECK: vfnmsub132sd xmm26 {k6} {z}, xmm11, xmm13 +// CHECK: encoding: [0x62,0x42,0xa5,0x8e,0x9f,0xd5] + vfnmsub132sd xmm26 {k6} {z}, xmm11, xmm13 + +// CHECK: vfnmsub132sd xmm26, xmm11, xmm13, {rn-sae} +// CHECK: encoding: [0x62,0x42,0xa5,0x18,0x9f,0xd5] + vfnmsub132sd xmm26, xmm11, xmm13, {rn-sae} + +// CHECK: vfnmsub132sd xmm26, xmm11, xmm13, {ru-sae} +// CHECK: encoding: [0x62,0x42,0xa5,0x58,0x9f,0xd5] + vfnmsub132sd xmm26, xmm11, xmm13, {ru-sae} + +// CHECK: vfnmsub132sd xmm26, xmm11, xmm13, {rd-sae} +// CHECK: encoding: [0x62,0x42,0xa5,0x38,0x9f,0xd5] + vfnmsub132sd xmm26, xmm11, xmm13, {rd-sae} + +// CHECK: vfnmsub132sd xmm26, xmm11, xmm13, {rz-sae} +// CHECK: encoding: [0x62,0x42,0xa5,0x78,0x9f,0xd5] + vfnmsub132sd xmm26, xmm11, xmm13, {rz-sae} + +// CHECK: vfnmsub132sd xmm26, xmm11, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xa5,0x08,0x9f,0x11] + vfnmsub132sd xmm26, xmm11, qword ptr [rcx] + +// CHECK: vfnmsub132sd xmm26, xmm11, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xa5,0x08,0x9f,0x94,0xf0,0x23,0x01,0x00,0x00] + vfnmsub132sd xmm26, xmm11, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub132sd xmm26, xmm11, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xa5,0x08,0x9f,0x52,0x7f] + vfnmsub132sd xmm26, xmm11, qword ptr [rdx + 1016] + +// CHECK: vfnmsub132sd xmm26, xmm11, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xa5,0x08,0x9f,0x92,0x00,0x04,0x00,0x00] + vfnmsub132sd xmm26, xmm11, qword ptr [rdx + 1024] + +// CHECK: vfnmsub132sd xmm26, xmm11, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xa5,0x08,0x9f,0x52,0x80] + vfnmsub132sd xmm26, xmm11, qword ptr [rdx - 1024] + +// CHECK: vfnmsub132sd xmm26, xmm11, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xa5,0x08,0x9f,0x92,0xf8,0xfb,0xff,0xff] + vfnmsub132sd xmm26, xmm11, qword ptr [rdx - 1032] + +// CHECK: vfnmsub132ss xmm23, xmm22, xmm24 +// CHECK: encoding: [0x62,0x82,0x4d,0x00,0x9f,0xf8] + vfnmsub132ss xmm23, xmm22, xmm24 + +// CHECK: vfnmsub132ss xmm23 {k6}, xmm22, xmm24 +// CHECK: encoding: [0x62,0x82,0x4d,0x06,0x9f,0xf8] + vfnmsub132ss xmm23 {k6}, xmm22, xmm24 + +// CHECK: vfnmsub132ss xmm23 {k6} {z}, xmm22, xmm24 +// CHECK: encoding: [0x62,0x82,0x4d,0x86,0x9f,0xf8] + vfnmsub132ss xmm23 {k6} {z}, xmm22, xmm24 + +// CHECK: vfnmsub132ss xmm23, xmm22, xmm24, {rn-sae} +// CHECK: encoding: [0x62,0x82,0x4d,0x10,0x9f,0xf8] + vfnmsub132ss xmm23, xmm22, xmm24, {rn-sae} + +// CHECK: vfnmsub132ss xmm23, xmm22, xmm24, {ru-sae} +// CHECK: encoding: [0x62,0x82,0x4d,0x50,0x9f,0xf8] + vfnmsub132ss xmm23, xmm22, xmm24, {ru-sae} + +// CHECK: vfnmsub132ss xmm23, xmm22, xmm24, {rd-sae} +// CHECK: encoding: [0x62,0x82,0x4d,0x30,0x9f,0xf8] + vfnmsub132ss xmm23, xmm22, xmm24, {rd-sae} + +// CHECK: vfnmsub132ss xmm23, xmm22, xmm24, {rz-sae} +// CHECK: encoding: [0x62,0x82,0x4d,0x70,0x9f,0xf8] + vfnmsub132ss xmm23, xmm22, xmm24, {rz-sae} + +// CHECK: vfnmsub132ss xmm23, xmm22, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x4d,0x00,0x9f,0x39] + vfnmsub132ss xmm23, xmm22, dword ptr [rcx] + +// CHECK: vfnmsub132ss xmm23, xmm22, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x4d,0x00,0x9f,0xbc,0xf0,0x23,0x01,0x00,0x00] + vfnmsub132ss xmm23, xmm22, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub132ss xmm23, xmm22, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x4d,0x00,0x9f,0x7a,0x7f] + vfnmsub132ss xmm23, xmm22, dword ptr [rdx + 508] + +// CHECK: vfnmsub132ss xmm23, xmm22, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x4d,0x00,0x9f,0xba,0x00,0x02,0x00,0x00] + vfnmsub132ss xmm23, xmm22, dword ptr [rdx + 512] + +// CHECK: vfnmsub132ss xmm23, xmm22, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x4d,0x00,0x9f,0x7a,0x80] + vfnmsub132ss xmm23, xmm22, dword ptr [rdx - 512] + +// CHECK: vfnmsub132ss xmm23, xmm22, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x4d,0x00,0x9f,0xba,0xfc,0xfd,0xff,0xff] + vfnmsub132ss xmm23, xmm22, dword ptr [rdx - 516] + +// CHECK: vfnmsub213pd zmm23, zmm18, zmm11 +// CHECK: encoding: [0x62,0xc2,0xed,0x40,0xae,0xfb] + vfnmsub213pd zmm23, zmm18, zmm11 + +// CHECK: vfnmsub213pd zmm23 {k2}, zmm18, zmm11 +// CHECK: encoding: [0x62,0xc2,0xed,0x42,0xae,0xfb] + vfnmsub213pd zmm23 {k2}, zmm18, zmm11 + +// CHECK: vfnmsub213pd zmm23 {k2} {z}, zmm18, zmm11 +// CHECK: encoding: [0x62,0xc2,0xed,0xc2,0xae,0xfb] + vfnmsub213pd zmm23 {k2} {z}, zmm18, zmm11 + +// CHECK: vfnmsub213pd zmm23, zmm18, zmm11, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x10,0xae,0xfb] + vfnmsub213pd zmm23, zmm18, zmm11, {rn-sae} + +// CHECK: vfnmsub213pd zmm23, zmm18, zmm11, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x50,0xae,0xfb] + vfnmsub213pd zmm23, zmm18, zmm11, {ru-sae} + +// CHECK: vfnmsub213pd zmm23, zmm18, zmm11, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x30,0xae,0xfb] + vfnmsub213pd zmm23, zmm18, zmm11, {rd-sae} + +// CHECK: vfnmsub213pd zmm23, zmm18, zmm11, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x70,0xae,0xfb] + vfnmsub213pd zmm23, zmm18, zmm11, {rz-sae} + +// CHECK: vfnmsub213pd zmm23, zmm18, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xed,0x40,0xae,0x39] + vfnmsub213pd zmm23, zmm18, zmmword ptr [rcx] + +// CHECK: vfnmsub213pd zmm23, zmm18, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xed,0x40,0xae,0xbc,0xf0,0x23,0x01,0x00,0x00] + vfnmsub213pd zmm23, zmm18, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub213pd zmm23, zmm18, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x50,0xae,0x39] + vfnmsub213pd zmm23, zmm18, qword ptr [rcx]{1to8} + +// CHECK: vfnmsub213pd zmm23, zmm18, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xed,0x40,0xae,0x7a,0x7f] + vfnmsub213pd zmm23, zmm18, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub213pd zmm23, zmm18, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xed,0x40,0xae,0xba,0x00,0x20,0x00,0x00] + vfnmsub213pd zmm23, zmm18, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub213pd zmm23, zmm18, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xed,0x40,0xae,0x7a,0x80] + vfnmsub213pd zmm23, zmm18, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub213pd zmm23, zmm18, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xed,0x40,0xae,0xba,0xc0,0xdf,0xff,0xff] + vfnmsub213pd zmm23, zmm18, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub213pd zmm23, zmm18, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x50,0xae,0x7a,0x7f] + vfnmsub213pd zmm23, zmm18, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmsub213pd zmm23, zmm18, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x50,0xae,0xba,0x00,0x04,0x00,0x00] + vfnmsub213pd zmm23, zmm18, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmsub213pd zmm23, zmm18, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x50,0xae,0x7a,0x80] + vfnmsub213pd zmm23, zmm18, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmsub213pd zmm23, zmm18, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x50,0xae,0xba,0xf8,0xfb,0xff,0xff] + vfnmsub213pd zmm23, zmm18, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmsub213ps zmm21, zmm13, zmm2 +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xae,0xea] + vfnmsub213ps zmm21, zmm13, zmm2 + +// CHECK: vfnmsub213ps zmm21 {k3}, zmm13, zmm2 +// CHECK: encoding: [0x62,0xe2,0x15,0x4b,0xae,0xea] + vfnmsub213ps zmm21 {k3}, zmm13, zmm2 + +// CHECK: vfnmsub213ps zmm21 {k3} {z}, zmm13, zmm2 +// CHECK: encoding: [0x62,0xe2,0x15,0xcb,0xae,0xea] + vfnmsub213ps zmm21 {k3} {z}, zmm13, zmm2 + +// CHECK: vfnmsub213ps zmm21, zmm13, zmm2, {rn-sae} +// CHECK: encoding: [0x62,0xe2,0x15,0x18,0xae,0xea] + vfnmsub213ps zmm21, zmm13, zmm2, {rn-sae} + +// CHECK: vfnmsub213ps zmm21, zmm13, zmm2, {ru-sae} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xae,0xea] + vfnmsub213ps zmm21, zmm13, zmm2, {ru-sae} + +// CHECK: vfnmsub213ps zmm21, zmm13, zmm2, {rd-sae} +// CHECK: encoding: [0x62,0xe2,0x15,0x38,0xae,0xea] + vfnmsub213ps zmm21, zmm13, zmm2, {rd-sae} + +// CHECK: vfnmsub213ps zmm21, zmm13, zmm2, {rz-sae} +// CHECK: encoding: [0x62,0xe2,0x15,0x78,0xae,0xea] + vfnmsub213ps zmm21, zmm13, zmm2, {rz-sae} + +// CHECK: vfnmsub213ps zmm21, zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xae,0x29] + vfnmsub213ps zmm21, zmm13, zmmword ptr [rcx] + +// CHECK: vfnmsub213ps zmm21, zmm13, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x15,0x48,0xae,0xac,0xf0,0x23,0x01,0x00,0x00] + vfnmsub213ps zmm21, zmm13, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub213ps zmm21, zmm13, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xae,0x29] + vfnmsub213ps zmm21, zmm13, dword ptr [rcx]{1to16} + +// CHECK: vfnmsub213ps zmm21, zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xae,0x6a,0x7f] + vfnmsub213ps zmm21, zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub213ps zmm21, zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xae,0xaa,0x00,0x20,0x00,0x00] + vfnmsub213ps zmm21, zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub213ps zmm21, zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xae,0x6a,0x80] + vfnmsub213ps zmm21, zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub213ps zmm21, zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xae,0xaa,0xc0,0xdf,0xff,0xff] + vfnmsub213ps zmm21, zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub213ps zmm21, zmm13, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xae,0x6a,0x7f] + vfnmsub213ps zmm21, zmm13, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmsub213ps zmm21, zmm13, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xae,0xaa,0x00,0x02,0x00,0x00] + vfnmsub213ps zmm21, zmm13, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmsub213ps zmm21, zmm13, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xae,0x6a,0x80] + vfnmsub213ps zmm21, zmm13, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmsub213ps zmm21, zmm13, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xae,0xaa,0xfc,0xfd,0xff,0xff] + vfnmsub213ps zmm21, zmm13, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmsub213sd xmm29, xmm23, xmm28 +// CHECK: encoding: [0x62,0x02,0xc5,0x00,0xaf,0xec] + vfnmsub213sd xmm29, xmm23, xmm28 + +// CHECK: vfnmsub213sd xmm29 {k3}, xmm23, xmm28 +// CHECK: encoding: [0x62,0x02,0xc5,0x03,0xaf,0xec] + vfnmsub213sd xmm29 {k3}, xmm23, xmm28 + +// CHECK: vfnmsub213sd xmm29 {k3} {z}, xmm23, xmm28 +// CHECK: encoding: [0x62,0x02,0xc5,0x83,0xaf,0xec] + vfnmsub213sd xmm29 {k3} {z}, xmm23, xmm28 + +// CHECK: vfnmsub213sd xmm29, xmm23, xmm28, {rn-sae} +// CHECK: encoding: [0x62,0x02,0xc5,0x10,0xaf,0xec] + vfnmsub213sd xmm29, xmm23, xmm28, {rn-sae} + +// CHECK: vfnmsub213sd xmm29, xmm23, xmm28, {ru-sae} +// CHECK: encoding: [0x62,0x02,0xc5,0x50,0xaf,0xec] + vfnmsub213sd xmm29, xmm23, xmm28, {ru-sae} + +// CHECK: vfnmsub213sd xmm29, xmm23, xmm28, {rd-sae} +// CHECK: encoding: [0x62,0x02,0xc5,0x30,0xaf,0xec] + vfnmsub213sd xmm29, xmm23, xmm28, {rd-sae} + +// CHECK: vfnmsub213sd xmm29, xmm23, xmm28, {rz-sae} +// CHECK: encoding: [0x62,0x02,0xc5,0x70,0xaf,0xec] + vfnmsub213sd xmm29, xmm23, xmm28, {rz-sae} + +// CHECK: vfnmsub213sd xmm29, xmm23, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xc5,0x00,0xaf,0x29] + vfnmsub213sd xmm29, xmm23, qword ptr [rcx] + +// CHECK: vfnmsub213sd xmm29, xmm23, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xc5,0x00,0xaf,0xac,0xf0,0x23,0x01,0x00,0x00] + vfnmsub213sd xmm29, xmm23, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub213sd xmm29, xmm23, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xc5,0x00,0xaf,0x6a,0x7f] + vfnmsub213sd xmm29, xmm23, qword ptr [rdx + 1016] + +// CHECK: vfnmsub213sd xmm29, xmm23, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xc5,0x00,0xaf,0xaa,0x00,0x04,0x00,0x00] + vfnmsub213sd xmm29, xmm23, qword ptr [rdx + 1024] + +// CHECK: vfnmsub213sd xmm29, xmm23, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xc5,0x00,0xaf,0x6a,0x80] + vfnmsub213sd xmm29, xmm23, qword ptr [rdx - 1024] + +// CHECK: vfnmsub213sd xmm29, xmm23, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xc5,0x00,0xaf,0xaa,0xf8,0xfb,0xff,0xff] + vfnmsub213sd xmm29, xmm23, qword ptr [rdx - 1032] + +// CHECK: vfnmsub213ss xmm14, xmm28, xmm12 +// CHECK: encoding: [0x62,0x52,0x1d,0x00,0xaf,0xf4] + vfnmsub213ss xmm14, xmm28, xmm12 + +// CHECK: vfnmsub213ss xmm14 {k4}, xmm28, xmm12 +// CHECK: encoding: [0x62,0x52,0x1d,0x04,0xaf,0xf4] + vfnmsub213ss xmm14 {k4}, xmm28, xmm12 + +// CHECK: vfnmsub213ss xmm14 {k4} {z}, xmm28, xmm12 +// CHECK: encoding: [0x62,0x52,0x1d,0x84,0xaf,0xf4] + vfnmsub213ss xmm14 {k4} {z}, xmm28, xmm12 + +// CHECK: vfnmsub213ss xmm14, xmm28, xmm12, {rn-sae} +// CHECK: encoding: [0x62,0x52,0x1d,0x10,0xaf,0xf4] + vfnmsub213ss xmm14, xmm28, xmm12, {rn-sae} + +// CHECK: vfnmsub213ss xmm14, xmm28, xmm12, {ru-sae} +// CHECK: encoding: [0x62,0x52,0x1d,0x50,0xaf,0xf4] + vfnmsub213ss xmm14, xmm28, xmm12, {ru-sae} + +// CHECK: vfnmsub213ss xmm14, xmm28, xmm12, {rd-sae} +// CHECK: encoding: [0x62,0x52,0x1d,0x30,0xaf,0xf4] + vfnmsub213ss xmm14, xmm28, xmm12, {rd-sae} + +// CHECK: vfnmsub213ss xmm14, xmm28, xmm12, {rz-sae} +// CHECK: encoding: [0x62,0x52,0x1d,0x70,0xaf,0xf4] + vfnmsub213ss xmm14, xmm28, xmm12, {rz-sae} + +// CHECK: vfnmsub213ss xmm14, xmm28, dword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x1d,0x00,0xaf,0x31] + vfnmsub213ss xmm14, xmm28, dword ptr [rcx] + +// CHECK: vfnmsub213ss xmm14, xmm28, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x1d,0x00,0xaf,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfnmsub213ss xmm14, xmm28, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub213ss xmm14, xmm28, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x72,0x1d,0x00,0xaf,0x72,0x7f] + vfnmsub213ss xmm14, xmm28, dword ptr [rdx + 508] + +// CHECK: vfnmsub213ss xmm14, xmm28, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x72,0x1d,0x00,0xaf,0xb2,0x00,0x02,0x00,0x00] + vfnmsub213ss xmm14, xmm28, dword ptr [rdx + 512] + +// CHECK: vfnmsub213ss xmm14, xmm28, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x72,0x1d,0x00,0xaf,0x72,0x80] + vfnmsub213ss xmm14, xmm28, dword ptr [rdx - 512] + +// CHECK: vfnmsub213ss xmm14, xmm28, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x72,0x1d,0x00,0xaf,0xb2,0xfc,0xfd,0xff,0xff] + vfnmsub213ss xmm14, xmm28, dword ptr [rdx - 516] + +// CHECK: vfnmsub231pd zmm29, zmm4, zmm24 +// CHECK: encoding: [0x62,0x02,0xdd,0x48,0xbe,0xe8] + vfnmsub231pd zmm29, zmm4, zmm24 + +// CHECK: vfnmsub231pd zmm29 {k7}, zmm4, zmm24 +// CHECK: encoding: [0x62,0x02,0xdd,0x4f,0xbe,0xe8] + vfnmsub231pd zmm29 {k7}, zmm4, zmm24 + +// CHECK: vfnmsub231pd zmm29 {k7} {z}, zmm4, zmm24 +// CHECK: encoding: [0x62,0x02,0xdd,0xcf,0xbe,0xe8] + vfnmsub231pd zmm29 {k7} {z}, zmm4, zmm24 + +// CHECK: vfnmsub231pd zmm29, zmm4, zmm24, {rn-sae} +// CHECK: encoding: [0x62,0x02,0xdd,0x18,0xbe,0xe8] + vfnmsub231pd zmm29, zmm4, zmm24, {rn-sae} + +// CHECK: vfnmsub231pd zmm29, zmm4, zmm24, {ru-sae} +// CHECK: encoding: [0x62,0x02,0xdd,0x58,0xbe,0xe8] + vfnmsub231pd zmm29, zmm4, zmm24, {ru-sae} + +// CHECK: vfnmsub231pd zmm29, zmm4, zmm24, {rd-sae} +// CHECK: encoding: [0x62,0x02,0xdd,0x38,0xbe,0xe8] + vfnmsub231pd zmm29, zmm4, zmm24, {rd-sae} + +// CHECK: vfnmsub231pd zmm29, zmm4, zmm24, {rz-sae} +// CHECK: encoding: [0x62,0x02,0xdd,0x78,0xbe,0xe8] + vfnmsub231pd zmm29, zmm4, zmm24, {rz-sae} + +// CHECK: vfnmsub231pd zmm29, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0xbe,0x29] + vfnmsub231pd zmm29, zmm4, zmmword ptr [rcx] + +// CHECK: vfnmsub231pd zmm29, zmm4, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xdd,0x48,0xbe,0xac,0xf0,0x23,0x01,0x00,0x00] + vfnmsub231pd zmm29, zmm4, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub231pd zmm29, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0xbe,0x29] + vfnmsub231pd zmm29, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vfnmsub231pd zmm29, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0xbe,0x6a,0x7f] + vfnmsub231pd zmm29, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub231pd zmm29, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0xbe,0xaa,0x00,0x20,0x00,0x00] + vfnmsub231pd zmm29, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub231pd zmm29, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0xbe,0x6a,0x80] + vfnmsub231pd zmm29, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub231pd zmm29, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0xbe,0xaa,0xc0,0xdf,0xff,0xff] + vfnmsub231pd zmm29, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub231pd zmm29, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0xbe,0x6a,0x7f] + vfnmsub231pd zmm29, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmsub231pd zmm29, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0xbe,0xaa,0x00,0x04,0x00,0x00] + vfnmsub231pd zmm29, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmsub231pd zmm29, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0xbe,0x6a,0x80] + vfnmsub231pd zmm29, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmsub231pd zmm29, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0xbe,0xaa,0xf8,0xfb,0xff,0xff] + vfnmsub231pd zmm29, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmsub231ps zmm8, zmm6, zmm13 +// CHECK: encoding: [0x62,0x52,0x4d,0x48,0xbe,0xc5] + vfnmsub231ps zmm8, zmm6, zmm13 + +// CHECK: vfnmsub231ps zmm8 {k2}, zmm6, zmm13 +// CHECK: encoding: [0x62,0x52,0x4d,0x4a,0xbe,0xc5] + vfnmsub231ps zmm8 {k2}, zmm6, zmm13 + +// CHECK: vfnmsub231ps zmm8 {k2} {z}, zmm6, zmm13 +// CHECK: encoding: [0x62,0x52,0x4d,0xca,0xbe,0xc5] + vfnmsub231ps zmm8 {k2} {z}, zmm6, zmm13 + +// CHECK: vfnmsub231ps zmm8, zmm6, zmm13, {rn-sae} +// CHECK: encoding: [0x62,0x52,0x4d,0x18,0xbe,0xc5] + vfnmsub231ps zmm8, zmm6, zmm13, {rn-sae} + +// CHECK: vfnmsub231ps zmm8, zmm6, zmm13, {ru-sae} +// CHECK: encoding: [0x62,0x52,0x4d,0x58,0xbe,0xc5] + vfnmsub231ps zmm8, zmm6, zmm13, {ru-sae} + +// CHECK: vfnmsub231ps zmm8, zmm6, zmm13, {rd-sae} +// CHECK: encoding: [0x62,0x52,0x4d,0x38,0xbe,0xc5] + vfnmsub231ps zmm8, zmm6, zmm13, {rd-sae} + +// CHECK: vfnmsub231ps zmm8, zmm6, zmm13, {rz-sae} +// CHECK: encoding: [0x62,0x52,0x4d,0x78,0xbe,0xc5] + vfnmsub231ps zmm8, zmm6, zmm13, {rz-sae} + +// CHECK: vfnmsub231ps zmm8, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0xbe,0x01] + vfnmsub231ps zmm8, zmm6, zmmword ptr [rcx] + +// CHECK: vfnmsub231ps zmm8, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x4d,0x48,0xbe,0x84,0xf0,0x23,0x01,0x00,0x00] + vfnmsub231ps zmm8, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub231ps zmm8, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0xbe,0x01] + vfnmsub231ps zmm8, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vfnmsub231ps zmm8, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0xbe,0x42,0x7f] + vfnmsub231ps zmm8, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub231ps zmm8, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0xbe,0x82,0x00,0x20,0x00,0x00] + vfnmsub231ps zmm8, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub231ps zmm8, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0xbe,0x42,0x80] + vfnmsub231ps zmm8, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub231ps zmm8, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0xbe,0x82,0xc0,0xdf,0xff,0xff] + vfnmsub231ps zmm8, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub231ps zmm8, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0xbe,0x42,0x7f] + vfnmsub231ps zmm8, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmsub231ps zmm8, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0xbe,0x82,0x00,0x02,0x00,0x00] + vfnmsub231ps zmm8, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmsub231ps zmm8, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0xbe,0x42,0x80] + vfnmsub231ps zmm8, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmsub231ps zmm8, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0xbe,0x82,0xfc,0xfd,0xff,0xff] + vfnmsub231ps zmm8, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmsub231sd xmm6, xmm20, xmm14 +// CHECK: encoding: [0x62,0xd2,0xdd,0x00,0xbf,0xf6] + vfnmsub231sd xmm6, xmm20, xmm14 + +// CHECK: vfnmsub231sd xmm6 {k1}, xmm20, xmm14 +// CHECK: encoding: [0x62,0xd2,0xdd,0x01,0xbf,0xf6] + vfnmsub231sd xmm6 {k1}, xmm20, xmm14 + +// CHECK: vfnmsub231sd xmm6 {k1} {z}, xmm20, xmm14 +// CHECK: encoding: [0x62,0xd2,0xdd,0x81,0xbf,0xf6] + vfnmsub231sd xmm6 {k1} {z}, xmm20, xmm14 + +// CHECK: vfnmsub231sd xmm6, xmm20, xmm14, {rn-sae} +// CHECK: encoding: [0x62,0xd2,0xdd,0x10,0xbf,0xf6] + vfnmsub231sd xmm6, xmm20, xmm14, {rn-sae} + +// CHECK: vfnmsub231sd xmm6, xmm20, xmm14, {ru-sae} +// CHECK: encoding: [0x62,0xd2,0xdd,0x50,0xbf,0xf6] + vfnmsub231sd xmm6, xmm20, xmm14, {ru-sae} + +// CHECK: vfnmsub231sd xmm6, xmm20, xmm14, {rd-sae} +// CHECK: encoding: [0x62,0xd2,0xdd,0x30,0xbf,0xf6] + vfnmsub231sd xmm6, xmm20, xmm14, {rd-sae} + +// CHECK: vfnmsub231sd xmm6, xmm20, xmm14, {rz-sae} +// CHECK: encoding: [0x62,0xd2,0xdd,0x70,0xbf,0xf6] + vfnmsub231sd xmm6, xmm20, xmm14, {rz-sae} + +// CHECK: vfnmsub231sd xmm6, xmm20, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0xbf,0x31] + vfnmsub231sd xmm6, xmm20, qword ptr [rcx] + +// CHECK: vfnmsub231sd xmm6, xmm20, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xdd,0x00,0xbf,0xb4,0xf0,0x23,0x01,0x00,0x00] + vfnmsub231sd xmm6, xmm20, qword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub231sd xmm6, xmm20, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0xbf,0x72,0x7f] + vfnmsub231sd xmm6, xmm20, qword ptr [rdx + 1016] + +// CHECK: vfnmsub231sd xmm6, xmm20, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0xbf,0xb2,0x00,0x04,0x00,0x00] + vfnmsub231sd xmm6, xmm20, qword ptr [rdx + 1024] + +// CHECK: vfnmsub231sd xmm6, xmm20, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0xbf,0x72,0x80] + vfnmsub231sd xmm6, xmm20, qword ptr [rdx - 1024] + +// CHECK: vfnmsub231sd xmm6, xmm20, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0xbf,0xb2,0xf8,0xfb,0xff,0xff] + vfnmsub231sd xmm6, xmm20, qword ptr [rdx - 1032] + +// CHECK: vfnmsub231ss xmm26, xmm13, xmm10 +// CHECK: encoding: [0x62,0x42,0x15,0x08,0xbf,0xd2] + vfnmsub231ss xmm26, xmm13, xmm10 + +// CHECK: vfnmsub231ss xmm26 {k4}, xmm13, xmm10 +// CHECK: encoding: [0x62,0x42,0x15,0x0c,0xbf,0xd2] + vfnmsub231ss xmm26 {k4}, xmm13, xmm10 + +// CHECK: vfnmsub231ss xmm26 {k4} {z}, xmm13, xmm10 +// CHECK: encoding: [0x62,0x42,0x15,0x8c,0xbf,0xd2] + vfnmsub231ss xmm26 {k4} {z}, xmm13, xmm10 + +// CHECK: vfnmsub231ss xmm26, xmm13, xmm10, {rn-sae} +// CHECK: encoding: [0x62,0x42,0x15,0x18,0xbf,0xd2] + vfnmsub231ss xmm26, xmm13, xmm10, {rn-sae} + +// CHECK: vfnmsub231ss xmm26, xmm13, xmm10, {ru-sae} +// CHECK: encoding: [0x62,0x42,0x15,0x58,0xbf,0xd2] + vfnmsub231ss xmm26, xmm13, xmm10, {ru-sae} + +// CHECK: vfnmsub231ss xmm26, xmm13, xmm10, {rd-sae} +// CHECK: encoding: [0x62,0x42,0x15,0x38,0xbf,0xd2] + vfnmsub231ss xmm26, xmm13, xmm10, {rd-sae} + +// CHECK: vfnmsub231ss xmm26, xmm13, xmm10, {rz-sae} +// CHECK: encoding: [0x62,0x42,0x15,0x78,0xbf,0xd2] + vfnmsub231ss xmm26, xmm13, xmm10, {rz-sae} + +// CHECK: vfnmsub231ss xmm26, xmm13, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xbf,0x11] + vfnmsub231ss xmm26, xmm13, dword ptr [rcx] + +// CHECK: vfnmsub231ss xmm26, xmm13, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x15,0x08,0xbf,0x94,0xf0,0x23,0x01,0x00,0x00] + vfnmsub231ss xmm26, xmm13, dword ptr [rax + 8*r14 + 291] + +// CHECK: vfnmsub231ss xmm26, xmm13, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xbf,0x52,0x7f] + vfnmsub231ss xmm26, xmm13, dword ptr [rdx + 508] + +// CHECK: vfnmsub231ss xmm26, xmm13, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xbf,0x92,0x00,0x02,0x00,0x00] + vfnmsub231ss xmm26, xmm13, dword ptr [rdx + 512] + +// CHECK: vfnmsub231ss xmm26, xmm13, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xbf,0x52,0x80] + vfnmsub231ss xmm26, xmm13, dword ptr [rdx - 512] + +// CHECK: vfnmsub231ss xmm26, xmm13, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x15,0x08,0xbf,0x92,0xfc,0xfd,0xff,0xff] + vfnmsub231ss xmm26, xmm13, dword ptr [rdx - 516] + +// CHECK: vgetexppd zmm14, zmm25 +// CHECK: encoding: [0x62,0x12,0xfd,0x48,0x42,0xf1] + vgetexppd zmm14, zmm25 + +// CHECK: vgetexppd zmm14 {k5}, zmm25 +// CHECK: encoding: [0x62,0x12,0xfd,0x4d,0x42,0xf1] + vgetexppd zmm14 {k5}, zmm25 + +// CHECK: vgetexppd zmm14 {k5} {z}, zmm25 +// CHECK: encoding: [0x62,0x12,0xfd,0xcd,0x42,0xf1] + vgetexppd zmm14 {k5} {z}, zmm25 + +// CHECK: vgetexppd zmm14, zmm25, {sae} +// CHECK: encoding: [0x62,0x12,0xfd,0x18,0x42,0xf1] + vgetexppd zmm14, zmm25, {sae} + +// CHECK: vgetexppd zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x42,0x31] + vgetexppd zmm14, zmmword ptr [rcx] + +// CHECK: vgetexppd zmm14, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xfd,0x48,0x42,0xb4,0xf0,0x23,0x01,0x00,0x00] + vgetexppd zmm14, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vgetexppd zmm14, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x42,0x31] + vgetexppd zmm14, qword ptr [rcx]{1to8} + +// CHECK: vgetexppd zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x42,0x72,0x7f] + vgetexppd zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vgetexppd zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x42,0xb2,0x00,0x20,0x00,0x00] + vgetexppd zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vgetexppd zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x42,0x72,0x80] + vgetexppd zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vgetexppd zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x42,0xb2,0xc0,0xdf,0xff,0xff] + vgetexppd zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vgetexppd zmm14, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x42,0x72,0x7f] + vgetexppd zmm14, qword ptr [rdx + 1016]{1to8} + +// CHECK: vgetexppd zmm14, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x42,0xb2,0x00,0x04,0x00,0x00] + vgetexppd zmm14, qword ptr [rdx + 1024]{1to8} + +// CHECK: vgetexppd zmm14, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x42,0x72,0x80] + vgetexppd zmm14, qword ptr [rdx - 1024]{1to8} + +// CHECK: vgetexppd zmm14, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x42,0xb2,0xf8,0xfb,0xff,0xff] + vgetexppd zmm14, qword ptr [rdx - 1032]{1to8} + +// CHECK: vgetexpps zmm1, zmm6 +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0xce] + vgetexpps zmm1, zmm6 + +// CHECK: vgetexpps zmm1 {k3}, zmm6 +// CHECK: encoding: [0x62,0xf2,0x7d,0x4b,0x42,0xce] + vgetexpps zmm1 {k3}, zmm6 + +// CHECK: vgetexpps zmm1 {k3} {z}, zmm6 +// CHECK: encoding: [0x62,0xf2,0x7d,0xcb,0x42,0xce] + vgetexpps zmm1 {k3} {z}, zmm6 + +// CHECK: vgetexpps zmm1, zmm6, {sae} +// CHECK: encoding: [0x62,0xf2,0x7d,0x18,0x42,0xce] + vgetexpps zmm1, zmm6, {sae} + +// CHECK: vgetexpps zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0x09] + vgetexpps zmm1, zmmword ptr [rcx] + +// CHECK: vgetexpps zmm1, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x42,0x8c,0xf0,0x23,0x01,0x00,0x00] + vgetexpps zmm1, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vgetexpps zmm1, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0x09] + vgetexpps zmm1, dword ptr [rcx]{1to16} + +// CHECK: vgetexpps zmm1, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0x4a,0x7f] + vgetexpps zmm1, zmmword ptr [rdx + 8128] + +// CHECK: vgetexpps zmm1, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0x8a,0x00,0x20,0x00,0x00] + vgetexpps zmm1, zmmword ptr [rdx + 8192] + +// CHECK: vgetexpps zmm1, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0x4a,0x80] + vgetexpps zmm1, zmmword ptr [rdx - 8192] + +// CHECK: vgetexpps zmm1, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0x8a,0xc0,0xdf,0xff,0xff] + vgetexpps zmm1, zmmword ptr [rdx - 8256] + +// CHECK: vgetexpps zmm1, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0x4a,0x7f] + vgetexpps zmm1, dword ptr [rdx + 508]{1to16} + +// CHECK: vgetexpps zmm1, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0x8a,0x00,0x02,0x00,0x00] + vgetexpps zmm1, dword ptr [rdx + 512]{1to16} + +// CHECK: vgetexpps zmm1, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0x4a,0x80] + vgetexpps zmm1, dword ptr [rdx - 512]{1to16} + +// CHECK: vgetexpps zmm1, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0x8a,0xfc,0xfd,0xff,0xff] + vgetexpps zmm1, dword ptr [rdx - 516]{1to16} + +// CHECK: vgetexpsd xmm2, xmm7, xmm2 +// CHECK: encoding: [0x62,0xf2,0xc5,0x08,0x43,0xd2] + vgetexpsd xmm2, xmm7, xmm2 + +// CHECK: vgetexpsd xmm2 {k5}, xmm7, xmm2 +// CHECK: encoding: [0x62,0xf2,0xc5,0x0d,0x43,0xd2] + vgetexpsd xmm2 {k5}, xmm7, xmm2 + +// CHECK: vgetexpsd xmm2 {k5} {z}, xmm7, xmm2 +// CHECK: encoding: [0x62,0xf2,0xc5,0x8d,0x43,0xd2] + vgetexpsd xmm2 {k5} {z}, xmm7, xmm2 + +// CHECK: vgetexpsd xmm2, xmm7, xmm2, {sae} +// CHECK: encoding: [0x62,0xf2,0xc5,0x18,0x43,0xd2] + vgetexpsd xmm2, xmm7, xmm2, {sae} + +// CHECK: vgetexpsd xmm2, xmm7, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xc5,0x08,0x43,0x11] + vgetexpsd xmm2, xmm7, qword ptr [rcx] + +// CHECK: vgetexpsd xmm2, xmm7, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xc5,0x08,0x43,0x94,0xf0,0x23,0x01,0x00,0x00] + vgetexpsd xmm2, xmm7, qword ptr [rax + 8*r14 + 291] + +// CHECK: vgetexpsd xmm2, xmm7, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf2,0xc5,0x08,0x43,0x52,0x7f] + vgetexpsd xmm2, xmm7, qword ptr [rdx + 1016] + +// CHECK: vgetexpsd xmm2, xmm7, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf2,0xc5,0x08,0x43,0x92,0x00,0x04,0x00,0x00] + vgetexpsd xmm2, xmm7, qword ptr [rdx + 1024] + +// CHECK: vgetexpsd xmm2, xmm7, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf2,0xc5,0x08,0x43,0x52,0x80] + vgetexpsd xmm2, xmm7, qword ptr [rdx - 1024] + +// CHECK: vgetexpsd xmm2, xmm7, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf2,0xc5,0x08,0x43,0x92,0xf8,0xfb,0xff,0xff] + vgetexpsd xmm2, xmm7, qword ptr [rdx - 1032] + +// CHECK: vgetexpss xmm20, xmm1, xmm26 +// CHECK: encoding: [0x62,0x82,0x75,0x08,0x43,0xe2] + vgetexpss xmm20, xmm1, xmm26 + +// CHECK: vgetexpss xmm20 {k7}, xmm1, xmm26 +// CHECK: encoding: [0x62,0x82,0x75,0x0f,0x43,0xe2] + vgetexpss xmm20 {k7}, xmm1, xmm26 + +// CHECK: vgetexpss xmm20 {k7} {z}, xmm1, xmm26 +// CHECK: encoding: [0x62,0x82,0x75,0x8f,0x43,0xe2] + vgetexpss xmm20 {k7} {z}, xmm1, xmm26 + +// CHECK: vgetexpss xmm20, xmm1, xmm26, {sae} +// CHECK: encoding: [0x62,0x82,0x75,0x18,0x43,0xe2] + vgetexpss xmm20, xmm1, xmm26, {sae} + +// CHECK: vgetexpss xmm20, xmm1, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x75,0x08,0x43,0x21] + vgetexpss xmm20, xmm1, dword ptr [rcx] + +// CHECK: vgetexpss xmm20, xmm1, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x75,0x08,0x43,0xa4,0xf0,0x23,0x01,0x00,0x00] + vgetexpss xmm20, xmm1, dword ptr [rax + 8*r14 + 291] + +// CHECK: vgetexpss xmm20, xmm1, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x75,0x08,0x43,0x62,0x7f] + vgetexpss xmm20, xmm1, dword ptr [rdx + 508] + +// CHECK: vgetexpss xmm20, xmm1, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x75,0x08,0x43,0xa2,0x00,0x02,0x00,0x00] + vgetexpss xmm20, xmm1, dword ptr [rdx + 512] + +// CHECK: vgetexpss xmm20, xmm1, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x75,0x08,0x43,0x62,0x80] + vgetexpss xmm20, xmm1, dword ptr [rdx - 512] + +// CHECK: vgetexpss xmm20, xmm1, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x75,0x08,0x43,0xa2,0xfc,0xfd,0xff,0xff] + vgetexpss xmm20, xmm1, dword ptr [rdx - 516] + +// CHECK: vgetmantpd zmm2, zmm26, 171 +// CHECK: encoding: [0x62,0x93,0xfd,0x48,0x26,0xd2,0xab] + vgetmantpd zmm2, zmm26, 171 + +// CHECK: vgetmantpd zmm2 {k7}, zmm26, 171 +// CHECK: encoding: [0x62,0x93,0xfd,0x4f,0x26,0xd2,0xab] + vgetmantpd zmm2 {k7}, zmm26, 171 + +// CHECK: vgetmantpd zmm2 {k7} {z}, zmm26, 171 +// CHECK: encoding: [0x62,0x93,0xfd,0xcf,0x26,0xd2,0xab] + vgetmantpd zmm2 {k7} {z}, zmm26, 171 + +// CHECK: vgetmantpd zmm2, zmm26, {sae}, 171 +// CHECK: encoding: [0x62,0x93,0xfd,0x18,0x26,0xd2,0xab] + vgetmantpd zmm2, zmm26, {sae}, 171 + +// CHECK: vgetmantpd zmm2, zmm26, 123 +// CHECK: encoding: [0x62,0x93,0xfd,0x48,0x26,0xd2,0x7b] + vgetmantpd zmm2, zmm26, 123 + +// CHECK: vgetmantpd zmm2, zmm26, {sae}, 123 +// CHECK: encoding: [0x62,0x93,0xfd,0x18,0x26,0xd2,0x7b] + vgetmantpd zmm2, zmm26, {sae}, 123 + +// CHECK: vgetmantpd zmm2, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x26,0x11,0x7b] + vgetmantpd zmm2, zmmword ptr [rcx], 123 + +// CHECK: vgetmantpd zmm2, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0xfd,0x48,0x26,0x94,0xf0,0x23,0x01,0x00,0x00,0x7b] + vgetmantpd zmm2, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vgetmantpd zmm2, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x26,0x11,0x7b] + vgetmantpd zmm2, qword ptr [rcx]{1to8}, 123 + +// CHECK: vgetmantpd zmm2, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x26,0x52,0x7f,0x7b] + vgetmantpd zmm2, zmmword ptr [rdx + 8128], 123 + +// CHECK: vgetmantpd zmm2, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x26,0x92,0x00,0x20,0x00,0x00,0x7b] + vgetmantpd zmm2, zmmword ptr [rdx + 8192], 123 + +// CHECK: vgetmantpd zmm2, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x26,0x52,0x80,0x7b] + vgetmantpd zmm2, zmmword ptr [rdx - 8192], 123 + +// CHECK: vgetmantpd zmm2, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x26,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vgetmantpd zmm2, zmmword ptr [rdx - 8256], 123 + +// CHECK: vgetmantpd zmm2, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x26,0x52,0x7f,0x7b] + vgetmantpd zmm2, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vgetmantpd zmm2, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x26,0x92,0x00,0x04,0x00,0x00,0x7b] + vgetmantpd zmm2, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vgetmantpd zmm2, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x26,0x52,0x80,0x7b] + vgetmantpd zmm2, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vgetmantpd zmm2, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x26,0x92,0xf8,0xfb,0xff,0xff,0x7b] + vgetmantpd zmm2, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vgetmantps zmm22, zmm28, 171 +// CHECK: encoding: [0x62,0x83,0x7d,0x48,0x26,0xf4,0xab] + vgetmantps zmm22, zmm28, 171 + +// CHECK: vgetmantps zmm22 {k3}, zmm28, 171 +// CHECK: encoding: [0x62,0x83,0x7d,0x4b,0x26,0xf4,0xab] + vgetmantps zmm22 {k3}, zmm28, 171 + +// CHECK: vgetmantps zmm22 {k3} {z}, zmm28, 171 +// CHECK: encoding: [0x62,0x83,0x7d,0xcb,0x26,0xf4,0xab] + vgetmantps zmm22 {k3} {z}, zmm28, 171 + +// CHECK: vgetmantps zmm22, zmm28, {sae}, 171 +// CHECK: encoding: [0x62,0x83,0x7d,0x18,0x26,0xf4,0xab] + vgetmantps zmm22, zmm28, {sae}, 171 + +// CHECK: vgetmantps zmm22, zmm28, 123 +// CHECK: encoding: [0x62,0x83,0x7d,0x48,0x26,0xf4,0x7b] + vgetmantps zmm22, zmm28, 123 + +// CHECK: vgetmantps zmm22, zmm28, {sae}, 123 +// CHECK: encoding: [0x62,0x83,0x7d,0x18,0x26,0xf4,0x7b] + vgetmantps zmm22, zmm28, {sae}, 123 + +// CHECK: vgetmantps zmm22, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x26,0x31,0x7b] + vgetmantps zmm22, zmmword ptr [rcx], 123 + +// CHECK: vgetmantps zmm22, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xa3,0x7d,0x48,0x26,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vgetmantps zmm22, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vgetmantps zmm22, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x58,0x26,0x31,0x7b] + vgetmantps zmm22, dword ptr [rcx]{1to16}, 123 + +// CHECK: vgetmantps zmm22, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x26,0x72,0x7f,0x7b] + vgetmantps zmm22, zmmword ptr [rdx + 8128], 123 + +// CHECK: vgetmantps zmm22, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x26,0xb2,0x00,0x20,0x00,0x00,0x7b] + vgetmantps zmm22, zmmword ptr [rdx + 8192], 123 + +// CHECK: vgetmantps zmm22, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x26,0x72,0x80,0x7b] + vgetmantps zmm22, zmmword ptr [rdx - 8192], 123 + +// CHECK: vgetmantps zmm22, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x26,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vgetmantps zmm22, zmmword ptr [rdx - 8256], 123 + +// CHECK: vgetmantps zmm22, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x58,0x26,0x72,0x7f,0x7b] + vgetmantps zmm22, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vgetmantps zmm22, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x58,0x26,0xb2,0x00,0x02,0x00,0x00,0x7b] + vgetmantps zmm22, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vgetmantps zmm22, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x58,0x26,0x72,0x80,0x7b] + vgetmantps zmm22, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vgetmantps zmm22, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x58,0x26,0xb2,0xfc,0xfd,0xff,0xff,0x7b] + vgetmantps zmm22, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vgetmantsd xmm3, xmm27, xmm8, 171 +// CHECK: encoding: [0x62,0xd3,0xa5,0x00,0x27,0xd8,0xab] + vgetmantsd xmm3, xmm27, xmm8, 171 + +// CHECK: vgetmantsd xmm3 {k6}, xmm27, xmm8, 171 +// CHECK: encoding: [0x62,0xd3,0xa5,0x06,0x27,0xd8,0xab] + vgetmantsd xmm3 {k6}, xmm27, xmm8, 171 + +// CHECK: vgetmantsd xmm3 {k6} {z}, xmm27, xmm8, 171 +// CHECK: encoding: [0x62,0xd3,0xa5,0x86,0x27,0xd8,0xab] + vgetmantsd xmm3 {k6} {z}, xmm27, xmm8, 171 + +// CHECK: vgetmantsd xmm3, xmm27, xmm8, {sae}, 171 +// CHECK: encoding: [0x62,0xd3,0xa5,0x10,0x27,0xd8,0xab] + vgetmantsd xmm3, xmm27, xmm8, {sae}, 171 + +// CHECK: vgetmantsd xmm3, xmm27, xmm8, 123 +// CHECK: encoding: [0x62,0xd3,0xa5,0x00,0x27,0xd8,0x7b] + vgetmantsd xmm3, xmm27, xmm8, 123 + +// CHECK: vgetmantsd xmm3, xmm27, xmm8, {sae}, 123 +// CHECK: encoding: [0x62,0xd3,0xa5,0x10,0x27,0xd8,0x7b] + vgetmantsd xmm3, xmm27, xmm8, {sae}, 123 + +// CHECK: vgetmantsd xmm3, xmm27, qword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0xa5,0x00,0x27,0x19,0x7b] + vgetmantsd xmm3, xmm27, qword ptr [rcx], 123 + +// CHECK: vgetmantsd xmm3, xmm27, qword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0xa5,0x00,0x27,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vgetmantsd xmm3, xmm27, qword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vgetmantsd xmm3, xmm27, qword ptr [rdx + 1016], 123 +// CHECK: encoding: [0x62,0xf3,0xa5,0x00,0x27,0x5a,0x7f,0x7b] + vgetmantsd xmm3, xmm27, qword ptr [rdx + 1016], 123 + +// CHECK: vgetmantsd xmm3, xmm27, qword ptr [rdx + 1024], 123 +// CHECK: encoding: [0x62,0xf3,0xa5,0x00,0x27,0x9a,0x00,0x04,0x00,0x00,0x7b] + vgetmantsd xmm3, xmm27, qword ptr [rdx + 1024], 123 + +// CHECK: vgetmantsd xmm3, xmm27, qword ptr [rdx - 1024], 123 +// CHECK: encoding: [0x62,0xf3,0xa5,0x00,0x27,0x5a,0x80,0x7b] + vgetmantsd xmm3, xmm27, qword ptr [rdx - 1024], 123 + +// CHECK: vgetmantsd xmm3, xmm27, qword ptr [rdx - 1032], 123 +// CHECK: encoding: [0x62,0xf3,0xa5,0x00,0x27,0x9a,0xf8,0xfb,0xff,0xff,0x7b] + vgetmantsd xmm3, xmm27, qword ptr [rdx - 1032], 123 + +// CHECK: vgetmantss xmm3, xmm2, xmm12, 171 +// CHECK: encoding: [0x62,0xd3,0x6d,0x08,0x27,0xdc,0xab] + vgetmantss xmm3, xmm2, xmm12, 171 + +// CHECK: vgetmantss xmm3 {k7}, xmm2, xmm12, 171 +// CHECK: encoding: [0x62,0xd3,0x6d,0x0f,0x27,0xdc,0xab] + vgetmantss xmm3 {k7}, xmm2, xmm12, 171 + +// CHECK: vgetmantss xmm3 {k7} {z}, xmm2, xmm12, 171 +// CHECK: encoding: [0x62,0xd3,0x6d,0x8f,0x27,0xdc,0xab] + vgetmantss xmm3 {k7} {z}, xmm2, xmm12, 171 + +// CHECK: vgetmantss xmm3, xmm2, xmm12, {sae}, 171 +// CHECK: encoding: [0x62,0xd3,0x6d,0x18,0x27,0xdc,0xab] + vgetmantss xmm3, xmm2, xmm12, {sae}, 171 + +// CHECK: vgetmantss xmm3, xmm2, xmm12, 123 +// CHECK: encoding: [0x62,0xd3,0x6d,0x08,0x27,0xdc,0x7b] + vgetmantss xmm3, xmm2, xmm12, 123 + +// CHECK: vgetmantss xmm3, xmm2, xmm12, {sae}, 123 +// CHECK: encoding: [0x62,0xd3,0x6d,0x18,0x27,0xdc,0x7b] + vgetmantss xmm3, xmm2, xmm12, {sae}, 123 + +// CHECK: vgetmantss xmm3, xmm2, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x6d,0x08,0x27,0x19,0x7b] + vgetmantss xmm3, xmm2, dword ptr [rcx], 123 + +// CHECK: vgetmantss xmm3, xmm2, dword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0x6d,0x08,0x27,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vgetmantss xmm3, xmm2, dword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vgetmantss xmm3, xmm2, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0xf3,0x6d,0x08,0x27,0x5a,0x7f,0x7b] + vgetmantss xmm3, xmm2, dword ptr [rdx + 508], 123 + +// CHECK: vgetmantss xmm3, xmm2, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0xf3,0x6d,0x08,0x27,0x9a,0x00,0x02,0x00,0x00,0x7b] + vgetmantss xmm3, xmm2, dword ptr [rdx + 512], 123 +// CHECK: vgetmantss xmm3, xmm2, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0xf3,0x6d,0x08,0x27,0x5a,0x80,0x7b] + vgetmantss xmm3, xmm2, dword ptr [rdx - 512], 123 + +// CHECK: vgetmantss xmm3, xmm2, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0xf3,0x6d,0x08,0x27,0x9a,0xfc,0xfd,0xff,0xff,0x7b] + vgetmantss xmm3, xmm2, dword ptr [rdx - 516], 123 + +// CHECK: vinsertf32x4 zmm11, zmm26, xmm3, 171 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x18,0xdb,0xab] + vinsertf32x4 zmm11, zmm26, xmm3, 171 + +// CHECK: vinsertf32x4 zmm11 {k1}, zmm26, xmm3, 171 +// CHECK: encoding: [0x62,0x73,0x2d,0x41,0x18,0xdb,0xab] + vinsertf32x4 zmm11 {k1}, zmm26, xmm3, 171 + +// CHECK: vinsertf32x4 zmm11 {k1} {z}, zmm26, xmm3, 171 +// CHECK: encoding: [0x62,0x73,0x2d,0xc1,0x18,0xdb,0xab] + vinsertf32x4 zmm11 {k1} {z}, zmm26, xmm3, 171 + +// CHECK: vinsertf32x4 zmm11, zmm26, xmm3, 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x18,0xdb,0x7b] + vinsertf32x4 zmm11, zmm26, xmm3, 123 + +// CHECK: vinsertf32x4 zmm11, zmm26, xmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x18,0x19,0x7b] + vinsertf32x4 zmm11, zmm26, xmmword ptr [rcx], 123 + +// CHECK: vinsertf32x4 zmm11, zmm26, xmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0x2d,0x40,0x18,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vinsertf32x4 zmm11, zmm26, xmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vinsertf32x4 zmm11, zmm26, xmmword ptr [rdx + 2032], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x18,0x5a,0x7f,0x7b] + vinsertf32x4 zmm11, zmm26, xmmword ptr [rdx + 2032], 123 + +// CHECK: vinsertf32x4 zmm11, zmm26, xmmword ptr [rdx + 2048], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x18,0x9a,0x00,0x08,0x00,0x00,0x7b] + vinsertf32x4 zmm11, zmm26, xmmword ptr [rdx + 2048], 123 + +// CHECK: vinsertf32x4 zmm11, zmm26, xmmword ptr [rdx - 2048], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x18,0x5a,0x80,0x7b] + vinsertf32x4 zmm11, zmm26, xmmword ptr [rdx - 2048], 123 + +// CHECK: vinsertf32x4 zmm11, zmm26, xmmword ptr [rdx - 2064], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x18,0x9a,0xf0,0xf7,0xff,0xff,0x7b] + vinsertf32x4 zmm11, zmm26, xmmword ptr [rdx - 2064], 123 + +// CHECK: vinsertf64x4 zmm1, zmm5, ymm7, 171 +// CHECK: encoding: [0x62,0xf3,0xd5,0x48,0x1a,0xcf,0xab] + vinsertf64x4 zmm1, zmm5, ymm7, 171 + +// CHECK: vinsertf64x4 zmm1 {k1}, zmm5, ymm7, 171 +// CHECK: encoding: [0x62,0xf3,0xd5,0x49,0x1a,0xcf,0xab] + vinsertf64x4 zmm1 {k1}, zmm5, ymm7, 171 + +// CHECK: vinsertf64x4 zmm1 {k1} {z}, zmm5, ymm7, 171 +// CHECK: encoding: [0x62,0xf3,0xd5,0xc9,0x1a,0xcf,0xab] + vinsertf64x4 zmm1 {k1} {z}, zmm5, ymm7, 171 + +// CHECK: vinsertf64x4 zmm1, zmm5, ymm7, 123 +// CHECK: encoding: [0x62,0xf3,0xd5,0x48,0x1a,0xcf,0x7b] + vinsertf64x4 zmm1, zmm5, ymm7, 123 + +// CHECK: vinsertf64x4 zmm1, zmm5, ymmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0xd5,0x48,0x1a,0x09,0x7b] + vinsertf64x4 zmm1, zmm5, ymmword ptr [rcx], 123 + +// CHECK: vinsertf64x4 zmm1, zmm5, ymmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0xd5,0x48,0x1a,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vinsertf64x4 zmm1, zmm5, ymmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vinsertf64x4 zmm1, zmm5, ymmword ptr [rdx + 4064], 123 +// CHECK: encoding: [0x62,0xf3,0xd5,0x48,0x1a,0x4a,0x7f,0x7b] + vinsertf64x4 zmm1, zmm5, ymmword ptr [rdx + 4064], 123 + +// CHECK: vinsertf64x4 zmm1, zmm5, ymmword ptr [rdx + 4096], 123 +// CHECK: encoding: [0x62,0xf3,0xd5,0x48,0x1a,0x8a,0x00,0x10,0x00,0x00,0x7b] + vinsertf64x4 zmm1, zmm5, ymmword ptr [rdx + 4096], 123 + +// CHECK: vinsertf64x4 zmm1, zmm5, ymmword ptr [rdx - 4096], 123 +// CHECK: encoding: [0x62,0xf3,0xd5,0x48,0x1a,0x4a,0x80,0x7b] + vinsertf64x4 zmm1, zmm5, ymmword ptr [rdx - 4096], 123 + +// CHECK: vinsertf64x4 zmm1, zmm5, ymmword ptr [rdx - 4128], 123 +// CHECK: encoding: [0x62,0xf3,0xd5,0x48,0x1a,0x8a,0xe0,0xef,0xff,0xff,0x7b] + vinsertf64x4 zmm1, zmm5, ymmword ptr [rdx - 4128], 123 + +// CHECK: vinserti32x4 zmm17, zmm13, xmm10, 171 +// CHECK: encoding: [0x62,0xc3,0x15,0x48,0x38,0xca,0xab] + vinserti32x4 zmm17, zmm13, xmm10, 171 + +// CHECK: vinserti32x4 zmm17 {k6}, zmm13, xmm10, 171 +// CHECK: encoding: [0x62,0xc3,0x15,0x4e,0x38,0xca,0xab] + vinserti32x4 zmm17 {k6}, zmm13, xmm10, 171 + +// CHECK: vinserti32x4 zmm17 {k6} {z}, zmm13, xmm10, 171 +// CHECK: encoding: [0x62,0xc3,0x15,0xce,0x38,0xca,0xab] + vinserti32x4 zmm17 {k6} {z}, zmm13, xmm10, 171 + +// CHECK: vinserti32x4 zmm17, zmm13, xmm10, 123 +// CHECK: encoding: [0x62,0xc3,0x15,0x48,0x38,0xca,0x7b] + vinserti32x4 zmm17, zmm13, xmm10, 123 + +// CHECK: vinserti32x4 zmm17, zmm13, xmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0x15,0x48,0x38,0x09,0x7b] + vinserti32x4 zmm17, zmm13, xmmword ptr [rcx], 123 + +// CHECK: vinserti32x4 zmm17, zmm13, xmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xa3,0x15,0x48,0x38,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vinserti32x4 zmm17, zmm13, xmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vinserti32x4 zmm17, zmm13, xmmword ptr [rdx + 2032], 123 +// CHECK: encoding: [0x62,0xe3,0x15,0x48,0x38,0x4a,0x7f,0x7b] + vinserti32x4 zmm17, zmm13, xmmword ptr [rdx + 2032], 123 + +// CHECK: vinserti32x4 zmm17, zmm13, xmmword ptr [rdx + 2048], 123 +// CHECK: encoding: [0x62,0xe3,0x15,0x48,0x38,0x8a,0x00,0x08,0x00,0x00,0x7b] + vinserti32x4 zmm17, zmm13, xmmword ptr [rdx + 2048], 123 + +// CHECK: vinserti32x4 zmm17, zmm13, xmmword ptr [rdx - 2048], 123 +// CHECK: encoding: [0x62,0xe3,0x15,0x48,0x38,0x4a,0x80,0x7b] + vinserti32x4 zmm17, zmm13, xmmword ptr [rdx - 2048], 123 + +// CHECK: vinserti32x4 zmm17, zmm13, xmmword ptr [rdx - 2064], 123 +// CHECK: encoding: [0x62,0xe3,0x15,0x48,0x38,0x8a,0xf0,0xf7,0xff,0xff,0x7b] + vinserti32x4 zmm17, zmm13, xmmword ptr [rdx - 2064], 123 + +// CHECK: vinserti64x4 zmm4, zmm25, ymm4, 171 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x3a,0xe4,0xab] + vinserti64x4 zmm4, zmm25, ymm4, 171 + +// CHECK: vinserti64x4 zmm4 {k1}, zmm25, ymm4, 171 +// CHECK: encoding: [0x62,0xf3,0xb5,0x41,0x3a,0xe4,0xab] + vinserti64x4 zmm4 {k1}, zmm25, ymm4, 171 + +// CHECK: vinserti64x4 zmm4 {k1} {z}, zmm25, ymm4, 171 +// CHECK: encoding: [0x62,0xf3,0xb5,0xc1,0x3a,0xe4,0xab] + vinserti64x4 zmm4 {k1} {z}, zmm25, ymm4, 171 + +// CHECK: vinserti64x4 zmm4, zmm25, ymm4, 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x3a,0xe4,0x7b] + vinserti64x4 zmm4, zmm25, ymm4, 123 + +// CHECK: vinserti64x4 zmm4, zmm25, ymmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x3a,0x21,0x7b] + vinserti64x4 zmm4, zmm25, ymmword ptr [rcx], 123 + +// CHECK: vinserti64x4 zmm4, zmm25, ymmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0xb5,0x40,0x3a,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vinserti64x4 zmm4, zmm25, ymmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vinserti64x4 zmm4, zmm25, ymmword ptr [rdx + 4064], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x3a,0x62,0x7f,0x7b] + vinserti64x4 zmm4, zmm25, ymmword ptr [rdx + 4064], 123 + +// CHECK: vinserti64x4 zmm4, zmm25, ymmword ptr [rdx + 4096], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x3a,0xa2,0x00,0x10,0x00,0x00,0x7b] + vinserti64x4 zmm4, zmm25, ymmword ptr [rdx + 4096], 123 + +// CHECK: vinserti64x4 zmm4, zmm25, ymmword ptr [rdx - 4096], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x3a,0x62,0x80,0x7b] + vinserti64x4 zmm4, zmm25, ymmword ptr [rdx - 4096], 123 + +// CHECK: vinserti64x4 zmm4, zmm25, ymmword ptr [rdx - 4128], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x3a,0xa2,0xe0,0xef,0xff,0xff,0x7b] + vinserti64x4 zmm4, zmm25, ymmword ptr [rdx - 4128], 123 + +// CHECK: vinsertps xmm30, xmm17, xmm5, 171 +// CHECK: encoding: [0x62,0x63,0x75,0x00,0x21,0xf5,0xab] + vinsertps xmm30, xmm17, xmm5, 171 + +// CHECK: vinsertps xmm30, xmm17, xmm5, 123 +// CHECK: encoding: [0x62,0x63,0x75,0x00,0x21,0xf5,0x7b] + vinsertps xmm30, xmm17, xmm5, 123 + +// CHECK: vinsertps xmm30, xmm17, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x75,0x00,0x21,0x31,0x7b] + vinsertps xmm30, xmm17, dword ptr [rcx], 123 + +// CHECK: vinsertps xmm30, xmm17, dword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x23,0x75,0x00,0x21,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vinsertps xmm30, xmm17, dword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vinsertps xmm30, xmm17, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0x63,0x75,0x00,0x21,0x72,0x7f,0x7b] + vinsertps xmm30, xmm17, dword ptr [rdx + 508], 123 + +// CHECK: vinsertps xmm30, xmm17, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0x63,0x75,0x00,0x21,0xb2,0x00,0x02,0x00,0x00,0x7b] + vinsertps xmm30, xmm17, dword ptr [rdx + 512], 123 + +// CHECK: vinsertps xmm30, xmm17, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0x63,0x75,0x00,0x21,0x72,0x80,0x7b] + vinsertps xmm30, xmm17, dword ptr [rdx - 512], 123 + +// CHECK: vinsertps xmm30, xmm17, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0x63,0x75,0x00,0x21,0xb2,0xfc,0xfd,0xff,0xff,0x7b] + vinsertps xmm30, xmm17, dword ptr [rdx - 516], 123 + +// CHECK: vmaxpd zmm30, zmm28, zmm20 +// CHECK: encoding: [0x62,0x21,0x9d,0x40,0x5f,0xf4] + vmaxpd zmm30, zmm28, zmm20 + +// CHECK: vmaxpd zmm30 {k1}, zmm28, zmm20 +// CHECK: encoding: [0x62,0x21,0x9d,0x41,0x5f,0xf4] + vmaxpd zmm30 {k1}, zmm28, zmm20 + +// CHECK: vmaxpd zmm30 {k1} {z}, zmm28, zmm20 +// CHECK: encoding: [0x62,0x21,0x9d,0xc1,0x5f,0xf4] + vmaxpd zmm30 {k1} {z}, zmm28, zmm20 + +// CHECK: vmaxpd zmm30, zmm28, zmm20, {sae} +// CHECK: encoding: [0x62,0x21,0x9d,0x10,0x5f,0xf4] + vmaxpd zmm30, zmm28, zmm20, {sae} + +// CHECK: vmaxpd zmm30, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0x5f,0x31] + vmaxpd zmm30, zmm28, zmmword ptr [rcx] + +// CHECK: vmaxpd zmm30, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x9d,0x40,0x5f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vmaxpd zmm30, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmaxpd zmm30, zmm28, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0x5f,0x31] + vmaxpd zmm30, zmm28, qword ptr [rcx]{1to8} + +// CHECK: vmaxpd zmm30, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0x5f,0x72,0x7f] + vmaxpd zmm30, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vmaxpd zmm30, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0x5f,0xb2,0x00,0x20,0x00,0x00] + vmaxpd zmm30, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vmaxpd zmm30, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0x5f,0x72,0x80] + vmaxpd zmm30, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vmaxpd zmm30, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0x5f,0xb2,0xc0,0xdf,0xff,0xff] + vmaxpd zmm30, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vmaxpd zmm30, zmm28, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0x5f,0x72,0x7f] + vmaxpd zmm30, zmm28, qword ptr [rdx + 1016]{1to8} + +// CHECK: vmaxpd zmm30, zmm28, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0x5f,0xb2,0x00,0x04,0x00,0x00] + vmaxpd zmm30, zmm28, qword ptr [rdx + 1024]{1to8} + +// CHECK: vmaxpd zmm30, zmm28, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0x5f,0x72,0x80] + vmaxpd zmm30, zmm28, qword ptr [rdx - 1024]{1to8} + +// CHECK: vmaxpd zmm30, zmm28, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0x5f,0xb2,0xf8,0xfb,0xff,0xff] + vmaxpd zmm30, zmm28, qword ptr [rdx - 1032]{1to8} + +// CHECK: vmaxps zmm25, zmm6, zmm20 +// CHECK: encoding: [0x62,0x21,0x4c,0x48,0x5f,0xcc] + vmaxps zmm25, zmm6, zmm20 + +// CHECK: vmaxps zmm25 {k1}, zmm6, zmm20 +// CHECK: encoding: [0x62,0x21,0x4c,0x49,0x5f,0xcc] + vmaxps zmm25 {k1}, zmm6, zmm20 + +// CHECK: vmaxps zmm25 {k1} {z}, zmm6, zmm20 +// CHECK: encoding: [0x62,0x21,0x4c,0xc9,0x5f,0xcc] + vmaxps zmm25 {k1} {z}, zmm6, zmm20 + +// CHECK: vmaxps zmm25, zmm6, zmm20, {sae} +// CHECK: encoding: [0x62,0x21,0x4c,0x18,0x5f,0xcc] + vmaxps zmm25, zmm6, zmm20, {sae} + +// CHECK: vmaxps zmm25, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x4c,0x48,0x5f,0x09] + vmaxps zmm25, zmm6, zmmword ptr [rcx] + +// CHECK: vmaxps zmm25, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x4c,0x48,0x5f,0x8c,0xf0,0x23,0x01,0x00,0x00] + vmaxps zmm25, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmaxps zmm25, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x4c,0x58,0x5f,0x09] + vmaxps zmm25, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vmaxps zmm25, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x4c,0x48,0x5f,0x4a,0x7f] + vmaxps zmm25, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vmaxps zmm25, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x4c,0x48,0x5f,0x8a,0x00,0x20,0x00,0x00] + vmaxps zmm25, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vmaxps zmm25, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x4c,0x48,0x5f,0x4a,0x80] + vmaxps zmm25, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vmaxps zmm25, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x4c,0x48,0x5f,0x8a,0xc0,0xdf,0xff,0xff] + vmaxps zmm25, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vmaxps zmm25, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x4c,0x58,0x5f,0x4a,0x7f] + vmaxps zmm25, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vmaxps zmm25, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x4c,0x58,0x5f,0x8a,0x00,0x02,0x00,0x00] + vmaxps zmm25, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vmaxps zmm25, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x4c,0x58,0x5f,0x4a,0x80] + vmaxps zmm25, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vmaxps zmm25, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x4c,0x58,0x5f,0x8a,0xfc,0xfd,0xff,0xff] + vmaxps zmm25, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vmaxsd xmm20, xmm19, xmm25 +// CHECK: encoding: [0x62,0x81,0xe7,0x00,0x5f,0xe1] + vmaxsd xmm20, xmm19, xmm25 + +// CHECK: vmaxsd xmm20 {k3}, xmm19, xmm25 +// CHECK: encoding: [0x62,0x81,0xe7,0x03,0x5f,0xe1] + vmaxsd xmm20 {k3}, xmm19, xmm25 + +// CHECK: vmaxsd xmm20 {k3} {z}, xmm19, xmm25 +// CHECK: encoding: [0x62,0x81,0xe7,0x83,0x5f,0xe1] + vmaxsd xmm20 {k3} {z}, xmm19, xmm25 + +// CHECK: vmaxsd xmm20, xmm19, xmm25, {sae} +// CHECK: encoding: [0x62,0x81,0xe7,0x10,0x5f,0xe1] + vmaxsd xmm20, xmm19, xmm25, {sae} + +// CHECK: vmaxsd xmm20, xmm19, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xe7,0x00,0x5f,0x21] + vmaxsd xmm20, xmm19, qword ptr [rcx] + +// CHECK: vmaxsd xmm20, xmm19, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xe7,0x00,0x5f,0xa4,0xf0,0x23,0x01,0x00,0x00] + vmaxsd xmm20, xmm19, qword ptr [rax + 8*r14 + 291] + +// CHECK: vmaxsd xmm20, xmm19, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xe7,0x00,0x5f,0x62,0x7f] + vmaxsd xmm20, xmm19, qword ptr [rdx + 1016] + +// CHECK: vmaxsd xmm20, xmm19, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xe7,0x00,0x5f,0xa2,0x00,0x04,0x00,0x00] + vmaxsd xmm20, xmm19, qword ptr [rdx + 1024] + +// CHECK: vmaxsd xmm20, xmm19, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xe7,0x00,0x5f,0x62,0x80] + vmaxsd xmm20, xmm19, qword ptr [rdx - 1024] + +// CHECK: vmaxsd xmm20, xmm19, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xe7,0x00,0x5f,0xa2,0xf8,0xfb,0xff,0xff] + vmaxsd xmm20, xmm19, qword ptr [rdx - 1032] + +// CHECK: vmaxss xmm8, xmm4, xmm6 +// CHECK: encoding: [0xc5,0x5a,0x5f,0xc6] + vmaxss xmm8, xmm4, xmm6 + +// CHECK: vmaxss xmm8 {k4}, xmm4, xmm6 +// CHECK: encoding: [0x62,0x71,0x5e,0x0c,0x5f,0xc6] + vmaxss xmm8 {k4}, xmm4, xmm6 + +// CHECK: vmaxss xmm8 {k4} {z}, xmm4, xmm6 +// CHECK: encoding: [0x62,0x71,0x5e,0x8c,0x5f,0xc6] + vmaxss xmm8 {k4} {z}, xmm4, xmm6 + +// CHECK: vmaxss xmm8, xmm4, xmm6, {sae} +// CHECK: encoding: [0x62,0x71,0x5e,0x18,0x5f,0xc6] + vmaxss xmm8, xmm4, xmm6, {sae} + +// CHECK: vmaxss xmm8, xmm4, dword ptr [rcx] +// CHECK: encoding: [0xc5,0x5a,0x5f,0x01] + vmaxss xmm8, xmm4, dword ptr [rcx] + +// CHECK: vmaxss xmm8, xmm4, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0x21,0x5a,0x5f,0x84,0xf0,0x23,0x01,0x00,0x00] + vmaxss xmm8, xmm4, dword ptr [rax + 8*r14 + 291] + +// CHECK: vmaxss xmm8, xmm4, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0x5a,0x5f,0x82,0xfc,0x01,0x00,0x00] + vmaxss xmm8, xmm4, dword ptr [rdx + 508] + +// CHECK: vmaxss xmm8, xmm4, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0x5a,0x5f,0x82,0x00,0x02,0x00,0x00] + vmaxss xmm8, xmm4, dword ptr [rdx + 512] + +// CHECK: vmaxss xmm8, xmm4, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0x5a,0x5f,0x82,0x00,0xfe,0xff,0xff] + vmaxss xmm8, xmm4, dword ptr [rdx - 512] + +// CHECK: vmaxss xmm8, xmm4, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0x5a,0x5f,0x82,0xfc,0xfd,0xff,0xff] + vmaxss xmm8, xmm4, dword ptr [rdx - 516] + +// CHECK: vminpd zmm6, zmm6, zmm22 +// CHECK: encoding: [0x62,0xb1,0xcd,0x48,0x5d,0xf6] + vminpd zmm6, zmm6, zmm22 + +// CHECK: vminpd zmm6 {k7}, zmm6, zmm22 +// CHECK: encoding: [0x62,0xb1,0xcd,0x4f,0x5d,0xf6] + vminpd zmm6 {k7}, zmm6, zmm22 + +// CHECK: vminpd zmm6 {k7} {z}, zmm6, zmm22 +// CHECK: encoding: [0x62,0xb1,0xcd,0xcf,0x5d,0xf6] + vminpd zmm6 {k7} {z}, zmm6, zmm22 + +// CHECK: vminpd zmm6, zmm6, zmm22, {sae} +// CHECK: encoding: [0x62,0xb1,0xcd,0x18,0x5d,0xf6] + vminpd zmm6, zmm6, zmm22, {sae} + +// CHECK: vminpd zmm6, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x5d,0x31] + vminpd zmm6, zmm6, zmmword ptr [rcx] + +// CHECK: vminpd zmm6, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xcd,0x48,0x5d,0xb4,0xf0,0x23,0x01,0x00,0x00] + vminpd zmm6, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vminpd zmm6, zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x5d,0x31] + vminpd zmm6, zmm6, qword ptr [rcx]{1to8} + +// CHECK: vminpd zmm6, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x5d,0x72,0x7f] + vminpd zmm6, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vminpd zmm6, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x5d,0xb2,0x00,0x20,0x00,0x00] + vminpd zmm6, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vminpd zmm6, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x5d,0x72,0x80] + vminpd zmm6, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vminpd zmm6, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x5d,0xb2,0xc0,0xdf,0xff,0xff] + vminpd zmm6, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vminpd zmm6, zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x5d,0x72,0x7f] + vminpd zmm6, zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vminpd zmm6, zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x5d,0xb2,0x00,0x04,0x00,0x00] + vminpd zmm6, zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vminpd zmm6, zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x5d,0x72,0x80] + vminpd zmm6, zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vminpd zmm6, zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x5d,0xb2,0xf8,0xfb,0xff,0xff] + vminpd zmm6, zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vminps zmm3, zmm3, zmm7 +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x5d,0xdf] + vminps zmm3, zmm3, zmm7 + +// CHECK: vminps zmm3 {k3}, zmm3, zmm7 +// CHECK: encoding: [0x62,0xf1,0x64,0x4b,0x5d,0xdf] + vminps zmm3 {k3}, zmm3, zmm7 + +// CHECK: vminps zmm3 {k3} {z}, zmm3, zmm7 +// CHECK: encoding: [0x62,0xf1,0x64,0xcb,0x5d,0xdf] + vminps zmm3 {k3} {z}, zmm3, zmm7 + +// CHECK: vminps zmm3, zmm3, zmm7, {sae} +// CHECK: encoding: [0x62,0xf1,0x64,0x18,0x5d,0xdf] + vminps zmm3, zmm3, zmm7, {sae} + +// CHECK: vminps zmm3, zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x5d,0x19] + vminps zmm3, zmm3, zmmword ptr [rcx] + +// CHECK: vminps zmm3, zmm3, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x64,0x48,0x5d,0x9c,0xf0,0x23,0x01,0x00,0x00] + vminps zmm3, zmm3, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vminps zmm3, zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x5d,0x19] + vminps zmm3, zmm3, dword ptr [rcx]{1to16} + +// CHECK: vminps zmm3, zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x5d,0x5a,0x7f] + vminps zmm3, zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vminps zmm3, zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x5d,0x9a,0x00,0x20,0x00,0x00] + vminps zmm3, zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vminps zmm3, zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x5d,0x5a,0x80] + vminps zmm3, zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vminps zmm3, zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x5d,0x9a,0xc0,0xdf,0xff,0xff] + vminps zmm3, zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vminps zmm3, zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x5d,0x5a,0x7f] + vminps zmm3, zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vminps zmm3, zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x5d,0x9a,0x00,0x02,0x00,0x00] + vminps zmm3, zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vminps zmm3, zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x5d,0x5a,0x80] + vminps zmm3, zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vminps zmm3, zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x5d,0x9a,0xfc,0xfd,0xff,0xff] + vminps zmm3, zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vminsd xmm5, xmm25, xmm26 +// CHECK: encoding: [0x62,0x91,0xb7,0x00,0x5d,0xea] + vminsd xmm5, xmm25, xmm26 + +// CHECK: vminsd xmm5 {k3}, xmm25, xmm26 +// CHECK: encoding: [0x62,0x91,0xb7,0x03,0x5d,0xea] + vminsd xmm5 {k3}, xmm25, xmm26 + +// CHECK: vminsd xmm5 {k3} {z}, xmm25, xmm26 +// CHECK: encoding: [0x62,0x91,0xb7,0x83,0x5d,0xea] + vminsd xmm5 {k3} {z}, xmm25, xmm26 + +// CHECK: vminsd xmm5, xmm25, xmm26, {sae} +// CHECK: encoding: [0x62,0x91,0xb7,0x10,0x5d,0xea] + vminsd xmm5, xmm25, xmm26, {sae} + +// CHECK: vminsd xmm5, xmm25, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xb7,0x00,0x5d,0x29] + vminsd xmm5, xmm25, qword ptr [rcx] + +// CHECK: vminsd xmm5, xmm25, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xb7,0x00,0x5d,0xac,0xf0,0x23,0x01,0x00,0x00] + vminsd xmm5, xmm25, qword ptr [rax + 8*r14 + 291] + +// CHECK: vminsd xmm5, xmm25, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0xb7,0x00,0x5d,0x6a,0x7f] + vminsd xmm5, xmm25, qword ptr [rdx + 1016] + +// CHECK: vminsd xmm5, xmm25, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0xb7,0x00,0x5d,0xaa,0x00,0x04,0x00,0x00] + vminsd xmm5, xmm25, qword ptr [rdx + 1024] + +// CHECK: vminsd xmm5, xmm25, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0xb7,0x00,0x5d,0x6a,0x80] + vminsd xmm5, xmm25, qword ptr [rdx - 1024] + +// CHECK: vminsd xmm5, xmm25, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0xb7,0x00,0x5d,0xaa,0xf8,0xfb,0xff,0xff] + vminsd xmm5, xmm25, qword ptr [rdx - 1032] + +// CHECK: vminss xmm10, xmm17, xmm19 +// CHECK: encoding: [0x62,0x31,0x76,0x00,0x5d,0xd3] + vminss xmm10, xmm17, xmm19 + +// CHECK: vminss xmm10 {k5}, xmm17, xmm19 +// CHECK: encoding: [0x62,0x31,0x76,0x05,0x5d,0xd3] + vminss xmm10 {k5}, xmm17, xmm19 + +// CHECK: vminss xmm10 {k5} {z}, xmm17, xmm19 +// CHECK: encoding: [0x62,0x31,0x76,0x85,0x5d,0xd3] + vminss xmm10 {k5} {z}, xmm17, xmm19 + +// CHECK: vminss xmm10, xmm17, xmm19, {sae} +// CHECK: encoding: [0x62,0x31,0x76,0x10,0x5d,0xd3] + vminss xmm10, xmm17, xmm19, {sae} + +// CHECK: vminss xmm10, xmm17, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x76,0x00,0x5d,0x11] + vminss xmm10, xmm17, dword ptr [rcx] + +// CHECK: vminss xmm10, xmm17, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x76,0x00,0x5d,0x94,0xf0,0x23,0x01,0x00,0x00] + vminss xmm10, xmm17, dword ptr [rax + 8*r14 + 291] + +// CHECK: vminss xmm10, xmm17, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0x76,0x00,0x5d,0x52,0x7f] + vminss xmm10, xmm17, dword ptr [rdx + 508] + +// CHECK: vminss xmm10, xmm17, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0x76,0x00,0x5d,0x92,0x00,0x02,0x00,0x00] + vminss xmm10, xmm17, dword ptr [rdx + 512] + +// CHECK: vminss xmm10, xmm17, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0x76,0x00,0x5d,0x52,0x80] + vminss xmm10, xmm17, dword ptr [rdx - 512] + +// CHECK: vminss xmm10, xmm17, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0x76,0x00,0x5d,0x92,0xfc,0xfd,0xff,0xff] + vminss xmm10, xmm17, dword ptr [rdx - 516] + +// CHECK: vmovapd zmm7, zmm14 +// CHECK: encoding: [0x62,0xd1,0xfd,0x48,0x28,0xfe] + vmovapd zmm7, zmm14 + +// CHECK: vmovapd zmm7 {k5}, zmm14 +// CHECK: encoding: [0x62,0xd1,0xfd,0x4d,0x28,0xfe] + vmovapd zmm7 {k5}, zmm14 + +// CHECK: vmovapd zmm7 {k5} {z}, zmm14 +// CHECK: encoding: [0x62,0xd1,0xfd,0xcd,0x28,0xfe] + vmovapd zmm7 {k5} {z}, zmm14 + +// CHECK: vmovapd zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x28,0x39] + vmovapd zmm7, zmmword ptr [rcx] + +// CHECK: vmovapd zmm7, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xfd,0x48,0x28,0xbc,0xf0,0x23,0x01,0x00,0x00] + vmovapd zmm7, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovapd zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x28,0x7a,0x7f] + vmovapd zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vmovapd zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x28,0xba,0x00,0x20,0x00,0x00] + vmovapd zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vmovapd zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x28,0x7a,0x80] + vmovapd zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vmovapd zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x28,0xba,0xc0,0xdf,0xff,0xff] + vmovapd zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vmovaps zmm5, zmm9 +// CHECK: encoding: [0x62,0xd1,0x7c,0x48,0x28,0xe9] + vmovaps zmm5, zmm9 + +// CHECK: vmovaps zmm5 {k1}, zmm9 +// CHECK: encoding: [0x62,0xd1,0x7c,0x49,0x28,0xe9] + vmovaps zmm5 {k1}, zmm9 + +// CHECK: vmovaps zmm5 {k1} {z}, zmm9 +// CHECK: encoding: [0x62,0xd1,0x7c,0xc9,0x28,0xe9] + vmovaps zmm5 {k1} {z}, zmm9 + +// CHECK: vmovaps zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x28,0x29] + vmovaps zmm5, zmmword ptr [rcx] + +// CHECK: vmovaps zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x28,0xac,0xf0,0x23,0x01,0x00,0x00] + vmovaps zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovaps zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x28,0x6a,0x7f] + vmovaps zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vmovaps zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x28,0xaa,0x00,0x20,0x00,0x00] + vmovaps zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vmovaps zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x28,0x6a,0x80] + vmovaps zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vmovaps zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x28,0xaa,0xc0,0xdf,0xff,0xff] + vmovaps zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vmovd xmm26, eax +// CHECK: encoding: [0x62,0x61,0x7d,0x08,0x6e,0xd0] + vmovd xmm26, eax + +// CHECK: vmovd xmm26, ebp +// CHECK: encoding: [0x62,0x61,0x7d,0x08,0x6e,0xd5] + vmovd xmm26, ebp + +// CHECK: vmovd xmm26, r13d +// CHECK: encoding: [0x62,0x41,0x7d,0x08,0x6e,0xd5] + vmovd xmm26, r13d + +// CHECK: vmovd xmm26, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x7d,0x08,0x6e,0x11] + vmovd xmm26, dword ptr [rcx] + +// CHECK: vmovd xmm26, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x7d,0x08,0x6e,0x94,0xf0,0x23,0x01,0x00,0x00] + vmovd xmm26, dword ptr [rax + 8*r14 + 291] + +// CHECK: vmovd xmm26, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x7d,0x08,0x6e,0x52,0x7f] + vmovd xmm26, dword ptr [rdx + 508] + +// CHECK: vmovd xmm26, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x7d,0x08,0x6e,0x92,0x00,0x02,0x00,0x00] + vmovd xmm26, dword ptr [rdx + 512] + +// CHECK: vmovd xmm26, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x7d,0x08,0x6e,0x52,0x80] + vmovd xmm26, dword ptr [rdx - 512] + +// CHECK: vmovd xmm26, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x7d,0x08,0x6e,0x92,0xfc,0xfd,0xff,0xff] + vmovd xmm26, dword ptr [rdx - 516] + +// CHECK: vmovd dword ptr [rcx], xmm5 +// CHECK: encoding: [0xc5,0xf9,0x7e,0x29] + vmovd dword ptr [rcx], xmm5 + +// CHECK: vmovd dword ptr [rax + 8*r14 + 291], xmm5 +// CHECK: encoding: [0xc4,0xa1,0x79,0x7e,0xac,0xf0,0x23,0x01,0x00,0x00] + vmovd dword ptr [rax + 8*r14 + 291], xmm5 + +// CHECK: vmovd dword ptr [rdx + 508], xmm5 +// CHECK: encoding: [0xc5,0xf9,0x7e,0xaa,0xfc,0x01,0x00,0x00] + vmovd dword ptr [rdx + 508], xmm5 + +// CHECK: vmovd dword ptr [rdx + 512], xmm5 +// CHECK: encoding: [0xc5,0xf9,0x7e,0xaa,0x00,0x02,0x00,0x00] + vmovd dword ptr [rdx + 512], xmm5 + +// CHECK: vmovd dword ptr [rdx - 512], xmm5 +// CHECK: encoding: [0xc5,0xf9,0x7e,0xaa,0x00,0xfe,0xff,0xff] + vmovd dword ptr [rdx - 512], xmm5 + +// CHECK: vmovd dword ptr [rdx - 516], xmm5 +// CHECK: encoding: [0xc5,0xf9,0x7e,0xaa,0xfc,0xfd,0xff,0xff] + vmovd dword ptr [rdx - 516], xmm5 + +// CHECK: vmovddup zmm5, zmm29 +// CHECK: encoding: [0x62,0x91,0xff,0x48,0x12,0xed] + vmovddup zmm5, zmm29 + +// CHECK: vmovddup zmm5 {k4}, zmm29 +// CHECK: encoding: [0x62,0x91,0xff,0x4c,0x12,0xed] + vmovddup zmm5 {k4}, zmm29 + +// CHECK: vmovddup zmm5 {k4} {z}, zmm29 +// CHECK: encoding: [0x62,0x91,0xff,0xcc,0x12,0xed] + vmovddup zmm5 {k4} {z}, zmm29 + +// CHECK: vmovddup zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0x29] + vmovddup zmm5, zmmword ptr [rcx] + +// CHECK: vmovddup zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xff,0x48,0x12,0xac,0xf0,0x23,0x01,0x00,0x00] + vmovddup zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovddup zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0x6a,0x7f] + vmovddup zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vmovddup zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0xaa,0x00,0x20,0x00,0x00] + vmovddup zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vmovddup zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0x6a,0x80] + vmovddup zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vmovddup zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0xaa,0xc0,0xdf,0xff,0xff] + vmovddup zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vmovdqa32 zmm22, zmm18 +// CHECK: encoding: [0x62,0xa1,0x7d,0x48,0x6f,0xf2] + vmovdqa32 zmm22, zmm18 + +// CHECK: vmovdqa32 zmm22 {k6}, zmm18 +// CHECK: encoding: [0x62,0xa1,0x7d,0x4e,0x6f,0xf2] + vmovdqa32 zmm22 {k6}, zmm18 + +// CHECK: vmovdqa32 zmm22 {k6} {z}, zmm18 +// CHECK: encoding: [0x62,0xa1,0x7d,0xce,0x6f,0xf2] + vmovdqa32 zmm22 {k6} {z}, zmm18 + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0x31] + vmovdqa32 zmm22, zmmword ptr [rcx] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x7d,0x48,0x6f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vmovdqa32 zmm22, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0x72,0x7f] + vmovdqa32 zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0xb2,0x00,0x20,0x00,0x00] + vmovdqa32 zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0x72,0x80] + vmovdqa32 zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0xb2,0xc0,0xdf,0xff,0xff] + vmovdqa32 zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vmovdqa64 zmm22, zmm12 +// CHECK: encoding: [0x62,0xc1,0xfd,0x48,0x6f,0xf4] + vmovdqa64 zmm22, zmm12 + +// CHECK: vmovdqa64 zmm22 {k5}, zmm12 +// CHECK: encoding: [0x62,0xc1,0xfd,0x4d,0x6f,0xf4] + vmovdqa64 zmm22 {k5}, zmm12 + +// CHECK: vmovdqa64 zmm22 {k5} {z}, zmm12 +// CHECK: encoding: [0x62,0xc1,0xfd,0xcd,0x6f,0xf4] + vmovdqa64 zmm22 {k5} {z}, zmm12 + +// CHECK: vmovdqa64 zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x6f,0x31] + vmovdqa64 zmm22, zmmword ptr [rcx] + +// CHECK: vmovdqa64 zmm22, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x6f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vmovdqa64 zmm22, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovdqa64 zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x6f,0x72,0x7f] + vmovdqa64 zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vmovdqa64 zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x6f,0xb2,0x00,0x20,0x00,0x00] + vmovdqa64 zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vmovdqa64 zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x6f,0x72,0x80] + vmovdqa64 zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vmovdqa64 zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x6f,0xb2,0xc0,0xdf,0xff,0xff] + vmovdqa64 zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vmovdqu32 zmm5, zmm24 +// CHECK: encoding: [0x62,0x91,0x7e,0x48,0x6f,0xe8] + vmovdqu32 zmm5, zmm24 + +// CHECK: vmovdqu32 zmm5 {k5}, zmm24 +// CHECK: encoding: [0x62,0x91,0x7e,0x4d,0x6f,0xe8] + vmovdqu32 zmm5 {k5}, zmm24 + +// CHECK: vmovdqu32 zmm5 {k5} {z}, zmm24 +// CHECK: encoding: [0x62,0x91,0x7e,0xcd,0x6f,0xe8] + vmovdqu32 zmm5 {k5} {z}, zmm24 + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0x29] + vmovdqu32 zmm5, zmmword ptr [rcx] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7e,0x48,0x6f,0xac,0xf0,0x23,0x01,0x00,0x00] + vmovdqu32 zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0x6a,0x7f] + vmovdqu32 zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0xaa,0x00,0x20,0x00,0x00] + vmovdqu32 zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0x6a,0x80] + vmovdqu32 zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0xaa,0xc0,0xdf,0xff,0xff] + vmovdqu32 zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vmovdqu64 zmm6, zmm15 +// CHECK: encoding: [0x62,0xd1,0xfe,0x48,0x6f,0xf7] + vmovdqu64 zmm6, zmm15 + +// CHECK: vmovdqu64 zmm6 {k3}, zmm15 +// CHECK: encoding: [0x62,0xd1,0xfe,0x4b,0x6f,0xf7] + vmovdqu64 zmm6 {k3}, zmm15 + +// CHECK: vmovdqu64 zmm6 {k3} {z}, zmm15 +// CHECK: encoding: [0x62,0xd1,0xfe,0xcb,0x6f,0xf7] + vmovdqu64 zmm6 {k3} {z}, zmm15 + +// CHECK: vmovdqu64 zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x6f,0x31] + vmovdqu64 zmm6, zmmword ptr [rcx] + +// CHECK: vmovdqu64 zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xfe,0x48,0x6f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vmovdqu64 zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovdqu64 zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x6f,0x72,0x7f] + vmovdqu64 zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vmovdqu64 zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x6f,0xb2,0x00,0x20,0x00,0x00] + vmovdqu64 zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vmovdqu64 zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x6f,0x72,0x80] + vmovdqu64 zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vmovdqu64 zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x6f,0xb2,0xc0,0xdf,0xff,0xff] + vmovdqu64 zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vmovhlps xmm18, xmm1, xmm23 +// CHECK: encoding: [0x62,0xa1,0x74,0x08,0x12,0xd7] + vmovhlps xmm18, xmm1, xmm23 + +// CHECK: vmovhpd xmm19, xmm28, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x16,0x19] + vmovhpd xmm19, xmm28, qword ptr [rcx] + +// CHECK: vmovhpd xmm19, xmm28, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x9d,0x00,0x16,0x9c,0xf0,0x23,0x01,0x00,0x00] + vmovhpd xmm19, xmm28, qword ptr [rax + 8*r14 + 291] + +// CHECK: vmovhpd xmm19, xmm28, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x16,0x5a,0x7f] + vmovhpd xmm19, xmm28, qword ptr [rdx + 1016] + +// CHECK: vmovhpd xmm19, xmm28, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x16,0x9a,0x00,0x04,0x00,0x00] + vmovhpd xmm19, xmm28, qword ptr [rdx + 1024] + +// CHECK: vmovhpd xmm19, xmm28, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x16,0x5a,0x80] + vmovhpd xmm19, xmm28, qword ptr [rdx - 1024] + +// CHECK: vmovhpd xmm19, xmm28, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x16,0x9a,0xf8,0xfb,0xff,0xff] + vmovhpd xmm19, xmm28, qword ptr [rdx - 1032] + +// CHECK: vmovhpd qword ptr [rcx], xmm15 +// CHECK: encoding: [0xc5,0x79,0x17,0x39] + vmovhpd qword ptr [rcx], xmm15 + +// CHECK: vmovhpd qword ptr [rax + 8*r14 + 291], xmm15 +// CHECK: encoding: [0xc4,0x21,0x79,0x17,0xbc,0xf0,0x23,0x01,0x00,0x00] + vmovhpd qword ptr [rax + 8*r14 + 291], xmm15 + +// CHECK: vmovhpd qword ptr [rdx + 1016], xmm15 +// CHECK: encoding: [0xc5,0x79,0x17,0xba,0xf8,0x03,0x00,0x00] + vmovhpd qword ptr [rdx + 1016], xmm15 + +// CHECK: vmovhpd qword ptr [rdx + 1024], xmm15 +// CHECK: encoding: [0xc5,0x79,0x17,0xba,0x00,0x04,0x00,0x00] + vmovhpd qword ptr [rdx + 1024], xmm15 + +// CHECK: vmovhpd qword ptr [rdx - 1024], xmm15 +// CHECK: encoding: [0xc5,0x79,0x17,0xba,0x00,0xfc,0xff,0xff] + vmovhpd qword ptr [rdx - 1024], xmm15 + +// CHECK: vmovhpd qword ptr [rdx - 1032], xmm15 +// CHECK: encoding: [0xc5,0x79,0x17,0xba,0xf8,0xfb,0xff,0xff] + vmovhpd qword ptr [rdx - 1032], xmm15 + +// CHECK: vmovhps xmm20, xmm17, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x74,0x00,0x16,0x21] + vmovhps xmm20, xmm17, qword ptr [rcx] + +// CHECK: vmovhps xmm20, xmm17, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x74,0x00,0x16,0xa4,0xf0,0x23,0x01,0x00,0x00] + vmovhps xmm20, xmm17, qword ptr [rax + 8*r14 + 291] + +// CHECK: vmovhps xmm20, xmm17, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0x74,0x00,0x16,0x62,0x7f] + vmovhps xmm20, xmm17, qword ptr [rdx + 1016] + +// CHECK: vmovhps xmm20, xmm17, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0x74,0x00,0x16,0xa2,0x00,0x04,0x00,0x00] + vmovhps xmm20, xmm17, qword ptr [rdx + 1024] + +// CHECK: vmovhps xmm20, xmm17, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0x74,0x00,0x16,0x62,0x80] + vmovhps xmm20, xmm17, qword ptr [rdx - 1024] + +// CHECK: vmovhps xmm20, xmm17, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0x74,0x00,0x16,0xa2,0xf8,0xfb,0xff,0xff] + vmovhps xmm20, xmm17, qword ptr [rdx - 1032] + +// CHECK: vmovhps qword ptr [rcx], xmm18 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x17,0x11] + vmovhps qword ptr [rcx], xmm18 + +// CHECK: vmovhps qword ptr [rax + 8*r14 + 291], xmm18 +// CHECK: encoding: [0x62,0xa1,0x7c,0x08,0x17,0x94,0xf0,0x23,0x01,0x00,0x00] + vmovhps qword ptr [rax + 8*r14 + 291], xmm18 + +// CHECK: vmovhps qword ptr [rdx + 1016], xmm18 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x17,0x52,0x7f] + vmovhps qword ptr [rdx + 1016], xmm18 + +// CHECK: vmovhps qword ptr [rdx + 1024], xmm18 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x17,0x92,0x00,0x04,0x00,0x00] + vmovhps qword ptr [rdx + 1024], xmm18 + +// CHECK: vmovhps qword ptr [rdx - 1024], xmm18 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x17,0x52,0x80] + vmovhps qword ptr [rdx - 1024], xmm18 + +// CHECK: vmovhps qword ptr [rdx - 1032], xmm18 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x17,0x92,0xf8,0xfb,0xff,0xff] + vmovhps qword ptr [rdx - 1032], xmm18 + +// CHECK: vmovlhps xmm13, xmm13, xmm28 +// CHECK: encoding: [0x62,0x11,0x14,0x08,0x16,0xec] + vmovlhps xmm13, xmm13, xmm28 + +// CHECK: vmovlpd xmm29, xmm6, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xcd,0x08,0x12,0x29] + vmovlpd xmm29, xmm6, qword ptr [rcx] + +// CHECK: vmovlpd xmm29, xmm6, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0xcd,0x08,0x12,0xac,0xf0,0x23,0x01,0x00,0x00] + vmovlpd xmm29, xmm6, qword ptr [rax + 8*r14 + 291] + +// CHECK: vmovlpd xmm29, xmm6, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x61,0xcd,0x08,0x12,0x6a,0x7f] + vmovlpd xmm29, xmm6, qword ptr [rdx + 1016] + +// CHECK: vmovlpd xmm29, xmm6, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x61,0xcd,0x08,0x12,0xaa,0x00,0x04,0x00,0x00] + vmovlpd xmm29, xmm6, qword ptr [rdx + 1024] + +// CHECK: vmovlpd xmm29, xmm6, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x61,0xcd,0x08,0x12,0x6a,0x80] + vmovlpd xmm29, xmm6, qword ptr [rdx - 1024] + +// CHECK: vmovlpd xmm29, xmm6, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x61,0xcd,0x08,0x12,0xaa,0xf8,0xfb,0xff,0xff] + vmovlpd xmm29, xmm6, qword ptr [rdx - 1032] + +// CHECK: vmovlpd qword ptr [rcx], xmm15 +// CHECK: encoding: [0xc5,0x79,0x13,0x39] + vmovlpd qword ptr [rcx], xmm15 + +// CHECK: vmovlpd qword ptr [rax + 8*r14 + 291], xmm15 +// CHECK: encoding: [0xc4,0x21,0x79,0x13,0xbc,0xf0,0x23,0x01,0x00,0x00] + vmovlpd qword ptr [rax + 8*r14 + 291], xmm15 + +// CHECK: vmovlpd qword ptr [rdx + 1016], xmm15 +// CHECK: encoding: [0xc5,0x79,0x13,0xba,0xf8,0x03,0x00,0x00] + vmovlpd qword ptr [rdx + 1016], xmm15 + +// CHECK: vmovlpd qword ptr [rdx + 1024], xmm15 +// CHECK: encoding: [0xc5,0x79,0x13,0xba,0x00,0x04,0x00,0x00] + vmovlpd qword ptr [rdx + 1024], xmm15 + +// CHECK: vmovlpd qword ptr [rdx - 1024], xmm15 +// CHECK: encoding: [0xc5,0x79,0x13,0xba,0x00,0xfc,0xff,0xff] + vmovlpd qword ptr [rdx - 1024], xmm15 + +// CHECK: vmovlpd qword ptr [rdx - 1032], xmm15 +// CHECK: encoding: [0xc5,0x79,0x13,0xba,0xf8,0xfb,0xff,0xff] + vmovlpd qword ptr [rdx - 1032], xmm15 + +// CHECK: vmovlps xmm7, xmm20, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x5c,0x00,0x12,0x39] + vmovlps xmm7, xmm20, qword ptr [rcx] + +// CHECK: vmovlps xmm7, xmm20, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x5c,0x00,0x12,0xbc,0xf0,0x23,0x01,0x00,0x00] + vmovlps xmm7, xmm20, qword ptr [rax + 8*r14 + 291] + +// CHECK: vmovlps xmm7, xmm20, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x5c,0x00,0x12,0x7a,0x7f] + vmovlps xmm7, xmm20, qword ptr [rdx + 1016] + +// CHECK: vmovlps xmm7, xmm20, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x5c,0x00,0x12,0xba,0x00,0x04,0x00,0x00] + vmovlps xmm7, xmm20, qword ptr [rdx + 1024] + +// CHECK: vmovlps xmm7, xmm20, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x5c,0x00,0x12,0x7a,0x80] + vmovlps xmm7, xmm20, qword ptr [rdx - 1024] + +// CHECK: vmovlps xmm7, xmm20, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x5c,0x00,0x12,0xba,0xf8,0xfb,0xff,0xff] + vmovlps xmm7, xmm20, qword ptr [rdx - 1032] + +// CHECK: vmovlps qword ptr [rcx], xmm27 +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x13,0x19] + vmovlps qword ptr [rcx], xmm27 + +// CHECK: vmovlps qword ptr [rax + 8*r14 + 291], xmm27 +// CHECK: encoding: [0x62,0x21,0x7c,0x08,0x13,0x9c,0xf0,0x23,0x01,0x00,0x00] + vmovlps qword ptr [rax + 8*r14 + 291], xmm27 + +// CHECK: vmovlps qword ptr [rdx + 1016], xmm27 +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x13,0x5a,0x7f] + vmovlps qword ptr [rdx + 1016], xmm27 + +// CHECK: vmovlps qword ptr [rdx + 1024], xmm27 +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x13,0x9a,0x00,0x04,0x00,0x00] + vmovlps qword ptr [rdx + 1024], xmm27 + +// CHECK: vmovlps qword ptr [rdx - 1024], xmm27 +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x13,0x5a,0x80] + vmovlps qword ptr [rdx - 1024], xmm27 + +// CHECK: vmovlps qword ptr [rdx - 1032], xmm27 +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x13,0x9a,0xf8,0xfb,0xff,0xff] + vmovlps qword ptr [rdx - 1032], xmm27 + +// CHECK: vmovntdq zmmword ptr [rcx], zmm24 +// CHECK: encoding: [0x62,0x61,0x7d,0x48,0xe7,0x01] + vmovntdq zmmword ptr [rcx], zmm24 + +// CHECK: vmovntdq zmmword ptr [rax + 8*r14 + 291], zmm24 +// CHECK: encoding: [0x62,0x21,0x7d,0x48,0xe7,0x84,0xf0,0x23,0x01,0x00,0x00] + vmovntdq zmmword ptr [rax + 8*r14 + 291], zmm24 + +// CHECK: vmovntdq zmmword ptr [rdx + 8128], zmm24 +// CHECK: encoding: [0x62,0x61,0x7d,0x48,0xe7,0x42,0x7f] + vmovntdq zmmword ptr [rdx + 8128], zmm24 + +// CHECK: vmovntdq zmmword ptr [rdx + 8192], zmm24 +// CHECK: encoding: [0x62,0x61,0x7d,0x48,0xe7,0x82,0x00,0x20,0x00,0x00] + vmovntdq zmmword ptr [rdx + 8192], zmm24 + +// CHECK: vmovntdq zmmword ptr [rdx - 8192], zmm24 +// CHECK: encoding: [0x62,0x61,0x7d,0x48,0xe7,0x42,0x80] + vmovntdq zmmword ptr [rdx - 8192], zmm24 + +// CHECK: vmovntdq zmmword ptr [rdx - 8256], zmm24 +// CHECK: encoding: [0x62,0x61,0x7d,0x48,0xe7,0x82,0xc0,0xdf,0xff,0xff] + vmovntdq zmmword ptr [rdx - 8256], zmm24 + +// CHECK: vmovntdqa zmm17, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x2a,0x09] + vmovntdqa zmm17, zmmword ptr [rcx] + +// CHECK: vmovntdqa zmm17, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x2a,0x8c,0xf0,0x23,0x01,0x00,0x00] + vmovntdqa zmm17, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovntdqa zmm17, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x2a,0x4a,0x7f] + vmovntdqa zmm17, zmmword ptr [rdx + 8128] + +// CHECK: vmovntdqa zmm17, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x2a,0x8a,0x00,0x20,0x00,0x00] + vmovntdqa zmm17, zmmword ptr [rdx + 8192] + +// CHECK: vmovntdqa zmm17, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x2a,0x4a,0x80] + vmovntdqa zmm17, zmmword ptr [rdx - 8192] + +// CHECK: vmovntdqa zmm17, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x2a,0x8a,0xc0,0xdf,0xff,0xff] + vmovntdqa zmm17, zmmword ptr [rdx - 8256] + +// CHECK: vmovntpd zmmword ptr [rcx], zmm17 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0x09] + vmovntpd zmmword ptr [rcx], zmm17 + +// CHECK: vmovntpd zmmword ptr [rax + 8*r14 + 291], zmm17 +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x2b,0x8c,0xf0,0x23,0x01,0x00,0x00] + vmovntpd zmmword ptr [rax + 8*r14 + 291], zmm17 + +// CHECK: vmovntpd zmmword ptr [rdx + 8128], zmm17 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0x4a,0x7f] + vmovntpd zmmword ptr [rdx + 8128], zmm17 + +// CHECK: vmovntpd zmmword ptr [rdx + 8192], zmm17 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0x8a,0x00,0x20,0x00,0x00] + vmovntpd zmmword ptr [rdx + 8192], zmm17 + +// CHECK: vmovntpd zmmword ptr [rdx - 8192], zmm17 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0x4a,0x80] + vmovntpd zmmword ptr [rdx - 8192], zmm17 + +// CHECK: vmovntpd zmmword ptr [rdx - 8256], zmm17 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0x8a,0xc0,0xdf,0xff,0xff] + vmovntpd zmmword ptr [rdx - 8256], zmm17 + +// CHECK: vmovntps zmmword ptr [rcx], zmm5 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x2b,0x29] + vmovntps zmmword ptr [rcx], zmm5 + +// CHECK: vmovntps zmmword ptr [rax + 8*r14 + 291], zmm5 +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x2b,0xac,0xf0,0x23,0x01,0x00,0x00] + vmovntps zmmword ptr [rax + 8*r14 + 291], zmm5 + +// CHECK: vmovntps zmmword ptr [rdx + 8128], zmm5 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x2b,0x6a,0x7f] + vmovntps zmmword ptr [rdx + 8128], zmm5 + +// CHECK: vmovntps zmmword ptr [rdx + 8192], zmm5 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x2b,0xaa,0x00,0x20,0x00,0x00] + vmovntps zmmword ptr [rdx + 8192], zmm5 + +// CHECK: vmovntps zmmword ptr [rdx - 8192], zmm5 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x2b,0x6a,0x80] + vmovntps zmmword ptr [rdx - 8192], zmm5 + +// CHECK: vmovntps zmmword ptr [rdx - 8256], zmm5 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x2b,0xaa,0xc0,0xdf,0xff,0xff] + vmovntps zmmword ptr [rdx - 8256], zmm5 + +// CHECK: vmovsd xmm25, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x10,0x09] + vmovsd xmm25, qword ptr [rcx] + +// CHECK: vmovsd xmm25 {k3}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xff,0x0b,0x10,0x09] + vmovsd xmm25 {k3}, qword ptr [rcx] + +// CHECK: vmovsd xmm25 {k3} {z}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xff,0x8b,0x10,0x09] + vmovsd xmm25 {k3} {z}, qword ptr [rcx] + +// CHECK: vmovsd xmm25, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0xff,0x08,0x10,0x8c,0xf0,0x23,0x01,0x00,0x00] + vmovsd xmm25, qword ptr [rax + 8*r14 + 291] + +// CHECK: vmovsd xmm25, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x10,0x4a,0x7f] + vmovsd xmm25, qword ptr [rdx + 1016] + +// CHECK: vmovsd xmm25, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x10,0x8a,0x00,0x04,0x00,0x00] + vmovsd xmm25, qword ptr [rdx + 1024] + +// CHECK: vmovsd xmm25, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x10,0x4a,0x80] + vmovsd xmm25, qword ptr [rdx - 1024] + +// CHECK: vmovsd xmm25, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x10,0x8a,0xf8,0xfb,0xff,0xff] + vmovsd xmm25, qword ptr [rdx - 1032] + +// CHECK: vmovsd qword ptr [rcx], xmm25 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x11,0x09] + vmovsd qword ptr [rcx], xmm25 + +// CHECK: vmovsd qword ptr [rcx] {k2}, xmm25 +// CHECK: encoding: [0x62,0x61,0xff,0x0a,0x11,0x09] + vmovsd qword ptr [rcx] {k2}, xmm25 + +// CHECK: vmovsd qword ptr [rax + 8*r14 + 291], xmm25 +// CHECK: encoding: [0x62,0x21,0xff,0x08,0x11,0x8c,0xf0,0x23,0x01,0x00,0x00] + vmovsd qword ptr [rax + 8*r14 + 291], xmm25 + +// CHECK: vmovsd qword ptr [rdx + 1016], xmm25 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x11,0x4a,0x7f] + vmovsd qword ptr [rdx + 1016], xmm25 + +// CHECK: vmovsd qword ptr [rdx + 1024], xmm25 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x11,0x8a,0x00,0x04,0x00,0x00] + vmovsd qword ptr [rdx + 1024], xmm25 + +// CHECK: vmovsd qword ptr [rdx - 1024], xmm25 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x11,0x4a,0x80] + vmovsd qword ptr [rdx - 1024], xmm25 + +// CHECK: vmovsd qword ptr [rdx - 1032], xmm25 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x11,0x8a,0xf8,0xfb,0xff,0xff] + vmovsd qword ptr [rdx - 1032], xmm25 + +// CHECK: vmovsd xmm27, xmm3, xmm19 +// CHECK: encoding: [0x62,0x21,0xe7,0x08,0x10,0xdb] + vmovsd xmm27, xmm3, xmm19 + +// CHECK: vmovsd xmm27 {k3}, xmm3, xmm19 +// CHECK: encoding: [0x62,0x21,0xe7,0x0b,0x10,0xdb] + vmovsd xmm27 {k3}, xmm3, xmm19 + +// CHECK: vmovsd xmm27 {k3} {z}, xmm3, xmm19 +// CHECK: encoding: [0x62,0x21,0xe7,0x8b,0x10,0xdb] + vmovsd xmm27 {k3} {z}, xmm3, xmm19 + +// CHECK: vmovshdup zmm16, zmm27 +// CHECK: encoding: [0x62,0x81,0x7e,0x48,0x16,0xc3] + vmovshdup zmm16, zmm27 + +// CHECK: vmovshdup zmm16 {k4}, zmm27 +// CHECK: encoding: [0x62,0x81,0x7e,0x4c,0x16,0xc3] + vmovshdup zmm16 {k4}, zmm27 + +// CHECK: vmovshdup zmm16 {k4} {z}, zmm27 +// CHECK: encoding: [0x62,0x81,0x7e,0xcc,0x16,0xc3] + vmovshdup zmm16 {k4} {z}, zmm27 + +// CHECK: vmovshdup zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x01] + vmovshdup zmm16, zmmword ptr [rcx] + +// CHECK: vmovshdup zmm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x7e,0x48,0x16,0x84,0xf0,0x23,0x01,0x00,0x00] + vmovshdup zmm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovshdup zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x42,0x7f] + vmovshdup zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vmovshdup zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x82,0x00,0x20,0x00,0x00] + vmovshdup zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vmovshdup zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x42,0x80] + vmovshdup zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vmovshdup zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x82,0xc0,0xdf,0xff,0xff] + vmovshdup zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vmovsldup zmm13, zmm14 +// CHECK: encoding: [0x62,0x51,0x7e,0x48,0x12,0xee] + vmovsldup zmm13, zmm14 + +// CHECK: vmovsldup zmm13 {k6}, zmm14 +// CHECK: encoding: [0x62,0x51,0x7e,0x4e,0x12,0xee] + vmovsldup zmm13 {k6}, zmm14 + +// CHECK: vmovsldup zmm13 {k6} {z}, zmm14 +// CHECK: encoding: [0x62,0x51,0x7e,0xce,0x12,0xee] + vmovsldup zmm13 {k6} {z}, zmm14 + +// CHECK: vmovsldup zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0x29] + vmovsldup zmm13, zmmword ptr [rcx] + +// CHECK: vmovsldup zmm13, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7e,0x48,0x12,0xac,0xf0,0x23,0x01,0x00,0x00] + vmovsldup zmm13, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovsldup zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0x6a,0x7f] + vmovsldup zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vmovsldup zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0xaa,0x00,0x20,0x00,0x00] + vmovsldup zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vmovsldup zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0x6a,0x80] + vmovsldup zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vmovsldup zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0xaa,0xc0,0xdf,0xff,0xff] + vmovsldup zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vmovss xmm2, dword ptr [rcx] +// CHECK: encoding: [0xc5,0xfa,0x10,0x11] + vmovss xmm2, dword ptr [rcx] + +// CHECK: vmovss xmm2 {k4}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x0c,0x10,0x11] + vmovss xmm2 {k4}, dword ptr [rcx] + +// CHECK: vmovss xmm2 {k4} {z}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x8c,0x10,0x11] + vmovss xmm2 {k4} {z}, dword ptr [rcx] + +// CHECK: vmovss xmm2, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa1,0x7a,0x10,0x94,0xf0,0x23,0x01,0x00,0x00] + vmovss xmm2, dword ptr [rax + 8*r14 + 291] + +// CHECK: vmovss xmm2, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0xfa,0x10,0x92,0xfc,0x01,0x00,0x00] + vmovss xmm2, dword ptr [rdx + 508] + +// CHECK: vmovss xmm2, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0xfa,0x10,0x92,0x00,0x02,0x00,0x00] + vmovss xmm2, dword ptr [rdx + 512] + +// CHECK: vmovss xmm2, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0xfa,0x10,0x92,0x00,0xfe,0xff,0xff] + vmovss xmm2, dword ptr [rdx - 512] + +// CHECK: vmovss xmm2, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0xfa,0x10,0x92,0xfc,0xfd,0xff,0xff] + vmovss xmm2, dword ptr [rdx - 516] + +// CHECK: vmovss dword ptr [rcx], xmm5 +// CHECK: encoding: [0xc5,0xfa,0x11,0x29] + vmovss dword ptr [rcx], xmm5 + +// CHECK: vmovss dword ptr [rcx] {k6}, xmm5 +// CHECK: encoding: [0x62,0xf1,0x7e,0x0e,0x11,0x29] + vmovss dword ptr [rcx] {k6}, xmm5 + +// CHECK: vmovss dword ptr [rax + 8*r14 + 291], xmm5 +// CHECK: encoding: [0xc4,0xa1,0x7a,0x11,0xac,0xf0,0x23,0x01,0x00,0x00] + vmovss dword ptr [rax + 8*r14 + 291], xmm5 + +// CHECK: vmovss dword ptr [rdx + 508], xmm5 +// CHECK: encoding: [0xc5,0xfa,0x11,0xaa,0xfc,0x01,0x00,0x00] + vmovss dword ptr [rdx + 508], xmm5 + +// CHECK: vmovss dword ptr [rdx + 512], xmm5 +// CHECK: encoding: [0xc5,0xfa,0x11,0xaa,0x00,0x02,0x00,0x00] + vmovss dword ptr [rdx + 512], xmm5 + +// CHECK: vmovss dword ptr [rdx - 512], xmm5 +// CHECK: encoding: [0xc5,0xfa,0x11,0xaa,0x00,0xfe,0xff,0xff] + vmovss dword ptr [rdx - 512], xmm5 + +// CHECK: vmovss dword ptr [rdx - 516], xmm5 +// CHECK: encoding: [0xc5,0xfa,0x11,0xaa,0xfc,0xfd,0xff,0xff] + vmovss dword ptr [rdx - 516], xmm5 + +// CHECK: vmovss xmm28, xmm9, xmm26 +// CHECK: encoding: [0x62,0x01,0x36,0x08,0x10,0xe2] + vmovss xmm28, xmm9, xmm26 + +// CHECK: vmovss xmm28 {k4}, xmm9, xmm26 +// CHECK: encoding: [0x62,0x01,0x36,0x0c,0x10,0xe2] + vmovss xmm28 {k4}, xmm9, xmm26 + +// CHECK: vmovss xmm28 {k4} {z}, xmm9, xmm26 +// CHECK: encoding: [0x62,0x01,0x36,0x8c,0x10,0xe2] + vmovss xmm28 {k4} {z}, xmm9, xmm26 + +// CHECK: vmovupd zmm27, zmm9 +// CHECK: encoding: [0x62,0x41,0xfd,0x48,0x10,0xd9] + vmovupd zmm27, zmm9 + +// CHECK: vmovupd zmm27 {k2}, zmm9 +// CHECK: encoding: [0x62,0x41,0xfd,0x4a,0x10,0xd9] + vmovupd zmm27 {k2}, zmm9 + +// CHECK: vmovupd zmm27 {k2} {z}, zmm9 +// CHECK: encoding: [0x62,0x41,0xfd,0xca,0x10,0xd9] + vmovupd zmm27 {k2} {z}, zmm9 + +// CHECK: vmovupd zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x10,0x19] + vmovupd zmm27, zmmword ptr [rcx] + +// CHECK: vmovupd zmm27, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0xfd,0x48,0x10,0x9c,0xf0,0x23,0x01,0x00,0x00] + vmovupd zmm27, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovupd zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x10,0x5a,0x7f] + vmovupd zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vmovupd zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x10,0x9a,0x00,0x20,0x00,0x00] + vmovupd zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vmovupd zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x10,0x5a,0x80] + vmovupd zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vmovupd zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x10,0x9a,0xc0,0xdf,0xff,0xff] + vmovupd zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vmovups zmm22, zmm22 +// CHECK: encoding: [0x62,0xa1,0x7c,0x48,0x10,0xf6] + vmovups zmm22, zmm22 + +// CHECK: vmovups zmm22 {k3}, zmm22 +// CHECK: encoding: [0x62,0xa1,0x7c,0x4b,0x10,0xf6] + vmovups zmm22 {k3}, zmm22 + +// CHECK: vmovups zmm22 {k3} {z}, zmm22 +// CHECK: encoding: [0x62,0xa1,0x7c,0xcb,0x10,0xf6] + vmovups zmm22 {k3} {z}, zmm22 + +// CHECK: vmovups zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0x31] + vmovups zmm22, zmmword ptr [rcx] + +// CHECK: vmovups zmm22, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x7c,0x48,0x10,0xb4,0xf0,0x23,0x01,0x00,0x00] + vmovups zmm22, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmovups zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0x72,0x7f] + vmovups zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vmovups zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0xb2,0x00,0x20,0x00,0x00] + vmovups zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vmovups zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0x72,0x80] + vmovups zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vmovups zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0xb2,0xc0,0xdf,0xff,0xff] + vmovups zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vmulpd zmm24, zmm4, zmm23 +// CHECK: encoding: [0x62,0x21,0xdd,0x48,0x59,0xc7] + vmulpd zmm24, zmm4, zmm23 + +// CHECK: vmulpd zmm24 {k6}, zmm4, zmm23 +// CHECK: encoding: [0x62,0x21,0xdd,0x4e,0x59,0xc7] + vmulpd zmm24 {k6}, zmm4, zmm23 + +// CHECK: vmulpd zmm24 {k6} {z}, zmm4, zmm23 +// CHECK: encoding: [0x62,0x21,0xdd,0xce,0x59,0xc7] + vmulpd zmm24 {k6} {z}, zmm4, zmm23 + +// CHECK: vmulpd zmm24, zmm4, zmm23, {rn-sae} +// CHECK: encoding: [0x62,0x21,0xdd,0x18,0x59,0xc7] + vmulpd zmm24, zmm4, zmm23, {rn-sae} + +// CHECK: vmulpd zmm24, zmm4, zmm23, {ru-sae} +// CHECK: encoding: [0x62,0x21,0xdd,0x58,0x59,0xc7] + vmulpd zmm24, zmm4, zmm23, {ru-sae} + +// CHECK: vmulpd zmm24, zmm4, zmm23, {rd-sae} +// CHECK: encoding: [0x62,0x21,0xdd,0x38,0x59,0xc7] + vmulpd zmm24, zmm4, zmm23, {rd-sae} + +// CHECK: vmulpd zmm24, zmm4, zmm23, {rz-sae} +// CHECK: encoding: [0x62,0x21,0xdd,0x78,0x59,0xc7] + vmulpd zmm24, zmm4, zmm23, {rz-sae} + +// CHECK: vmulpd zmm24, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0x59,0x01] + vmulpd zmm24, zmm4, zmmword ptr [rcx] + +// CHECK: vmulpd zmm24, zmm4, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0xdd,0x48,0x59,0x84,0xf0,0x23,0x01,0x00,0x00] + vmulpd zmm24, zmm4, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmulpd zmm24, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0x59,0x01] + vmulpd zmm24, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vmulpd zmm24, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0x59,0x42,0x7f] + vmulpd zmm24, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vmulpd zmm24, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0x59,0x82,0x00,0x20,0x00,0x00] + vmulpd zmm24, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vmulpd zmm24, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0x59,0x42,0x80] + vmulpd zmm24, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vmulpd zmm24, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0x59,0x82,0xc0,0xdf,0xff,0xff] + vmulpd zmm24, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vmulpd zmm24, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0x59,0x42,0x7f] + vmulpd zmm24, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vmulpd zmm24, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0x59,0x82,0x00,0x04,0x00,0x00] + vmulpd zmm24, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vmulpd zmm24, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0x59,0x42,0x80] + vmulpd zmm24, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vmulpd zmm24, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0x59,0x82,0xf8,0xfb,0xff,0xff] + vmulpd zmm24, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vmulps zmm3, zmm6, zmm24 +// CHECK: encoding: [0x62,0x91,0x4c,0x48,0x59,0xd8] + vmulps zmm3, zmm6, zmm24 + +// CHECK: vmulps zmm3 {k4}, zmm6, zmm24 +// CHECK: encoding: [0x62,0x91,0x4c,0x4c,0x59,0xd8] + vmulps zmm3 {k4}, zmm6, zmm24 + +// CHECK: vmulps zmm3 {k4} {z}, zmm6, zmm24 +// CHECK: encoding: [0x62,0x91,0x4c,0xcc,0x59,0xd8] + vmulps zmm3 {k4} {z}, zmm6, zmm24 + +// CHECK: vmulps zmm3, zmm6, zmm24, {rn-sae} +// CHECK: encoding: [0x62,0x91,0x4c,0x18,0x59,0xd8] + vmulps zmm3, zmm6, zmm24, {rn-sae} + +// CHECK: vmulps zmm3, zmm6, zmm24, {ru-sae} +// CHECK: encoding: [0x62,0x91,0x4c,0x58,0x59,0xd8] + vmulps zmm3, zmm6, zmm24, {ru-sae} + +// CHECK: vmulps zmm3, zmm6, zmm24, {rd-sae} +// CHECK: encoding: [0x62,0x91,0x4c,0x38,0x59,0xd8] + vmulps zmm3, zmm6, zmm24, {rd-sae} + +// CHECK: vmulps zmm3, zmm6, zmm24, {rz-sae} +// CHECK: encoding: [0x62,0x91,0x4c,0x78,0x59,0xd8] + vmulps zmm3, zmm6, zmm24, {rz-sae} + +// CHECK: vmulps zmm3, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x59,0x19] + vmulps zmm3, zmm6, zmmword ptr [rcx] + +// CHECK: vmulps zmm3, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x4c,0x48,0x59,0x9c,0xf0,0x23,0x01,0x00,0x00] + vmulps zmm3, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vmulps zmm3, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x59,0x19] + vmulps zmm3, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vmulps zmm3, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x59,0x5a,0x7f] + vmulps zmm3, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vmulps zmm3, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x59,0x9a,0x00,0x20,0x00,0x00] + vmulps zmm3, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vmulps zmm3, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x59,0x5a,0x80] + vmulps zmm3, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vmulps zmm3, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x59,0x9a,0xc0,0xdf,0xff,0xff] + vmulps zmm3, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vmulps zmm3, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x59,0x5a,0x7f] + vmulps zmm3, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vmulps zmm3, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x59,0x9a,0x00,0x02,0x00,0x00] + vmulps zmm3, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vmulps zmm3, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x59,0x5a,0x80] + vmulps zmm3, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vmulps zmm3, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x59,0x9a,0xfc,0xfd,0xff,0xff] + vmulps zmm3, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vmulsd xmm13, xmm4, xmm18 +// CHECK: encoding: [0x62,0x31,0xdf,0x08,0x59,0xea] + vmulsd xmm13, xmm4, xmm18 + +// CHECK: vmulsd xmm13 {k2}, xmm4, xmm18 +// CHECK: encoding: [0x62,0x31,0xdf,0x0a,0x59,0xea] + vmulsd xmm13 {k2}, xmm4, xmm18 + +// CHECK: vmulsd xmm13 {k2} {z}, xmm4, xmm18 +// CHECK: encoding: [0x62,0x31,0xdf,0x8a,0x59,0xea] + vmulsd xmm13 {k2} {z}, xmm4, xmm18 + +// CHECK: vmulsd xmm13, xmm4, xmm18, {rn-sae} +// CHECK: encoding: [0x62,0x31,0xdf,0x18,0x59,0xea] + vmulsd xmm13, xmm4, xmm18, {rn-sae} + +// CHECK: vmulsd xmm13, xmm4, xmm18, {ru-sae} +// CHECK: encoding: [0x62,0x31,0xdf,0x58,0x59,0xea] + vmulsd xmm13, xmm4, xmm18, {ru-sae} + +// CHECK: vmulsd xmm13, xmm4, xmm18, {rd-sae} +// CHECK: encoding: [0x62,0x31,0xdf,0x38,0x59,0xea] + vmulsd xmm13, xmm4, xmm18, {rd-sae} + +// CHECK: vmulsd xmm13, xmm4, xmm18, {rz-sae} +// CHECK: encoding: [0x62,0x31,0xdf,0x78,0x59,0xea] + vmulsd xmm13, xmm4, xmm18, {rz-sae} + +// CHECK: vmulsd xmm13, xmm4, qword ptr [rcx] +// CHECK: encoding: [0xc5,0x5b,0x59,0x29] + vmulsd xmm13, xmm4, qword ptr [rcx] + +// CHECK: vmulsd xmm13, xmm4, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0x21,0x5b,0x59,0xac,0xf0,0x23,0x01,0x00,0x00] + vmulsd xmm13, xmm4, qword ptr [rax + 8*r14 + 291] + +// CHECK: vmulsd xmm13, xmm4, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc5,0x5b,0x59,0xaa,0xf8,0x03,0x00,0x00] + vmulsd xmm13, xmm4, qword ptr [rdx + 1016] + +// CHECK: vmulsd xmm13, xmm4, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc5,0x5b,0x59,0xaa,0x00,0x04,0x00,0x00] + vmulsd xmm13, xmm4, qword ptr [rdx + 1024] + +// CHECK: vmulsd xmm13, xmm4, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc5,0x5b,0x59,0xaa,0x00,0xfc,0xff,0xff] + vmulsd xmm13, xmm4, qword ptr [rdx - 1024] + +// CHECK: vmulsd xmm13, xmm4, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc5,0x5b,0x59,0xaa,0xf8,0xfb,0xff,0xff] + vmulsd xmm13, xmm4, qword ptr [rdx - 1032] + +// CHECK: vmulss xmm22, xmm10, xmm14 +// CHECK: encoding: [0x62,0xc1,0x2e,0x08,0x59,0xf6] + vmulss xmm22, xmm10, xmm14 + +// CHECK: vmulss xmm22 {k4}, xmm10, xmm14 +// CHECK: encoding: [0x62,0xc1,0x2e,0x0c,0x59,0xf6] + vmulss xmm22 {k4}, xmm10, xmm14 + +// CHECK: vmulss xmm22 {k4} {z}, xmm10, xmm14 +// CHECK: encoding: [0x62,0xc1,0x2e,0x8c,0x59,0xf6] + vmulss xmm22 {k4} {z}, xmm10, xmm14 + +// CHECK: vmulss xmm22, xmm10, xmm14, {rn-sae} +// CHECK: encoding: [0x62,0xc1,0x2e,0x18,0x59,0xf6] + vmulss xmm22, xmm10, xmm14, {rn-sae} + +// CHECK: vmulss xmm22, xmm10, xmm14, {ru-sae} +// CHECK: encoding: [0x62,0xc1,0x2e,0x58,0x59,0xf6] + vmulss xmm22, xmm10, xmm14, {ru-sae} + +// CHECK: vmulss xmm22, xmm10, xmm14, {rd-sae} +// CHECK: encoding: [0x62,0xc1,0x2e,0x38,0x59,0xf6] + vmulss xmm22, xmm10, xmm14, {rd-sae} + +// CHECK: vmulss xmm22, xmm10, xmm14, {rz-sae} +// CHECK: encoding: [0x62,0xc1,0x2e,0x78,0x59,0xf6] + vmulss xmm22, xmm10, xmm14, {rz-sae} + +// CHECK: vmulss xmm22, xmm10, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x2e,0x08,0x59,0x31] + vmulss xmm22, xmm10, dword ptr [rcx] + +// CHECK: vmulss xmm22, xmm10, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x2e,0x08,0x59,0xb4,0xf0,0x23,0x01,0x00,0x00] + vmulss xmm22, xmm10, dword ptr [rax + 8*r14 + 291] + +// CHECK: vmulss xmm22, xmm10, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe1,0x2e,0x08,0x59,0x72,0x7f] + vmulss xmm22, xmm10, dword ptr [rdx + 508] + +// CHECK: vmulss xmm22, xmm10, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe1,0x2e,0x08,0x59,0xb2,0x00,0x02,0x00,0x00] + vmulss xmm22, xmm10, dword ptr [rdx + 512] + +// CHECK: vmulss xmm22, xmm10, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe1,0x2e,0x08,0x59,0x72,0x80] + vmulss xmm22, xmm10, dword ptr [rdx - 512] + +// CHECK: vmulss xmm22, xmm10, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe1,0x2e,0x08,0x59,0xb2,0xfc,0xfd,0xff,0xff] + vmulss xmm22, xmm10, dword ptr [rdx - 516] + +// CHECK: vpabsd zmm15, zmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x1e,0xfe] + vpabsd zmm15, zmm14 + +// CHECK: vpabsd zmm15 {k6}, zmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0x4e,0x1e,0xfe] + vpabsd zmm15 {k6}, zmm14 + +// CHECK: vpabsd zmm15 {k6} {z}, zmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0xce,0x1e,0xfe] + vpabsd zmm15 {k6} {z}, zmm14 + +// CHECK: vpabsd zmm15, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1e,0x39] + vpabsd zmm15, zmmword ptr [rcx] + +// CHECK: vpabsd zmm15, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x1e,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpabsd zmm15, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpabsd zmm15, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x1e,0x39] + vpabsd zmm15, dword ptr [rcx]{1to16} + +// CHECK: vpabsd zmm15, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1e,0x7a,0x7f] + vpabsd zmm15, zmmword ptr [rdx + 8128] + +// CHECK: vpabsd zmm15, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1e,0xba,0x00,0x20,0x00,0x00] + vpabsd zmm15, zmmword ptr [rdx + 8192] + +// CHECK: vpabsd zmm15, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1e,0x7a,0x80] + vpabsd zmm15, zmmword ptr [rdx - 8192] + +// CHECK: vpabsd zmm15, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1e,0xba,0xc0,0xdf,0xff,0xff] + vpabsd zmm15, zmmword ptr [rdx - 8256] + +// CHECK: vpabsd zmm15, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x1e,0x7a,0x7f] + vpabsd zmm15, dword ptr [rdx + 508]{1to16} + +// CHECK: vpabsd zmm15, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x1e,0xba,0x00,0x02,0x00,0x00] + vpabsd zmm15, dword ptr [rdx + 512]{1to16} + +// CHECK: vpabsd zmm15, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x1e,0x7a,0x80] + vpabsd zmm15, dword ptr [rdx - 512]{1to16} + +// CHECK: vpabsd zmm15, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x1e,0xba,0xfc,0xfd,0xff,0xff] + vpabsd zmm15, dword ptr [rdx - 516]{1to16} + +// CHECK: vpabsq zmm5, zmm24 +// CHECK: encoding: [0x62,0x92,0xfd,0x48,0x1f,0xe8] + vpabsq zmm5, zmm24 + +// CHECK: vpabsq zmm5 {k6}, zmm24 +// CHECK: encoding: [0x62,0x92,0xfd,0x4e,0x1f,0xe8] + vpabsq zmm5 {k6}, zmm24 + +// CHECK: vpabsq zmm5 {k6} {z}, zmm24 +// CHECK: encoding: [0x62,0x92,0xfd,0xce,0x1f,0xe8] + vpabsq zmm5 {k6} {z}, zmm24 + +// CHECK: vpabsq zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x1f,0x29] + vpabsq zmm5, zmmword ptr [rcx] + +// CHECK: vpabsq zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xfd,0x48,0x1f,0xac,0xf0,0x23,0x01,0x00,0x00] + vpabsq zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpabsq zmm5, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x1f,0x29] + vpabsq zmm5, qword ptr [rcx]{1to8} + +// CHECK: vpabsq zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x1f,0x6a,0x7f] + vpabsq zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vpabsq zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x1f,0xaa,0x00,0x20,0x00,0x00] + vpabsq zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vpabsq zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x1f,0x6a,0x80] + vpabsq zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vpabsq zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x1f,0xaa,0xc0,0xdf,0xff,0xff] + vpabsq zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vpabsq zmm5, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x1f,0x6a,0x7f] + vpabsq zmm5, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpabsq zmm5, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x1f,0xaa,0x00,0x04,0x00,0x00] + vpabsq zmm5, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpabsq zmm5, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x1f,0x6a,0x80] + vpabsq zmm5, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpabsq zmm5, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x1f,0xaa,0xf8,0xfb,0xff,0xff] + vpabsq zmm5, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpaddd zmm26, zmm5, zmm20 +// CHECK: encoding: [0x62,0x21,0x55,0x48,0xfe,0xd4] + vpaddd zmm26, zmm5, zmm20 + +// CHECK: vpaddd zmm26 {k1}, zmm5, zmm20 +// CHECK: encoding: [0x62,0x21,0x55,0x49,0xfe,0xd4] + vpaddd zmm26 {k1}, zmm5, zmm20 + +// CHECK: vpaddd zmm26 {k1} {z}, zmm5, zmm20 +// CHECK: encoding: [0x62,0x21,0x55,0xc9,0xfe,0xd4] + vpaddd zmm26 {k1} {z}, zmm5, zmm20 + +// CHECK: vpaddd zmm26, zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x55,0x48,0xfe,0x11] + vpaddd zmm26, zmm5, zmmword ptr [rcx] + +// CHECK: vpaddd zmm26, zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x55,0x48,0xfe,0x94,0xf0,0x23,0x01,0x00,0x00] + vpaddd zmm26, zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpaddd zmm26, zmm5, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x55,0x58,0xfe,0x11] + vpaddd zmm26, zmm5, dword ptr [rcx]{1to16} + +// CHECK: vpaddd zmm26, zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x55,0x48,0xfe,0x52,0x7f] + vpaddd zmm26, zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vpaddd zmm26, zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x55,0x48,0xfe,0x92,0x00,0x20,0x00,0x00] + vpaddd zmm26, zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vpaddd zmm26, zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x55,0x48,0xfe,0x52,0x80] + vpaddd zmm26, zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vpaddd zmm26, zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x55,0x48,0xfe,0x92,0xc0,0xdf,0xff,0xff] + vpaddd zmm26, zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vpaddd zmm26, zmm5, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x55,0x58,0xfe,0x52,0x7f] + vpaddd zmm26, zmm5, dword ptr [rdx + 508]{1to16} + +// CHECK: vpaddd zmm26, zmm5, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x55,0x58,0xfe,0x92,0x00,0x02,0x00,0x00] + vpaddd zmm26, zmm5, dword ptr [rdx + 512]{1to16} + +// CHECK: vpaddd zmm26, zmm5, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x55,0x58,0xfe,0x52,0x80] + vpaddd zmm26, zmm5, dword ptr [rdx - 512]{1to16} + +// CHECK: vpaddd zmm26, zmm5, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x55,0x58,0xfe,0x92,0xfc,0xfd,0xff,0xff] + vpaddd zmm26, zmm5, dword ptr [rdx - 516]{1to16} + +// CHECK: vpaddq zmm8, zmm25, zmm14 +// CHECK: encoding: [0x62,0x51,0xb5,0x40,0xd4,0xc6] + vpaddq zmm8, zmm25, zmm14 + +// CHECK: vpaddq zmm8 {k3}, zmm25, zmm14 +// CHECK: encoding: [0x62,0x51,0xb5,0x43,0xd4,0xc6] + vpaddq zmm8 {k3}, zmm25, zmm14 + +// CHECK: vpaddq zmm8 {k3} {z}, zmm25, zmm14 +// CHECK: encoding: [0x62,0x51,0xb5,0xc3,0xd4,0xc6] + vpaddq zmm8 {k3} {z}, zmm25, zmm14 + +// CHECK: vpaddq zmm8, zmm25, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0xd4,0x01] + vpaddq zmm8, zmm25, zmmword ptr [rcx] + +// CHECK: vpaddq zmm8, zmm25, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xb5,0x40,0xd4,0x84,0xf0,0x23,0x01,0x00,0x00] + vpaddq zmm8, zmm25, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpaddq zmm8, zmm25, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0xd4,0x01] + vpaddq zmm8, zmm25, qword ptr [rcx]{1to8} + +// CHECK: vpaddq zmm8, zmm25, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0xd4,0x42,0x7f] + vpaddq zmm8, zmm25, zmmword ptr [rdx + 8128] + +// CHECK: vpaddq zmm8, zmm25, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0xd4,0x82,0x00,0x20,0x00,0x00] + vpaddq zmm8, zmm25, zmmword ptr [rdx + 8192] + +// CHECK: vpaddq zmm8, zmm25, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0xd4,0x42,0x80] + vpaddq zmm8, zmm25, zmmword ptr [rdx - 8192] + +// CHECK: vpaddq zmm8, zmm25, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0xd4,0x82,0xc0,0xdf,0xff,0xff] + vpaddq zmm8, zmm25, zmmword ptr [rdx - 8256] + +// CHECK: vpaddq zmm8, zmm25, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0xd4,0x42,0x7f] + vpaddq zmm8, zmm25, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpaddq zmm8, zmm25, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0xd4,0x82,0x00,0x04,0x00,0x00] + vpaddq zmm8, zmm25, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpaddq zmm8, zmm25, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0xd4,0x42,0x80] + vpaddq zmm8, zmm25, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpaddq zmm8, zmm25, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0xd4,0x82,0xf8,0xfb,0xff,0xff] + vpaddq zmm8, zmm25, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpandd zmm19, zmm22, zmm25 +// CHECK: encoding: [0x62,0x81,0x4d,0x40,0xdb,0xd9] + vpandd zmm19, zmm22, zmm25 + +// CHECK: vpandd zmm19 {k1}, zmm22, zmm25 +// CHECK: encoding: [0x62,0x81,0x4d,0x41,0xdb,0xd9] + vpandd zmm19 {k1}, zmm22, zmm25 + +// CHECK: vpandd zmm19 {k1} {z}, zmm22, zmm25 +// CHECK: encoding: [0x62,0x81,0x4d,0xc1,0xdb,0xd9] + vpandd zmm19 {k1} {z}, zmm22, zmm25 + +// CHECK: vpandd zmm19, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x4d,0x40,0xdb,0x19] + vpandd zmm19, zmm22, zmmword ptr [rcx] + +// CHECK: vpandd zmm19, zmm22, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x4d,0x40,0xdb,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpandd zmm19, zmm22, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpandd zmm19, zmm22, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x4d,0x50,0xdb,0x19] + vpandd zmm19, zmm22, dword ptr [rcx]{1to16} + +// CHECK: vpandd zmm19, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x4d,0x40,0xdb,0x5a,0x7f] + vpandd zmm19, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpandd zmm19, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x4d,0x40,0xdb,0x9a,0x00,0x20,0x00,0x00] + vpandd zmm19, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpandd zmm19, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x4d,0x40,0xdb,0x5a,0x80] + vpandd zmm19, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpandd zmm19, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x4d,0x40,0xdb,0x9a,0xc0,0xdf,0xff,0xff] + vpandd zmm19, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpandd zmm19, zmm22, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x4d,0x50,0xdb,0x5a,0x7f] + vpandd zmm19, zmm22, dword ptr [rdx + 508]{1to16} + +// CHECK: vpandd zmm19, zmm22, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x4d,0x50,0xdb,0x9a,0x00,0x02,0x00,0x00] + vpandd zmm19, zmm22, dword ptr [rdx + 512]{1to16} + +// CHECK: vpandd zmm19, zmm22, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x4d,0x50,0xdb,0x5a,0x80] + vpandd zmm19, zmm22, dword ptr [rdx - 512]{1to16} + +// CHECK: vpandd zmm19, zmm22, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x4d,0x50,0xdb,0x9a,0xfc,0xfd,0xff,0xff] + vpandd zmm19, zmm22, dword ptr [rdx - 516]{1to16} + +// CHECK: vpandnd zmm30, zmm28, zmm15 +// CHECK: encoding: [0x62,0x41,0x1d,0x40,0xdf,0xf7] + vpandnd zmm30, zmm28, zmm15 + +// CHECK: vpandnd zmm30 {k3}, zmm28, zmm15 +// CHECK: encoding: [0x62,0x41,0x1d,0x43,0xdf,0xf7] + vpandnd zmm30 {k3}, zmm28, zmm15 + +// CHECK: vpandnd zmm30 {k3} {z}, zmm28, zmm15 +// CHECK: encoding: [0x62,0x41,0x1d,0xc3,0xdf,0xf7] + vpandnd zmm30 {k3} {z}, zmm28, zmm15 + +// CHECK: vpandnd zmm30, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x1d,0x40,0xdf,0x31] + vpandnd zmm30, zmm28, zmmword ptr [rcx] + +// CHECK: vpandnd zmm30, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x1d,0x40,0xdf,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpandnd zmm30, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpandnd zmm30, zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x1d,0x50,0xdf,0x31] + vpandnd zmm30, zmm28, dword ptr [rcx]{1to16} + +// CHECK: vpandnd zmm30, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x1d,0x40,0xdf,0x72,0x7f] + vpandnd zmm30, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vpandnd zmm30, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x1d,0x40,0xdf,0xb2,0x00,0x20,0x00,0x00] + vpandnd zmm30, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vpandnd zmm30, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x1d,0x40,0xdf,0x72,0x80] + vpandnd zmm30, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vpandnd zmm30, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x1d,0x40,0xdf,0xb2,0xc0,0xdf,0xff,0xff] + vpandnd zmm30, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vpandnd zmm30, zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x1d,0x50,0xdf,0x72,0x7f] + vpandnd zmm30, zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vpandnd zmm30, zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x1d,0x50,0xdf,0xb2,0x00,0x02,0x00,0x00] + vpandnd zmm30, zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vpandnd zmm30, zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x1d,0x50,0xdf,0x72,0x80] + vpandnd zmm30, zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vpandnd zmm30, zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x1d,0x50,0xdf,0xb2,0xfc,0xfd,0xff,0xff] + vpandnd zmm30, zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vpandnq zmm20, zmm7, zmm19 +// CHECK: encoding: [0x62,0xa1,0xc5,0x48,0xdf,0xe3] + vpandnq zmm20, zmm7, zmm19 + +// CHECK: vpandnq zmm20 {k5}, zmm7, zmm19 +// CHECK: encoding: [0x62,0xa1,0xc5,0x4d,0xdf,0xe3] + vpandnq zmm20 {k5}, zmm7, zmm19 + +// CHECK: vpandnq zmm20 {k5} {z}, zmm7, zmm19 +// CHECK: encoding: [0x62,0xa1,0xc5,0xcd,0xdf,0xe3] + vpandnq zmm20 {k5} {z}, zmm7, zmm19 + +// CHECK: vpandnq zmm20, zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xc5,0x48,0xdf,0x21] + vpandnq zmm20, zmm7, zmmword ptr [rcx] + +// CHECK: vpandnq zmm20, zmm7, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xc5,0x48,0xdf,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpandnq zmm20, zmm7, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpandnq zmm20, zmm7, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xc5,0x58,0xdf,0x21] + vpandnq zmm20, zmm7, qword ptr [rcx]{1to8} + +// CHECK: vpandnq zmm20, zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xc5,0x48,0xdf,0x62,0x7f] + vpandnq zmm20, zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vpandnq zmm20, zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xc5,0x48,0xdf,0xa2,0x00,0x20,0x00,0x00] + vpandnq zmm20, zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vpandnq zmm20, zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xc5,0x48,0xdf,0x62,0x80] + vpandnq zmm20, zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vpandnq zmm20, zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xc5,0x48,0xdf,0xa2,0xc0,0xdf,0xff,0xff] + vpandnq zmm20, zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vpandnq zmm20, zmm7, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xc5,0x58,0xdf,0x62,0x7f] + vpandnq zmm20, zmm7, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpandnq zmm20, zmm7, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xc5,0x58,0xdf,0xa2,0x00,0x04,0x00,0x00] + vpandnq zmm20, zmm7, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpandnq zmm20, zmm7, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xc5,0x58,0xdf,0x62,0x80] + vpandnq zmm20, zmm7, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpandnq zmm20, zmm7, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xc5,0x58,0xdf,0xa2,0xf8,0xfb,0xff,0xff] + vpandnq zmm20, zmm7, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpandq zmm17, zmm4, zmm26 +// CHECK: encoding: [0x62,0x81,0xdd,0x48,0xdb,0xca] + vpandq zmm17, zmm4, zmm26 + +// CHECK: vpandq zmm17 {k7}, zmm4, zmm26 +// CHECK: encoding: [0x62,0x81,0xdd,0x4f,0xdb,0xca] + vpandq zmm17 {k7}, zmm4, zmm26 + +// CHECK: vpandq zmm17 {k7} {z}, zmm4, zmm26 +// CHECK: encoding: [0x62,0x81,0xdd,0xcf,0xdb,0xca] + vpandq zmm17 {k7} {z}, zmm4, zmm26 + +// CHECK: vpandq zmm17, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0xdb,0x09] + vpandq zmm17, zmm4, zmmword ptr [rcx] + +// CHECK: vpandq zmm17, zmm4, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xdd,0x48,0xdb,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpandq zmm17, zmm4, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpandq zmm17, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0xdb,0x09] + vpandq zmm17, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vpandq zmm17, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0xdb,0x4a,0x7f] + vpandq zmm17, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vpandq zmm17, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0xdb,0x8a,0x00,0x20,0x00,0x00] + vpandq zmm17, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vpandq zmm17, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0xdb,0x4a,0x80] + vpandq zmm17, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vpandq zmm17, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0xdb,0x8a,0xc0,0xdf,0xff,0xff] + vpandq zmm17, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vpandq zmm17, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0xdb,0x4a,0x7f] + vpandq zmm17, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpandq zmm17, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0xdb,0x8a,0x00,0x04,0x00,0x00] + vpandq zmm17, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpandq zmm17, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0xdb,0x4a,0x80] + vpandq zmm17, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpandq zmm17, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0xdb,0x8a,0xf8,0xfb,0xff,0xff] + vpandq zmm17, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpblendmd zmm5, zmm25, zmm11 +// CHECK: encoding: [0x62,0xd2,0x35,0x40,0x64,0xeb] + vpblendmd zmm5, zmm25, zmm11 + +// CHECK: vpblendmd zmm5 {k3}, zmm25, zmm11 +// CHECK: encoding: [0x62,0xd2,0x35,0x43,0x64,0xeb] + vpblendmd zmm5 {k3}, zmm25, zmm11 + +// CHECK: vpblendmd zmm5 {k3} {z}, zmm25, zmm11 +// CHECK: encoding: [0x62,0xd2,0x35,0xc3,0x64,0xeb] + vpblendmd zmm5 {k3} {z}, zmm25, zmm11 + +// CHECK: vpblendmd zmm5, zmm25, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x35,0x40,0x64,0x29] + vpblendmd zmm5, zmm25, zmmword ptr [rcx] + +// CHECK: vpblendmd zmm5, zmm25, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x35,0x40,0x64,0xac,0xf0,0x23,0x01,0x00,0x00] + vpblendmd zmm5, zmm25, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpblendmd zmm5, zmm25, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x35,0x50,0x64,0x29] + vpblendmd zmm5, zmm25, dword ptr [rcx]{1to16} + +// CHECK: vpblendmd zmm5, zmm25, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x35,0x40,0x64,0x6a,0x7f] + vpblendmd zmm5, zmm25, zmmword ptr [rdx + 8128] + +// CHECK: vpblendmd zmm5, zmm25, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x35,0x40,0x64,0xaa,0x00,0x20,0x00,0x00] + vpblendmd zmm5, zmm25, zmmword ptr [rdx + 8192] + +// CHECK: vpblendmd zmm5, zmm25, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x35,0x40,0x64,0x6a,0x80] + vpblendmd zmm5, zmm25, zmmword ptr [rdx - 8192] + +// CHECK: vpblendmd zmm5, zmm25, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x35,0x40,0x64,0xaa,0xc0,0xdf,0xff,0xff] + vpblendmd zmm5, zmm25, zmmword ptr [rdx - 8256] + +// CHECK: vpblendmd zmm5, zmm25, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x35,0x50,0x64,0x6a,0x7f] + vpblendmd zmm5, zmm25, dword ptr [rdx + 508]{1to16} + +// CHECK: vpblendmd zmm5, zmm25, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x35,0x50,0x64,0xaa,0x00,0x02,0x00,0x00] + vpblendmd zmm5, zmm25, dword ptr [rdx + 512]{1to16} + +// CHECK: vpblendmd zmm5, zmm25, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x35,0x50,0x64,0x6a,0x80] + vpblendmd zmm5, zmm25, dword ptr [rdx - 512]{1to16} + +// CHECK: vpblendmd zmm5, zmm25, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x35,0x50,0x64,0xaa,0xfc,0xfd,0xff,0xff] + vpblendmd zmm5, zmm25, dword ptr [rdx - 516]{1to16} + +// CHECK: vpbroadcastd zmm26, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x58,0x11] + vpbroadcastd zmm26, dword ptr [rcx] + +// CHECK: vpbroadcastd zmm26 {k2}, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x4a,0x58,0x11] + vpbroadcastd zmm26 {k2}, dword ptr [rcx] + +// CHECK: vpbroadcastd zmm26 {k2} {z}, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0xca,0x58,0x11] + vpbroadcastd zmm26 {k2} {z}, dword ptr [rcx] + +// CHECK: vpbroadcastd zmm26, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x58,0x94,0xf0,0x23,0x01,0x00,0x00] + vpbroadcastd zmm26, dword ptr [rax + 8*r14 + 291] + +// CHECK: vpbroadcastd zmm26, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x58,0x52,0x7f] + vpbroadcastd zmm26, dword ptr [rdx + 508] + +// CHECK: vpbroadcastd zmm26, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x58,0x92,0x00,0x02,0x00,0x00] + vpbroadcastd zmm26, dword ptr [rdx + 512] + +// CHECK: vpbroadcastd zmm26, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x58,0x52,0x80] + vpbroadcastd zmm26, dword ptr [rdx - 512] + +// CHECK: vpbroadcastd zmm26, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x58,0x92,0xfc,0xfd,0xff,0xff] + vpbroadcastd zmm26, dword ptr [rdx - 516] + +// CHECK: vpbroadcastd zmm10, xmm22 +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x58,0xd6] + vpbroadcastd zmm10, xmm22 + +// CHECK: vpbroadcastd zmm10 {k7}, xmm22 +// CHECK: encoding: [0x62,0x32,0x7d,0x4f,0x58,0xd6] + vpbroadcastd zmm10 {k7}, xmm22 + +// CHECK: vpbroadcastd zmm10 {k7} {z}, xmm22 +// CHECK: encoding: [0x62,0x32,0x7d,0xcf,0x58,0xd6] + vpbroadcastd zmm10 {k7} {z}, xmm22 + +// CHECK: vpbroadcastd zmm11, eax +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x7c,0xd8] + vpbroadcastd zmm11, eax + +// CHECK: vpbroadcastd zmm11 {k6}, eax +// CHECK: encoding: [0x62,0x72,0x7d,0x4e,0x7c,0xd8] + vpbroadcastd zmm11 {k6}, eax + +// CHECK: vpbroadcastd zmm11 {k6} {z}, eax +// CHECK: encoding: [0x62,0x72,0x7d,0xce,0x7c,0xd8] + vpbroadcastd zmm11 {k6} {z}, eax + +// CHECK: vpbroadcastd zmm11, ebp +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x7c,0xdd] + vpbroadcastd zmm11, ebp + +// CHECK: vpbroadcastd zmm11, r13d +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x7c,0xdd] + vpbroadcastd zmm11, r13d + +// CHECK: vpbroadcastq zmm25, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x59,0x09] + vpbroadcastq zmm25, qword ptr [rcx] + +// CHECK: vpbroadcastq zmm25 {k2}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x4a,0x59,0x09] + vpbroadcastq zmm25 {k2}, qword ptr [rcx] + +// CHECK: vpbroadcastq zmm25 {k2} {z}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0xca,0x59,0x09] + vpbroadcastq zmm25 {k2} {z}, qword ptr [rcx] + +// CHECK: vpbroadcastq zmm25, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x59,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpbroadcastq zmm25, qword ptr [rax + 8*r14 + 291] + +// CHECK: vpbroadcastq zmm25, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x59,0x4a,0x7f] + vpbroadcastq zmm25, qword ptr [rdx + 1016] + +// CHECK: vpbroadcastq zmm25, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x59,0x8a,0x00,0x04,0x00,0x00] + vpbroadcastq zmm25, qword ptr [rdx + 1024] + +// CHECK: vpbroadcastq zmm25, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x59,0x4a,0x80] + vpbroadcastq zmm25, qword ptr [rdx - 1024] + +// CHECK: vpbroadcastq zmm25, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x59,0x8a,0xf8,0xfb,0xff,0xff] + vpbroadcastq zmm25, qword ptr [rdx - 1032] + +// CHECK: vpbroadcastq zmm3, xmm5 +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x59,0xdd] + vpbroadcastq zmm3, xmm5 + +// CHECK: vpbroadcastq zmm3 {k5}, xmm5 +// CHECK: encoding: [0x62,0xf2,0xfd,0x4d,0x59,0xdd] + vpbroadcastq zmm3 {k5}, xmm5 + +// CHECK: vpbroadcastq zmm3 {k5} {z}, xmm5 +// CHECK: encoding: [0x62,0xf2,0xfd,0xcd,0x59,0xdd] + vpbroadcastq zmm3 {k5} {z}, xmm5 + +// CHECK: vpbroadcastq zmm1, rax +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x7c,0xc8] + vpbroadcastq zmm1, rax + +// CHECK: vpbroadcastq zmm1 {k6}, rax +// CHECK: encoding: [0x62,0xf2,0xfd,0x4e,0x7c,0xc8] + vpbroadcastq zmm1 {k6}, rax + +// CHECK: vpbroadcastq zmm1 {k6} {z}, rax +// CHECK: encoding: [0x62,0xf2,0xfd,0xce,0x7c,0xc8] + vpbroadcastq zmm1 {k6} {z}, rax + +// CHECK: vpbroadcastq zmm1, r8 +// CHECK: encoding: [0x62,0xd2,0xfd,0x48,0x7c,0xc8] + vpbroadcastq zmm1, r8 + +// CHECK: vpcmpd k5, zmm25, zmm10, 171 +// CHECK: encoding: [0x62,0xd3,0x35,0x40,0x1f,0xea,0xab] + vpcmpd k5, zmm25, zmm10, 171 + +// CHECK: vpcmpd k5 {k3}, zmm25, zmm10, 171 +// CHECK: encoding: [0x62,0xd3,0x35,0x43,0x1f,0xea,0xab] + vpcmpd k5 {k3}, zmm25, zmm10, 171 + +// CHECK: vpcmpd k5, zmm25, zmm10, 123 +// CHECK: encoding: [0x62,0xd3,0x35,0x40,0x1f,0xea,0x7b] + vpcmpd k5, zmm25, zmm10, 123 + +// CHECK: vpcmpd k5, zmm25, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0x29,0x7b] + vpcmpd k5, zmm25, zmmword ptr [rcx], 123 + +// CHECK: vpcmpd k5, zmm25, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0x35,0x40,0x1f,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpcmpd k5, zmm25, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpcmpd k5, zmm25, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0x29,0x7b] + vpcmpd k5, zmm25, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpcmpd k5, zmm25, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0x6a,0x7f,0x7b] + vpcmpd k5, zmm25, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpcmpd k5, zmm25, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0xaa,0x00,0x20,0x00,0x00,0x7b] + vpcmpd k5, zmm25, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpcmpd k5, zmm25, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0x6a,0x80,0x7b] + vpcmpd k5, zmm25, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpcmpd k5, zmm25, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0xaa,0xc0,0xdf,0xff,0xff,0x7b] + vpcmpd k5, zmm25, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpcmpd k5, zmm25, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0x6a,0x7f,0x7b] + vpcmpd k5, zmm25, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpcmpd k5, zmm25, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0xaa,0x00,0x02,0x00,0x00,0x7b] + vpcmpd k5, zmm25, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpcmpd k5, zmm25, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0x6a,0x80,0x7b] + vpcmpd k5, zmm25, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpcmpd k5, zmm25, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0xaa,0xfc,0xfd,0xff,0xff,0x7b] + vpcmpd k5, zmm25, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpcmpeqd k5, zmm2, zmm10 +// CHECK: encoding: [0x62,0xd1,0x6d,0x48,0x76,0xea] + vpcmpeqd k5, zmm2, zmm10 + +// CHECK: vpcmpeqd k5 {k7}, zmm2, zmm10 +// CHECK: encoding: [0x62,0xd1,0x6d,0x4f,0x76,0xea] + vpcmpeqd k5 {k7}, zmm2, zmm10 + +// CHECK: vpcmpeqd k5, zmm2, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0x29] + vpcmpeqd k5, zmm2, zmmword ptr [rcx] + +// CHECK: vpcmpeqd k5, zmm2, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x6d,0x48,0x76,0xac,0xf0,0x23,0x01,0x00,0x00] + vpcmpeqd k5, zmm2, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpcmpeqd k5, zmm2, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0x29] + vpcmpeqd k5, zmm2, dword ptr [rcx]{1to16} + +// CHECK: vpcmpeqd k5, zmm2, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0x6a,0x7f] + vpcmpeqd k5, zmm2, zmmword ptr [rdx + 8128] + +// CHECK: vpcmpeqd k5, zmm2, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0xaa,0x00,0x20,0x00,0x00] + vpcmpeqd k5, zmm2, zmmword ptr [rdx + 8192] + +// CHECK: vpcmpeqd k5, zmm2, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0x6a,0x80] + vpcmpeqd k5, zmm2, zmmword ptr [rdx - 8192] + +// CHECK: vpcmpeqd k5, zmm2, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0xaa,0xc0,0xdf,0xff,0xff] + vpcmpeqd k5, zmm2, zmmword ptr [rdx - 8256] + +// CHECK: vpcmpeqd k5, zmm2, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0x6a,0x7f] + vpcmpeqd k5, zmm2, dword ptr [rdx + 508]{1to16} + +// CHECK: vpcmpeqd k5, zmm2, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0xaa,0x00,0x02,0x00,0x00] + vpcmpeqd k5, zmm2, dword ptr [rdx + 512]{1to16} + +// CHECK: vpcmpeqd k5, zmm2, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0x6a,0x80] + vpcmpeqd k5, zmm2, dword ptr [rdx - 512]{1to16} + +// CHECK: vpcmpeqd k5, zmm2, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0xaa,0xfc,0xfd,0xff,0xff] + vpcmpeqd k5, zmm2, dword ptr [rdx - 516]{1to16} + +// CHECK: vpcmpeqq k3, zmm22, zmm2 +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0xda] + vpcmpeqq k3, zmm22, zmm2 + +// CHECK: vpcmpeqq k3 {k6}, zmm22, zmm2 +// CHECK: encoding: [0x62,0xf2,0xcd,0x46,0x29,0xda] + vpcmpeqq k3 {k6}, zmm22, zmm2 + +// CHECK: vpcmpeqq k3, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x19] + vpcmpeqq k3, zmm22, zmmword ptr [rcx] + +// CHECK: vpcmpeqq k3, zmm22, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xcd,0x40,0x29,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpcmpeqq k3, zmm22, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpcmpeqq k3, zmm22, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x19] + vpcmpeqq k3, zmm22, qword ptr [rcx]{1to8} + +// CHECK: vpcmpeqq k3, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x5a,0x7f] + vpcmpeqq k3, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpcmpeqq k3, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x9a,0x00,0x20,0x00,0x00] + vpcmpeqq k3, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpcmpeqq k3, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x5a,0x80] + vpcmpeqq k3, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpcmpeqq k3, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x9a,0xc0,0xdf,0xff,0xff] + vpcmpeqq k3, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpcmpeqq k3, zmm22, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x5a,0x7f] + vpcmpeqq k3, zmm22, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpcmpeqq k3, zmm22, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x9a,0x00,0x04,0x00,0x00] + vpcmpeqq k3, zmm22, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpcmpeqq k3, zmm22, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x5a,0x80] + vpcmpeqq k3, zmm22, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpcmpeqq k3, zmm22, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x9a,0xf8,0xfb,0xff,0xff] + vpcmpeqq k3, zmm22, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpcmpgtd k5, zmm21, zmm8 +// CHECK: encoding: [0x62,0xd1,0x55,0x40,0x66,0xe8] + vpcmpgtd k5, zmm21, zmm8 + +// CHECK: vpcmpgtd k5 {k5}, zmm21, zmm8 +// CHECK: encoding: [0x62,0xd1,0x55,0x45,0x66,0xe8] + vpcmpgtd k5 {k5}, zmm21, zmm8 + +// CHECK: vpcmpgtd k5, zmm21, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0x29] + vpcmpgtd k5, zmm21, zmmword ptr [rcx] + +// CHECK: vpcmpgtd k5, zmm21, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x55,0x40,0x66,0xac,0xf0,0x23,0x01,0x00,0x00] + vpcmpgtd k5, zmm21, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpcmpgtd k5, zmm21, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0x29] + vpcmpgtd k5, zmm21, dword ptr [rcx]{1to16} + +// CHECK: vpcmpgtd k5, zmm21, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0x6a,0x7f] + vpcmpgtd k5, zmm21, zmmword ptr [rdx + 8128] + +// CHECK: vpcmpgtd k5, zmm21, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0xaa,0x00,0x20,0x00,0x00] + vpcmpgtd k5, zmm21, zmmword ptr [rdx + 8192] + +// CHECK: vpcmpgtd k5, zmm21, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0x6a,0x80] + vpcmpgtd k5, zmm21, zmmword ptr [rdx - 8192] + +// CHECK: vpcmpgtd k5, zmm21, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0xaa,0xc0,0xdf,0xff,0xff] + vpcmpgtd k5, zmm21, zmmword ptr [rdx - 8256] + +// CHECK: vpcmpgtd k5, zmm21, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0x6a,0x7f] + vpcmpgtd k5, zmm21, dword ptr [rdx + 508]{1to16} + +// CHECK: vpcmpgtd k5, zmm21, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0xaa,0x00,0x02,0x00,0x00] + vpcmpgtd k5, zmm21, dword ptr [rdx + 512]{1to16} + +// CHECK: vpcmpgtd k5, zmm21, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0x6a,0x80] + vpcmpgtd k5, zmm21, dword ptr [rdx - 512]{1to16} + +// CHECK: vpcmpgtd k5, zmm21, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0xaa,0xfc,0xfd,0xff,0xff] + vpcmpgtd k5, zmm21, dword ptr [rdx - 516]{1to16} + +// CHECK: vpcmpgtq k2, zmm20, zmm17 +// CHECK: encoding: [0x62,0xb2,0xdd,0x40,0x37,0xd1] + vpcmpgtq k2, zmm20, zmm17 + +// CHECK: vpcmpgtq k2 {k3}, zmm20, zmm17 +// CHECK: encoding: [0x62,0xb2,0xdd,0x43,0x37,0xd1] + vpcmpgtq k2 {k3}, zmm20, zmm17 + +// CHECK: vpcmpgtq k2, zmm20, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x11] + vpcmpgtq k2, zmm20, zmmword ptr [rcx] + +// CHECK: vpcmpgtq k2, zmm20, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xdd,0x40,0x37,0x94,0xf0,0x23,0x01,0x00,0x00] + vpcmpgtq k2, zmm20, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpcmpgtq k2, zmm20, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x11] + vpcmpgtq k2, zmm20, qword ptr [rcx]{1to8} + +// CHECK: vpcmpgtq k2, zmm20, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x52,0x7f] + vpcmpgtq k2, zmm20, zmmword ptr [rdx + 8128] + +// CHECK: vpcmpgtq k2, zmm20, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x92,0x00,0x20,0x00,0x00] + vpcmpgtq k2, zmm20, zmmword ptr [rdx + 8192] + +// CHECK: vpcmpgtq k2, zmm20, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x52,0x80] + vpcmpgtq k2, zmm20, zmmword ptr [rdx - 8192] + +// CHECK: vpcmpgtq k2, zmm20, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x92,0xc0,0xdf,0xff,0xff] + vpcmpgtq k2, zmm20, zmmword ptr [rdx - 8256] + +// CHECK: vpcmpgtq k2, zmm20, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x52,0x7f] + vpcmpgtq k2, zmm20, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpcmpgtq k2, zmm20, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x92,0x00,0x04,0x00,0x00] + vpcmpgtq k2, zmm20, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpcmpgtq k2, zmm20, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x52,0x80] + vpcmpgtq k2, zmm20, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpcmpgtq k2, zmm20, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x92,0xf8,0xfb,0xff,0xff] + vpcmpgtq k2, zmm20, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpcmpq k5, zmm28, zmm28, 171 +// CHECK: encoding: [0x62,0x93,0x9d,0x40,0x1f,0xec,0xab] + vpcmpq k5, zmm28, zmm28, 171 + +// CHECK: vpcmpq k5 {k3}, zmm28, zmm28, 171 +// CHECK: encoding: [0x62,0x93,0x9d,0x43,0x1f,0xec,0xab] + vpcmpq k5 {k3}, zmm28, zmm28, 171 + +// CHECK: vpcmpq k5, zmm28, zmm28, 123 +// CHECK: encoding: [0x62,0x93,0x9d,0x40,0x1f,0xec,0x7b] + vpcmpq k5, zmm28, zmm28, 123 + +// CHECK: vpcmpq k5, zmm28, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x40,0x1f,0x29,0x7b] + vpcmpq k5, zmm28, zmmword ptr [rcx], 123 + +// CHECK: vpcmpq k5, zmm28, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0x9d,0x40,0x1f,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpcmpq k5, zmm28, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpcmpq k5, zmm28, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x50,0x1f,0x29,0x7b] + vpcmpq k5, zmm28, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpcmpq k5, zmm28, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x40,0x1f,0x6a,0x7f,0x7b] + vpcmpq k5, zmm28, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpcmpq k5, zmm28, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x40,0x1f,0xaa,0x00,0x20,0x00,0x00,0x7b] + vpcmpq k5, zmm28, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpcmpq k5, zmm28, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x40,0x1f,0x6a,0x80,0x7b] + vpcmpq k5, zmm28, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpcmpq k5, zmm28, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x40,0x1f,0xaa,0xc0,0xdf,0xff,0xff,0x7b] + vpcmpq k5, zmm28, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpcmpq k5, zmm28, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x50,0x1f,0x6a,0x7f,0x7b] + vpcmpq k5, zmm28, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpcmpq k5, zmm28, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x50,0x1f,0xaa,0x00,0x04,0x00,0x00,0x7b] + vpcmpq k5, zmm28, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpcmpq k5, zmm28, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x50,0x1f,0x6a,0x80,0x7b] + vpcmpq k5, zmm28, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpcmpq k5, zmm28, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x50,0x1f,0xaa,0xf8,0xfb,0xff,0xff,0x7b] + vpcmpq k5, zmm28, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpcmpud k2, zmm25, zmm7, 171 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1e,0xd7,0xab] + vpcmpud k2, zmm25, zmm7, 171 + +// CHECK: vpcmpud k2 {k1}, zmm25, zmm7, 171 +// CHECK: encoding: [0x62,0xf3,0x35,0x41,0x1e,0xd7,0xab] + vpcmpud k2 {k1}, zmm25, zmm7, 171 + +// CHECK: vpcmpud k2, zmm25, zmm7, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1e,0xd7,0x7b] + vpcmpud k2, zmm25, zmm7, 123 + +// CHECK: vpcmpud k2, zmm25, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1e,0x11,0x7b] + vpcmpud k2, zmm25, zmmword ptr [rcx], 123 + +// CHECK: vpcmpud k2, zmm25, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0x35,0x40,0x1e,0x94,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpcmpud k2, zmm25, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpcmpud k2, zmm25, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1e,0x11,0x7b] + vpcmpud k2, zmm25, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpcmpud k2, zmm25, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1e,0x52,0x7f,0x7b] + vpcmpud k2, zmm25, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpcmpud k2, zmm25, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1e,0x92,0x00,0x20,0x00,0x00,0x7b] + vpcmpud k2, zmm25, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpcmpud k2, zmm25, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1e,0x52,0x80,0x7b] + vpcmpud k2, zmm25, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpcmpud k2, zmm25, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1e,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpcmpud k2, zmm25, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpcmpud k2, zmm25, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1e,0x52,0x7f,0x7b] + vpcmpud k2, zmm25, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpcmpud k2, zmm25, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1e,0x92,0x00,0x02,0x00,0x00,0x7b] + vpcmpud k2, zmm25, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpcmpud k2, zmm25, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1e,0x52,0x80,0x7b] + vpcmpud k2, zmm25, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpcmpud k2, zmm25, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1e,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vpcmpud k2, zmm25, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpcmpuq k3, zmm14, zmm8, 171 +// CHECK: encoding: [0x62,0xd3,0x8d,0x48,0x1e,0xd8,0xab] + vpcmpuq k3, zmm14, zmm8, 171 + +// CHECK: vpcmpuq k3 {k2}, zmm14, zmm8, 171 +// CHECK: encoding: [0x62,0xd3,0x8d,0x4a,0x1e,0xd8,0xab] + vpcmpuq k3 {k2}, zmm14, zmm8, 171 + +// CHECK: vpcmpuq k3, zmm14, zmm8, 123 +// CHECK: encoding: [0x62,0xd3,0x8d,0x48,0x1e,0xd8,0x7b] + vpcmpuq k3, zmm14, zmm8, 123 + +// CHECK: vpcmpuq k3, zmm14, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x19,0x7b] + vpcmpuq k3, zmm14, zmmword ptr [rcx], 123 + +// CHECK: vpcmpuq k3, zmm14, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0x8d,0x48,0x1e,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpcmpuq k3, zmm14, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpcmpuq k3, zmm14, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x19,0x7b] + vpcmpuq k3, zmm14, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpcmpuq k3, zmm14, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x5a,0x7f,0x7b] + vpcmpuq k3, zmm14, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpcmpuq k3, zmm14, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x9a,0x00,0x20,0x00,0x00,0x7b] + vpcmpuq k3, zmm14, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpcmpuq k3, zmm14, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x5a,0x80,0x7b] + vpcmpuq k3, zmm14, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpcmpuq k3, zmm14, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vpcmpuq k3, zmm14, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpcmpuq k3, zmm14, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x5a,0x7f,0x7b] + vpcmpuq k3, zmm14, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpcmpuq k3, zmm14, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x9a,0x00,0x04,0x00,0x00,0x7b] + vpcmpuq k3, zmm14, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpcmpuq k3, zmm14, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x5a,0x80,0x7b] + vpcmpuq k3, zmm14, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpcmpuq k3, zmm14, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x9a,0xf8,0xfb,0xff,0xff,0x7b] + vpcmpuq k3, zmm14, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpblendmq zmm27, zmm14, zmm17 +// CHECK: encoding: [0x62,0x22,0x8d,0x48,0x64,0xd9] + vpblendmq zmm27, zmm14, zmm17 + +// CHECK: vpblendmq zmm27 {k5}, zmm14, zmm17 +// CHECK: encoding: [0x62,0x22,0x8d,0x4d,0x64,0xd9] + vpblendmq zmm27 {k5}, zmm14, zmm17 + +// CHECK: vpblendmq zmm27 {k5} {z}, zmm14, zmm17 +// CHECK: encoding: [0x62,0x22,0x8d,0xcd,0x64,0xd9] + vpblendmq zmm27 {k5} {z}, zmm14, zmm17 + +// CHECK: vpblendmq zmm27, zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x8d,0x48,0x64,0x19] + vpblendmq zmm27, zmm14, zmmword ptr [rcx] + +// CHECK: vpblendmq zmm27, zmm14, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x8d,0x48,0x64,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpblendmq zmm27, zmm14, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpblendmq zmm27, zmm14, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0x8d,0x58,0x64,0x19] + vpblendmq zmm27, zmm14, qword ptr [rcx]{1to8} + +// CHECK: vpblendmq zmm27, zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x8d,0x48,0x64,0x5a,0x7f] + vpblendmq zmm27, zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vpblendmq zmm27, zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x8d,0x48,0x64,0x9a,0x00,0x20,0x00,0x00] + vpblendmq zmm27, zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vpblendmq zmm27, zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x8d,0x48,0x64,0x5a,0x80] + vpblendmq zmm27, zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vpblendmq zmm27, zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x8d,0x48,0x64,0x9a,0xc0,0xdf,0xff,0xff] + vpblendmq zmm27, zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vpblendmq zmm27, zmm14, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0x8d,0x58,0x64,0x5a,0x7f] + vpblendmq zmm27, zmm14, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpblendmq zmm27, zmm14, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0x8d,0x58,0x64,0x9a,0x00,0x04,0x00,0x00] + vpblendmq zmm27, zmm14, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpblendmq zmm27, zmm14, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0x8d,0x58,0x64,0x5a,0x80] + vpblendmq zmm27, zmm14, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpblendmq zmm27, zmm14, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0x8d,0x58,0x64,0x9a,0xf8,0xfb,0xff,0xff] + vpblendmq zmm27, zmm14, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpcompressd zmmword ptr [rcx], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0x39] + vpcompressd zmmword ptr [rcx], zmm23 + +// CHECK: vpcompressd zmmword ptr [rcx] {k7}, zmm23 +// CHECK: encoding: [0x62,0xe2,0x7d,0x4f,0x8b,0x39] + vpcompressd zmmword ptr [rcx] {k7}, zmm23 + +// CHECK: vpcompressd zmmword ptr [rax + 8*r14 + 291], zmm23 +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x8b,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpcompressd zmmword ptr [rax + 8*r14 + 291], zmm23 + +// CHECK: vpcompressd zmmword ptr [rdx + 508], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0x7a,0x7f] + vpcompressd zmmword ptr [rdx + 508], zmm23 + +// CHECK: vpcompressd zmmword ptr [rdx + 512], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0xba,0x00,0x02,0x00,0x00] + vpcompressd zmmword ptr [rdx + 512], zmm23 + +// CHECK: vpcompressd zmmword ptr [rdx - 512], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0x7a,0x80] + vpcompressd zmmword ptr [rdx - 512], zmm23 + +// CHECK: vpcompressd zmmword ptr [rdx - 516], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0xba,0xfc,0xfd,0xff,0xff] + vpcompressd zmmword ptr [rdx - 516], zmm23 + +// CHECK: vpcompressd zmm16, zmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x8b,0xd0] + vpcompressd zmm16, zmm18 + +// CHECK: vpcompressd zmm16 {k2}, zmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0x4a,0x8b,0xd0] + vpcompressd zmm16 {k2}, zmm18 + +// CHECK: vpcompressd zmm16 {k2} {z}, zmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0xca,0x8b,0xd0] + vpcompressd zmm16 {k2} {z}, zmm18 + +// CHECK: vpermd zmm22, zmm28, zmm9 +// CHECK: encoding: [0x62,0xc2,0x1d,0x40,0x36,0xf1] + vpermd zmm22, zmm28, zmm9 + +// CHECK: vpermd zmm22 {k1}, zmm28, zmm9 +// CHECK: encoding: [0x62,0xc2,0x1d,0x41,0x36,0xf1] + vpermd zmm22 {k1}, zmm28, zmm9 + +// CHECK: vpermd zmm22 {k1} {z}, zmm28, zmm9 +// CHECK: encoding: [0x62,0xc2,0x1d,0xc1,0x36,0xf1] + vpermd zmm22 {k1} {z}, zmm28, zmm9 + +// CHECK: vpermd zmm22, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0x31] + vpermd zmm22, zmm28, zmmword ptr [rcx] + +// CHECK: vpermd zmm22, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x1d,0x40,0x36,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpermd zmm22, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermd zmm22, zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0x31] + vpermd zmm22, zmm28, dword ptr [rcx]{1to16} + +// CHECK: vpermd zmm22, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0x72,0x7f] + vpermd zmm22, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vpermd zmm22, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0xb2,0x00,0x20,0x00,0x00] + vpermd zmm22, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vpermd zmm22, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0x72,0x80] + vpermd zmm22, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vpermd zmm22, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0xb2,0xc0,0xdf,0xff,0xff] + vpermd zmm22, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vpermd zmm22, zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0x72,0x7f] + vpermd zmm22, zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermd zmm22, zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0xb2,0x00,0x02,0x00,0x00] + vpermd zmm22, zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermd zmm22, zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0x72,0x80] + vpermd zmm22, zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermd zmm22, zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0xb2,0xfc,0xfd,0xff,0xff] + vpermd zmm22, zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermilpd zmm19, zmm4, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x05,0xdc,0xab] + vpermilpd zmm19, zmm4, 171 + +// CHECK: vpermilpd zmm19 {k1}, zmm4, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0x49,0x05,0xdc,0xab] + vpermilpd zmm19 {k1}, zmm4, 171 + +// CHECK: vpermilpd zmm19 {k1} {z}, zmm4, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0xc9,0x05,0xdc,0xab] + vpermilpd zmm19 {k1} {z}, zmm4, 171 + +// CHECK: vpermilpd zmm19, zmm4, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x05,0xdc,0x7b] + vpermilpd zmm19, zmm4, 123 + +// CHECK: vpermilpd zmm19, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x05,0x19,0x7b] + vpermilpd zmm19, zmmword ptr [rcx], 123 + +// CHECK: vpermilpd zmm19, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xa3,0xfd,0x48,0x05,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpermilpd zmm19, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpermilpd zmm19, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x05,0x19,0x7b] + vpermilpd zmm19, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpermilpd zmm19, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x05,0x5a,0x7f,0x7b] + vpermilpd zmm19, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpermilpd zmm19, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x05,0x9a,0x00,0x20,0x00,0x00,0x7b] + vpermilpd zmm19, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpermilpd zmm19, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x05,0x5a,0x80,0x7b] + vpermilpd zmm19, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpermilpd zmm19, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x05,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vpermilpd zmm19, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpermilpd zmm19, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x05,0x5a,0x7f,0x7b] + vpermilpd zmm19, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpermilpd zmm19, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x05,0x9a,0x00,0x04,0x00,0x00,0x7b] + vpermilpd zmm19, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpermilpd zmm19, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x05,0x5a,0x80,0x7b] + vpermilpd zmm19, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpermilpd zmm19, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x05,0x9a,0xf8,0xfb,0xff,0xff,0x7b] + vpermilpd zmm19, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpermilpd zmm1, zmm26, zmm21 +// CHECK: encoding: [0x62,0xb2,0xad,0x40,0x0d,0xcd] + vpermilpd zmm1, zmm26, zmm21 + +// CHECK: vpermilpd zmm1 {k2}, zmm26, zmm21 +// CHECK: encoding: [0x62,0xb2,0xad,0x42,0x0d,0xcd] + vpermilpd zmm1 {k2}, zmm26, zmm21 + +// CHECK: vpermilpd zmm1 {k2} {z}, zmm26, zmm21 +// CHECK: encoding: [0x62,0xb2,0xad,0xc2,0x0d,0xcd] + vpermilpd zmm1 {k2} {z}, zmm26, zmm21 + +// CHECK: vpermilpd zmm1, zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xad,0x40,0x0d,0x09] + vpermilpd zmm1, zmm26, zmmword ptr [rcx] + +// CHECK: vpermilpd zmm1, zmm26, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xad,0x40,0x0d,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpermilpd zmm1, zmm26, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermilpd zmm1, zmm26, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x50,0x0d,0x09] + vpermilpd zmm1, zmm26, qword ptr [rcx]{1to8} + +// CHECK: vpermilpd zmm1, zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xad,0x40,0x0d,0x4a,0x7f] + vpermilpd zmm1, zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vpermilpd zmm1, zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xad,0x40,0x0d,0x8a,0x00,0x20,0x00,0x00] + vpermilpd zmm1, zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vpermilpd zmm1, zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xad,0x40,0x0d,0x4a,0x80] + vpermilpd zmm1, zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vpermilpd zmm1, zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xad,0x40,0x0d,0x8a,0xc0,0xdf,0xff,0xff] + vpermilpd zmm1, zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vpermilpd zmm1, zmm26, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x50,0x0d,0x4a,0x7f] + vpermilpd zmm1, zmm26, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermilpd zmm1, zmm26, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x50,0x0d,0x8a,0x00,0x04,0x00,0x00] + vpermilpd zmm1, zmm26, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermilpd zmm1, zmm26, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x50,0x0d,0x4a,0x80] + vpermilpd zmm1, zmm26, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermilpd zmm1, zmm26, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x50,0x0d,0x8a,0xf8,0xfb,0xff,0xff] + vpermilpd zmm1, zmm26, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermilps zmm2, zmm22, 171 +// CHECK: encoding: [0x62,0xb3,0x7d,0x48,0x04,0xd6,0xab] + vpermilps zmm2, zmm22, 171 + +// CHECK: vpermilps zmm2 {k2}, zmm22, 171 +// CHECK: encoding: [0x62,0xb3,0x7d,0x4a,0x04,0xd6,0xab] + vpermilps zmm2 {k2}, zmm22, 171 + +// CHECK: vpermilps zmm2 {k2} {z}, zmm22, 171 +// CHECK: encoding: [0x62,0xb3,0x7d,0xca,0x04,0xd6,0xab] + vpermilps zmm2 {k2} {z}, zmm22, 171 + +// CHECK: vpermilps zmm2, zmm22, 123 +// CHECK: encoding: [0x62,0xb3,0x7d,0x48,0x04,0xd6,0x7b] + vpermilps zmm2, zmm22, 123 + +// CHECK: vpermilps zmm2, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x04,0x11,0x7b] + vpermilps zmm2, zmmword ptr [rcx], 123 + +// CHECK: vpermilps zmm2, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0x7d,0x48,0x04,0x94,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpermilps zmm2, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpermilps zmm2, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x58,0x04,0x11,0x7b] + vpermilps zmm2, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpermilps zmm2, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x04,0x52,0x7f,0x7b] + vpermilps zmm2, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpermilps zmm2, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x04,0x92,0x00,0x20,0x00,0x00,0x7b] + vpermilps zmm2, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpermilps zmm2, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x04,0x52,0x80,0x7b] + vpermilps zmm2, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpermilps zmm2, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x04,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpermilps zmm2, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpermilps zmm2, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x58,0x04,0x52,0x7f,0x7b] + vpermilps zmm2, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpermilps zmm2, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x58,0x04,0x92,0x00,0x02,0x00,0x00,0x7b] + vpermilps zmm2, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpermilps zmm2, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x58,0x04,0x52,0x80,0x7b] + vpermilps zmm2, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpermilps zmm2, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x58,0x04,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vpermilps zmm2, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpermilps zmm13, zmm20, zmm2 +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x0c,0xea] + vpermilps zmm13, zmm20, zmm2 + +// CHECK: vpermilps zmm13 {k1}, zmm20, zmm2 +// CHECK: encoding: [0x62,0x72,0x5d,0x41,0x0c,0xea] + vpermilps zmm13 {k1}, zmm20, zmm2 + +// CHECK: vpermilps zmm13 {k1} {z}, zmm20, zmm2 +// CHECK: encoding: [0x62,0x72,0x5d,0xc1,0x0c,0xea] + vpermilps zmm13 {k1} {z}, zmm20, zmm2 + +// CHECK: vpermilps zmm13, zmm20, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x0c,0x29] + vpermilps zmm13, zmm20, zmmword ptr [rcx] + +// CHECK: vpermilps zmm13, zmm20, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x5d,0x40,0x0c,0xac,0xf0,0x23,0x01,0x00,0x00] + vpermilps zmm13, zmm20, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermilps zmm13, zmm20, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x0c,0x29] + vpermilps zmm13, zmm20, dword ptr [rcx]{1to16} + +// CHECK: vpermilps zmm13, zmm20, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x0c,0x6a,0x7f] + vpermilps zmm13, zmm20, zmmword ptr [rdx + 8128] + +// CHECK: vpermilps zmm13, zmm20, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x0c,0xaa,0x00,0x20,0x00,0x00] + vpermilps zmm13, zmm20, zmmword ptr [rdx + 8192] + +// CHECK: vpermilps zmm13, zmm20, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x0c,0x6a,0x80] + vpermilps zmm13, zmm20, zmmword ptr [rdx - 8192] + +// CHECK: vpermilps zmm13, zmm20, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x0c,0xaa,0xc0,0xdf,0xff,0xff] + vpermilps zmm13, zmm20, zmmword ptr [rdx - 8256] + +// CHECK: vpermilps zmm13, zmm20, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x0c,0x6a,0x7f] + vpermilps zmm13, zmm20, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermilps zmm13, zmm20, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x0c,0xaa,0x00,0x02,0x00,0x00] + vpermilps zmm13, zmm20, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermilps zmm13, zmm20, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x0c,0x6a,0x80] + vpermilps zmm13, zmm20, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermilps zmm13, zmm20, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x0c,0xaa,0xfc,0xfd,0xff,0xff] + vpermilps zmm13, zmm20, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermpd zmm3, zmm27, 171 +// CHECK: encoding: [0x62,0x93,0xfd,0x48,0x01,0xdb,0xab] + vpermpd zmm3, zmm27, 171 + +// CHECK: vpermpd zmm3 {k2}, zmm27, 171 +// CHECK: encoding: [0x62,0x93,0xfd,0x4a,0x01,0xdb,0xab] + vpermpd zmm3 {k2}, zmm27, 171 + +// CHECK: vpermpd zmm3 {k2} {z}, zmm27, 171 +// CHECK: encoding: [0x62,0x93,0xfd,0xca,0x01,0xdb,0xab] + vpermpd zmm3 {k2} {z}, zmm27, 171 + +// CHECK: vpermpd zmm3, zmm27, 123 +// CHECK: encoding: [0x62,0x93,0xfd,0x48,0x01,0xdb,0x7b] + vpermpd zmm3, zmm27, 123 + +// CHECK: vpermpd zmm3, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x19,0x7b] + vpermpd zmm3, zmmword ptr [rcx], 123 + +// CHECK: vpermpd zmm3, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0xfd,0x48,0x01,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpermpd zmm3, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpermpd zmm3, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x19,0x7b] + vpermpd zmm3, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpermpd zmm3, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x5a,0x7f,0x7b] + vpermpd zmm3, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpermpd zmm3, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x9a,0x00,0x20,0x00,0x00,0x7b] + vpermpd zmm3, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpermpd zmm3, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x5a,0x80,0x7b] + vpermpd zmm3, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpermpd zmm3, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vpermpd zmm3, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpermpd zmm3, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x5a,0x7f,0x7b] + vpermpd zmm3, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpermpd zmm3, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x9a,0x00,0x04,0x00,0x00,0x7b] + vpermpd zmm3, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpermpd zmm3, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x5a,0x80,0x7b] + vpermpd zmm3, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpermpd zmm3, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x9a,0xf8,0xfb,0xff,0xff,0x7b] + vpermpd zmm3, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpermps zmm4, zmm2, zmm24 +// CHECK: encoding: [0x62,0x92,0x6d,0x48,0x16,0xe0] + vpermps zmm4, zmm2, zmm24 + +// CHECK: vpermps zmm4 {k4}, zmm2, zmm24 +// CHECK: encoding: [0x62,0x92,0x6d,0x4c,0x16,0xe0] + vpermps zmm4 {k4}, zmm2, zmm24 + +// CHECK: vpermps zmm4 {k4} {z}, zmm2, zmm24 +// CHECK: encoding: [0x62,0x92,0x6d,0xcc,0x16,0xe0] + vpermps zmm4 {k4} {z}, zmm2, zmm24 + +// CHECK: vpermps zmm4, zmm2, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0x21] + vpermps zmm4, zmm2, zmmword ptr [rcx] + +// CHECK: vpermps zmm4, zmm2, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x6d,0x48,0x16,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpermps zmm4, zmm2, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermps zmm4, zmm2, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0x21] + vpermps zmm4, zmm2, dword ptr [rcx]{1to16} + +// CHECK: vpermps zmm4, zmm2, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0x62,0x7f] + vpermps zmm4, zmm2, zmmword ptr [rdx + 8128] + +// CHECK: vpermps zmm4, zmm2, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0xa2,0x00,0x20,0x00,0x00] + vpermps zmm4, zmm2, zmmword ptr [rdx + 8192] + +// CHECK: vpermps zmm4, zmm2, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0x62,0x80] + vpermps zmm4, zmm2, zmmword ptr [rdx - 8192] + +// CHECK: vpermps zmm4, zmm2, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0xa2,0xc0,0xdf,0xff,0xff] + vpermps zmm4, zmm2, zmmword ptr [rdx - 8256] + +// CHECK: vpermps zmm4, zmm2, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0x62,0x7f] + vpermps zmm4, zmm2, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermps zmm4, zmm2, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0xa2,0x00,0x02,0x00,0x00] + vpermps zmm4, zmm2, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermps zmm4, zmm2, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0x62,0x80] + vpermps zmm4, zmm2, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermps zmm4, zmm2, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0xa2,0xfc,0xfd,0xff,0xff] + vpermps zmm4, zmm2, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermq zmm25, zmm4, 171 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0xcc,0xab] + vpermq zmm25, zmm4, 171 + +// CHECK: vpermq zmm25 {k6}, zmm4, 171 +// CHECK: encoding: [0x62,0x63,0xfd,0x4e,0x00,0xcc,0xab] + vpermq zmm25 {k6}, zmm4, 171 + +// CHECK: vpermq zmm25 {k6} {z}, zmm4, 171 +// CHECK: encoding: [0x62,0x63,0xfd,0xce,0x00,0xcc,0xab] + vpermq zmm25 {k6} {z}, zmm4, 171 + +// CHECK: vpermq zmm25, zmm4, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0xcc,0x7b] + vpermq zmm25, zmm4, 123 + +// CHECK: vpermq zmm25, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x09,0x7b] + vpermq zmm25, zmmword ptr [rcx], 123 + +// CHECK: vpermq zmm25, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x23,0xfd,0x48,0x00,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpermq zmm25, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpermq zmm25, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x09,0x7b] + vpermq zmm25, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpermq zmm25, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x4a,0x7f,0x7b] + vpermq zmm25, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpermq zmm25, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x8a,0x00,0x20,0x00,0x00,0x7b] + vpermq zmm25, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpermq zmm25, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x4a,0x80,0x7b] + vpermq zmm25, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpermq zmm25, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vpermq zmm25, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpermq zmm25, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x4a,0x7f,0x7b] + vpermq zmm25, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpermq zmm25, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x8a,0x00,0x04,0x00,0x00,0x7b] + vpermq zmm25, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpermq zmm25, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x4a,0x80,0x7b] + vpermq zmm25, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpermq zmm25, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + vpermq zmm25, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpexpandd zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x89,0x09] + vpexpandd zmm1, zmmword ptr [rcx] + +// CHECK: vpexpandd zmm1 {k7}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x4f,0x89,0x09] + vpexpandd zmm1 {k7}, zmmword ptr [rcx] + +// CHECK: vpexpandd zmm1 {k7} {z}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0xcf,0x89,0x09] + vpexpandd zmm1 {k7} {z}, zmmword ptr [rcx] + +// CHECK: vpexpandd zmm1, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x89,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpexpandd zmm1, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpexpandd zmm1, zmmword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x89,0x4a,0x7f] + vpexpandd zmm1, zmmword ptr [rdx + 508] + +// CHECK: vpexpandd zmm1, zmmword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x89,0x8a,0x00,0x02,0x00,0x00] + vpexpandd zmm1, zmmword ptr [rdx + 512] + +// CHECK: vpexpandd zmm1, zmmword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x89,0x4a,0x80] + vpexpandd zmm1, zmmword ptr [rdx - 512] + +// CHECK: vpexpandd zmm1, zmmword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x89,0x8a,0xfc,0xfd,0xff,0xff] + vpexpandd zmm1, zmmword ptr [rdx - 516] + +// CHECK: vpexpandd zmm19, zmm25 +// CHECK: encoding: [0x62,0x82,0x7d,0x48,0x89,0xd9] + vpexpandd zmm19, zmm25 + +// CHECK: vpexpandd zmm19 {k5}, zmm25 +// CHECK: encoding: [0x62,0x82,0x7d,0x4d,0x89,0xd9] + vpexpandd zmm19 {k5}, zmm25 + +// CHECK: vpexpandd zmm19 {k5} {z}, zmm25 +// CHECK: encoding: [0x62,0x82,0x7d,0xcd,0x89,0xd9] + vpexpandd zmm19 {k5} {z}, zmm25 + +// CHECK: vpexpandq zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x89,0x01] + vpexpandq zmm24, zmmword ptr [rcx] + +// CHECK: vpexpandq zmm24 {k7}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x4f,0x89,0x01] + vpexpandq zmm24 {k7}, zmmword ptr [rcx] + +// CHECK: vpexpandq zmm24 {k7} {z}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0xcf,0x89,0x01] + vpexpandq zmm24 {k7} {z}, zmmword ptr [rcx] + +// CHECK: vpexpandq zmm24, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x89,0x84,0xf0,0x23,0x01,0x00,0x00] + vpexpandq zmm24, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpexpandq zmm24, zmmword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x89,0x42,0x7f] + vpexpandq zmm24, zmmword ptr [rdx + 1016] + +// CHECK: vpexpandq zmm24, zmmword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x89,0x82,0x00,0x04,0x00,0x00] + vpexpandq zmm24, zmmword ptr [rdx + 1024] + +// CHECK: vpexpandq zmm24, zmmword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x89,0x42,0x80] + vpexpandq zmm24, zmmword ptr [rdx - 1024] + +// CHECK: vpexpandq zmm24, zmmword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x89,0x82,0xf8,0xfb,0xff,0xff] + vpexpandq zmm24, zmmword ptr [rdx - 1032] + +// CHECK: vpexpandq zmm15, zmm8 +// CHECK: encoding: [0x62,0x52,0xfd,0x48,0x89,0xf8] + vpexpandq zmm15, zmm8 + +// CHECK: vpexpandq zmm15 {k7}, zmm8 +// CHECK: encoding: [0x62,0x52,0xfd,0x4f,0x89,0xf8] + vpexpandq zmm15 {k7}, zmm8 + +// CHECK: vpexpandq zmm15 {k7} {z}, zmm8 +// CHECK: encoding: [0x62,0x52,0xfd,0xcf,0x89,0xf8] + vpexpandq zmm15 {k7} {z}, zmm8 + +// CHECK: vpmaxsd zmm6, zmm8, zmm16 +// CHECK: encoding: [0x62,0xb2,0x3d,0x48,0x3d,0xf0] + vpmaxsd zmm6, zmm8, zmm16 + +// CHECK: vpmaxsd zmm6 {k3}, zmm8, zmm16 +// CHECK: encoding: [0x62,0xb2,0x3d,0x4b,0x3d,0xf0] + vpmaxsd zmm6 {k3}, zmm8, zmm16 + +// CHECK: vpmaxsd zmm6 {k3} {z}, zmm8, zmm16 +// CHECK: encoding: [0x62,0xb2,0x3d,0xcb,0x3d,0xf0] + vpmaxsd zmm6 {k3} {z}, zmm8, zmm16 + +// CHECK: vpmaxsd zmm6, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x3d,0x31] + vpmaxsd zmm6, zmm8, zmmword ptr [rcx] + +// CHECK: vpmaxsd zmm6, zmm8, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x3d,0x48,0x3d,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpmaxsd zmm6, zmm8, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmaxsd zmm6, zmm8, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x3d,0x31] + vpmaxsd zmm6, zmm8, dword ptr [rcx]{1to16} + +// CHECK: vpmaxsd zmm6, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x3d,0x72,0x7f] + vpmaxsd zmm6, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vpmaxsd zmm6, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x3d,0xb2,0x00,0x20,0x00,0x00] + vpmaxsd zmm6, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vpmaxsd zmm6, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x3d,0x72,0x80] + vpmaxsd zmm6, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vpmaxsd zmm6, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x3d,0xb2,0xc0,0xdf,0xff,0xff] + vpmaxsd zmm6, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vpmaxsd zmm6, zmm8, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x3d,0x72,0x7f] + vpmaxsd zmm6, zmm8, dword ptr [rdx + 508]{1to16} + +// CHECK: vpmaxsd zmm6, zmm8, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x3d,0xb2,0x00,0x02,0x00,0x00] + vpmaxsd zmm6, zmm8, dword ptr [rdx + 512]{1to16} + +// CHECK: vpmaxsd zmm6, zmm8, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x3d,0x72,0x80] + vpmaxsd zmm6, zmm8, dword ptr [rdx - 512]{1to16} + +// CHECK: vpmaxsd zmm6, zmm8, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x3d,0xb2,0xfc,0xfd,0xff,0xff] + vpmaxsd zmm6, zmm8, dword ptr [rdx - 516]{1to16} + +// CHECK: vpmaxsq zmm6, zmm6, zmm1 +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x3d,0xf1] + vpmaxsq zmm6, zmm6, zmm1 + +// CHECK: vpmaxsq zmm6 {k7}, zmm6, zmm1 +// CHECK: encoding: [0x62,0xf2,0xcd,0x4f,0x3d,0xf1] + vpmaxsq zmm6 {k7}, zmm6, zmm1 + +// CHECK: vpmaxsq zmm6 {k7} {z}, zmm6, zmm1 +// CHECK: encoding: [0x62,0xf2,0xcd,0xcf,0x3d,0xf1] + vpmaxsq zmm6 {k7} {z}, zmm6, zmm1 + +// CHECK: vpmaxsq zmm6, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x3d,0x31] + vpmaxsq zmm6, zmm6, zmmword ptr [rcx] + +// CHECK: vpmaxsq zmm6, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xcd,0x48,0x3d,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpmaxsq zmm6, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmaxsq zmm6, zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x3d,0x31] + vpmaxsq zmm6, zmm6, qword ptr [rcx]{1to8} + +// CHECK: vpmaxsq zmm6, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x3d,0x72,0x7f] + vpmaxsq zmm6, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vpmaxsq zmm6, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x3d,0xb2,0x00,0x20,0x00,0x00] + vpmaxsq zmm6, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vpmaxsq zmm6, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x3d,0x72,0x80] + vpmaxsq zmm6, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vpmaxsq zmm6, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x3d,0xb2,0xc0,0xdf,0xff,0xff] + vpmaxsq zmm6, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vpmaxsq zmm6, zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x3d,0x72,0x7f] + vpmaxsq zmm6, zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpmaxsq zmm6, zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x3d,0xb2,0x00,0x04,0x00,0x00] + vpmaxsq zmm6, zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpmaxsq zmm6, zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x3d,0x72,0x80] + vpmaxsq zmm6, zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpmaxsq zmm6, zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x3d,0xb2,0xf8,0xfb,0xff,0xff] + vpmaxsq zmm6, zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpmaxud zmm17, zmm7, zmm25 +// CHECK: encoding: [0x62,0x82,0x45,0x48,0x3f,0xc9] + vpmaxud zmm17, zmm7, zmm25 + +// CHECK: vpmaxud zmm17 {k5}, zmm7, zmm25 +// CHECK: encoding: [0x62,0x82,0x45,0x4d,0x3f,0xc9] + vpmaxud zmm17 {k5}, zmm7, zmm25 + +// CHECK: vpmaxud zmm17 {k5} {z}, zmm7, zmm25 +// CHECK: encoding: [0x62,0x82,0x45,0xcd,0x3f,0xc9] + vpmaxud zmm17 {k5} {z}, zmm7, zmm25 + +// CHECK: vpmaxud zmm17, zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x45,0x48,0x3f,0x09] + vpmaxud zmm17, zmm7, zmmword ptr [rcx] + +// CHECK: vpmaxud zmm17, zmm7, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x45,0x48,0x3f,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpmaxud zmm17, zmm7, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmaxud zmm17, zmm7, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x45,0x58,0x3f,0x09] + vpmaxud zmm17, zmm7, dword ptr [rcx]{1to16} + +// CHECK: vpmaxud zmm17, zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x45,0x48,0x3f,0x4a,0x7f] + vpmaxud zmm17, zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vpmaxud zmm17, zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x45,0x48,0x3f,0x8a,0x00,0x20,0x00,0x00] + vpmaxud zmm17, zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vpmaxud zmm17, zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x45,0x48,0x3f,0x4a,0x80] + vpmaxud zmm17, zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vpmaxud zmm17, zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x45,0x48,0x3f,0x8a,0xc0,0xdf,0xff,0xff] + vpmaxud zmm17, zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vpmaxud zmm17, zmm7, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x45,0x58,0x3f,0x4a,0x7f] + vpmaxud zmm17, zmm7, dword ptr [rdx + 508]{1to16} + +// CHECK: vpmaxud zmm17, zmm7, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x45,0x58,0x3f,0x8a,0x00,0x02,0x00,0x00] + vpmaxud zmm17, zmm7, dword ptr [rdx + 512]{1to16} + +// CHECK: vpmaxud zmm17, zmm7, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x45,0x58,0x3f,0x4a,0x80] + vpmaxud zmm17, zmm7, dword ptr [rdx - 512]{1to16} + +// CHECK: vpmaxud zmm17, zmm7, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x45,0x58,0x3f,0x8a,0xfc,0xfd,0xff,0xff] + vpmaxud zmm17, zmm7, dword ptr [rdx - 516]{1to16} + +// CHECK: vpmaxuq zmm30, zmm22, zmm25 +// CHECK: encoding: [0x62,0x02,0xcd,0x40,0x3f,0xf1] + vpmaxuq zmm30, zmm22, zmm25 + +// CHECK: vpmaxuq zmm30 {k1}, zmm22, zmm25 +// CHECK: encoding: [0x62,0x02,0xcd,0x41,0x3f,0xf1] + vpmaxuq zmm30 {k1}, zmm22, zmm25 + +// CHECK: vpmaxuq zmm30 {k1} {z}, zmm22, zmm25 +// CHECK: encoding: [0x62,0x02,0xcd,0xc1,0x3f,0xf1] + vpmaxuq zmm30 {k1} {z}, zmm22, zmm25 + +// CHECK: vpmaxuq zmm30, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xcd,0x40,0x3f,0x31] + vpmaxuq zmm30, zmm22, zmmword ptr [rcx] + +// CHECK: vpmaxuq zmm30, zmm22, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xcd,0x40,0x3f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpmaxuq zmm30, zmm22, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmaxuq zmm30, zmm22, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x50,0x3f,0x31] + vpmaxuq zmm30, zmm22, qword ptr [rcx]{1to8} + +// CHECK: vpmaxuq zmm30, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xcd,0x40,0x3f,0x72,0x7f] + vpmaxuq zmm30, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpmaxuq zmm30, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xcd,0x40,0x3f,0xb2,0x00,0x20,0x00,0x00] + vpmaxuq zmm30, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpmaxuq zmm30, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xcd,0x40,0x3f,0x72,0x80] + vpmaxuq zmm30, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpmaxuq zmm30, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xcd,0x40,0x3f,0xb2,0xc0,0xdf,0xff,0xff] + vpmaxuq zmm30, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpmaxuq zmm30, zmm22, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x50,0x3f,0x72,0x7f] + vpmaxuq zmm30, zmm22, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpmaxuq zmm30, zmm22, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x50,0x3f,0xb2,0x00,0x04,0x00,0x00] + vpmaxuq zmm30, zmm22, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpmaxuq zmm30, zmm22, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x50,0x3f,0x72,0x80] + vpmaxuq zmm30, zmm22, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpmaxuq zmm30, zmm22, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xcd,0x50,0x3f,0xb2,0xf8,0xfb,0xff,0xff] + vpmaxuq zmm30, zmm22, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpminsd zmm2, zmm16, zmm24 +// CHECK: encoding: [0x62,0x92,0x7d,0x40,0x39,0xd0] + vpminsd zmm2, zmm16, zmm24 + +// CHECK: vpminsd zmm2 {k3}, zmm16, zmm24 +// CHECK: encoding: [0x62,0x92,0x7d,0x43,0x39,0xd0] + vpminsd zmm2 {k3}, zmm16, zmm24 + +// CHECK: vpminsd zmm2 {k3} {z}, zmm16, zmm24 +// CHECK: encoding: [0x62,0x92,0x7d,0xc3,0x39,0xd0] + vpminsd zmm2 {k3} {z}, zmm16, zmm24 + +// CHECK: vpminsd zmm2, zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x40,0x39,0x11] + vpminsd zmm2, zmm16, zmmword ptr [rcx] + +// CHECK: vpminsd zmm2, zmm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x7d,0x40,0x39,0x94,0xf0,0x23,0x01,0x00,0x00] + vpminsd zmm2, zmm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpminsd zmm2, zmm16, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x50,0x39,0x11] + vpminsd zmm2, zmm16, dword ptr [rcx]{1to16} + +// CHECK: vpminsd zmm2, zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x7d,0x40,0x39,0x52,0x7f] + vpminsd zmm2, zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vpminsd zmm2, zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x40,0x39,0x92,0x00,0x20,0x00,0x00] + vpminsd zmm2, zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vpminsd zmm2, zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x40,0x39,0x52,0x80] + vpminsd zmm2, zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vpminsd zmm2, zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x7d,0x40,0x39,0x92,0xc0,0xdf,0xff,0xff] + vpminsd zmm2, zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vpminsd zmm2, zmm16, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x50,0x39,0x52,0x7f] + vpminsd zmm2, zmm16, dword ptr [rdx + 508]{1to16} + +// CHECK: vpminsd zmm2, zmm16, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x50,0x39,0x92,0x00,0x02,0x00,0x00] + vpminsd zmm2, zmm16, dword ptr [rdx + 512]{1to16} + +// CHECK: vpminsd zmm2, zmm16, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x50,0x39,0x52,0x80] + vpminsd zmm2, zmm16, dword ptr [rdx - 512]{1to16} + +// CHECK: vpminsd zmm2, zmm16, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x50,0x39,0x92,0xfc,0xfd,0xff,0xff] + vpminsd zmm2, zmm16, dword ptr [rdx - 516]{1to16} + +// CHECK: vpminsq zmm20, zmm16, zmm17 +// CHECK: encoding: [0x62,0xa2,0xfd,0x40,0x39,0xe1] + vpminsq zmm20, zmm16, zmm17 + +// CHECK: vpminsq zmm20 {k6}, zmm16, zmm17 +// CHECK: encoding: [0x62,0xa2,0xfd,0x46,0x39,0xe1] + vpminsq zmm20 {k6}, zmm16, zmm17 + +// CHECK: vpminsq zmm20 {k6} {z}, zmm16, zmm17 +// CHECK: encoding: [0x62,0xa2,0xfd,0xc6,0x39,0xe1] + vpminsq zmm20 {k6} {z}, zmm16, zmm17 + +// CHECK: vpminsq zmm20, zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0x39,0x21] + vpminsq zmm20, zmm16, zmmword ptr [rcx] + +// CHECK: vpminsq zmm20, zmm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xfd,0x40,0x39,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpminsq zmm20, zmm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpminsq zmm20, zmm16, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0x39,0x21] + vpminsq zmm20, zmm16, qword ptr [rcx]{1to8} + +// CHECK: vpminsq zmm20, zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0x39,0x62,0x7f] + vpminsq zmm20, zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vpminsq zmm20, zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0x39,0xa2,0x00,0x20,0x00,0x00] + vpminsq zmm20, zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vpminsq zmm20, zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0x39,0x62,0x80] + vpminsq zmm20, zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vpminsq zmm20, zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xfd,0x40,0x39,0xa2,0xc0,0xdf,0xff,0xff] + vpminsq zmm20, zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vpminsq zmm20, zmm16, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0x39,0x62,0x7f] + vpminsq zmm20, zmm16, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpminsq zmm20, zmm16, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0x39,0xa2,0x00,0x04,0x00,0x00] + vpminsq zmm20, zmm16, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpminsq zmm20, zmm16, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0x39,0x62,0x80] + vpminsq zmm20, zmm16, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpminsq zmm20, zmm16, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x50,0x39,0xa2,0xf8,0xfb,0xff,0xff] + vpminsq zmm20, zmm16, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpminud zmm3, zmm23, zmm20 +// CHECK: encoding: [0x62,0xb2,0x45,0x40,0x3b,0xdc] + vpminud zmm3, zmm23, zmm20 + +// CHECK: vpminud zmm3 {k3}, zmm23, zmm20 +// CHECK: encoding: [0x62,0xb2,0x45,0x43,0x3b,0xdc] + vpminud zmm3 {k3}, zmm23, zmm20 + +// CHECK: vpminud zmm3 {k3} {z}, zmm23, zmm20 +// CHECK: encoding: [0x62,0xb2,0x45,0xc3,0x3b,0xdc] + vpminud zmm3 {k3} {z}, zmm23, zmm20 + +// CHECK: vpminud zmm3, zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x45,0x40,0x3b,0x19] + vpminud zmm3, zmm23, zmmword ptr [rcx] + +// CHECK: vpminud zmm3, zmm23, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x45,0x40,0x3b,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpminud zmm3, zmm23, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpminud zmm3, zmm23, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x45,0x50,0x3b,0x19] + vpminud zmm3, zmm23, dword ptr [rcx]{1to16} + +// CHECK: vpminud zmm3, zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x45,0x40,0x3b,0x5a,0x7f] + vpminud zmm3, zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vpminud zmm3, zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x45,0x40,0x3b,0x9a,0x00,0x20,0x00,0x00] + vpminud zmm3, zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vpminud zmm3, zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x45,0x40,0x3b,0x5a,0x80] + vpminud zmm3, zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vpminud zmm3, zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x45,0x40,0x3b,0x9a,0xc0,0xdf,0xff,0xff] + vpminud zmm3, zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vpminud zmm3, zmm23, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x45,0x50,0x3b,0x5a,0x7f] + vpminud zmm3, zmm23, dword ptr [rdx + 508]{1to16} + +// CHECK: vpminud zmm3, zmm23, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x45,0x50,0x3b,0x9a,0x00,0x02,0x00,0x00] + vpminud zmm3, zmm23, dword ptr [rdx + 512]{1to16} + +// CHECK: vpminud zmm3, zmm23, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x45,0x50,0x3b,0x5a,0x80] + vpminud zmm3, zmm23, dword ptr [rdx - 512]{1to16} + +// CHECK: vpminud zmm3, zmm23, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x45,0x50,0x3b,0x9a,0xfc,0xfd,0xff,0xff] + vpminud zmm3, zmm23, dword ptr [rdx - 516]{1to16} + +// CHECK: vpminuq zmm11, zmm26, zmm7 +// CHECK: encoding: [0x62,0x72,0xad,0x40,0x3b,0xdf] + vpminuq zmm11, zmm26, zmm7 + +// CHECK: vpminuq zmm11 {k5}, zmm26, zmm7 +// CHECK: encoding: [0x62,0x72,0xad,0x45,0x3b,0xdf] + vpminuq zmm11 {k5}, zmm26, zmm7 + +// CHECK: vpminuq zmm11 {k5} {z}, zmm26, zmm7 +// CHECK: encoding: [0x62,0x72,0xad,0xc5,0x3b,0xdf] + vpminuq zmm11 {k5} {z}, zmm26, zmm7 + +// CHECK: vpminuq zmm11, zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xad,0x40,0x3b,0x19] + vpminuq zmm11, zmm26, zmmword ptr [rcx] + +// CHECK: vpminuq zmm11, zmm26, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xad,0x40,0x3b,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpminuq zmm11, zmm26, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpminuq zmm11, zmm26, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xad,0x50,0x3b,0x19] + vpminuq zmm11, zmm26, qword ptr [rcx]{1to8} + +// CHECK: vpminuq zmm11, zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xad,0x40,0x3b,0x5a,0x7f] + vpminuq zmm11, zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vpminuq zmm11, zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xad,0x40,0x3b,0x9a,0x00,0x20,0x00,0x00] + vpminuq zmm11, zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vpminuq zmm11, zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xad,0x40,0x3b,0x5a,0x80] + vpminuq zmm11, zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vpminuq zmm11, zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xad,0x40,0x3b,0x9a,0xc0,0xdf,0xff,0xff] + vpminuq zmm11, zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vpminuq zmm11, zmm26, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xad,0x50,0x3b,0x5a,0x7f] + vpminuq zmm11, zmm26, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpminuq zmm11, zmm26, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xad,0x50,0x3b,0x9a,0x00,0x04,0x00,0x00] + vpminuq zmm11, zmm26, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpminuq zmm11, zmm26, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xad,0x50,0x3b,0x5a,0x80] + vpminuq zmm11, zmm26, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpminuq zmm11, zmm26, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xad,0x50,0x3b,0x9a,0xf8,0xfb,0xff,0xff] + vpminuq zmm11, zmm26, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpmovsxbd zmm27, xmm7 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0xdf] + vpmovsxbd zmm27, xmm7 + +// CHECK: vpmovsxbd zmm27 {k5}, xmm7 +// CHECK: encoding: [0x62,0x62,0x7d,0x4d,0x21,0xdf] + vpmovsxbd zmm27 {k5}, xmm7 + +// CHECK: vpmovsxbd zmm27 {k5} {z}, xmm7 +// CHECK: encoding: [0x62,0x62,0x7d,0xcd,0x21,0xdf] + vpmovsxbd zmm27 {k5} {z}, xmm7 + +// CHECK: vpmovsxbd zmm27, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x19] + vpmovsxbd zmm27, xmmword ptr [rcx] + +// CHECK: vpmovsxbd zmm27, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x21,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpmovsxbd zmm27, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovsxbd zmm27, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x5a,0x7f] + vpmovsxbd zmm27, xmmword ptr [rdx + 2032] + +// CHECK: vpmovsxbd zmm27, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x9a,0x00,0x08,0x00,0x00] + vpmovsxbd zmm27, xmmword ptr [rdx + 2048] + +// CHECK: vpmovsxbd zmm27, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x5a,0x80] + vpmovsxbd zmm27, xmmword ptr [rdx - 2048] + +// CHECK: vpmovsxbd zmm27, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x9a,0xf0,0xf7,0xff,0xff] + vpmovsxbd zmm27, xmmword ptr [rdx - 2064] + +// CHECK: vpmovsxbq zmm11, xmm11 +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x22,0xdb] + vpmovsxbq zmm11, xmm11 + +// CHECK: vpmovsxbq zmm11 {k5}, xmm11 +// CHECK: encoding: [0x62,0x52,0x7d,0x4d,0x22,0xdb] + vpmovsxbq zmm11 {k5}, xmm11 + +// CHECK: vpmovsxbq zmm11 {k5} {z}, xmm11 +// CHECK: encoding: [0x62,0x52,0x7d,0xcd,0x22,0xdb] + vpmovsxbq zmm11 {k5} {z}, xmm11 + +// CHECK: vpmovsxbq zmm11, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0x19] + vpmovsxbq zmm11, qword ptr [rcx] + +// CHECK: vpmovsxbq zmm11, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x22,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpmovsxbq zmm11, qword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovsxbq zmm11, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0x5a,0x7f] + vpmovsxbq zmm11, qword ptr [rdx + 1016] + +// CHECK: vpmovsxbq zmm11, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0x9a,0x00,0x04,0x00,0x00] + vpmovsxbq zmm11, qword ptr [rdx + 1024] + +// CHECK: vpmovsxbq zmm11, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0x5a,0x80] + vpmovsxbq zmm11, qword ptr [rdx - 1024] + +// CHECK: vpmovsxbq zmm11, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0x9a,0xf8,0xfb,0xff,0xff] + vpmovsxbq zmm11, qword ptr [rdx - 1032] + +// CHECK: vpmovsxdq zmm26, ymm29 +// CHECK: encoding: [0x62,0x02,0x7d,0x48,0x25,0xd5] + vpmovsxdq zmm26, ymm29 + +// CHECK: vpmovsxdq zmm26 {k1}, ymm29 +// CHECK: encoding: [0x62,0x02,0x7d,0x49,0x25,0xd5] + vpmovsxdq zmm26 {k1}, ymm29 + +// CHECK: vpmovsxdq zmm26 {k1} {z}, ymm29 +// CHECK: encoding: [0x62,0x02,0x7d,0xc9,0x25,0xd5] + vpmovsxdq zmm26 {k1} {z}, ymm29 + +// CHECK: vpmovsxdq zmm26, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x25,0x11] + vpmovsxdq zmm26, ymmword ptr [rcx] + +// CHECK: vpmovsxdq zmm26, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x25,0x94,0xf0,0x23,0x01,0x00,0x00] + vpmovsxdq zmm26, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovsxdq zmm26, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x25,0x52,0x7f] + vpmovsxdq zmm26, ymmword ptr [rdx + 4064] + +// CHECK: vpmovsxdq zmm26, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x25,0x92,0x00,0x10,0x00,0x00] + vpmovsxdq zmm26, ymmword ptr [rdx + 4096] + +// CHECK: vpmovsxdq zmm26, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x25,0x52,0x80] + vpmovsxdq zmm26, ymmword ptr [rdx - 4096] + +// CHECK: vpmovsxdq zmm26, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x25,0x92,0xe0,0xef,0xff,0xff] + vpmovsxdq zmm26, ymmword ptr [rdx - 4128] + +// CHECK: vpmovsxwd zmm23, ymm11 +// CHECK: encoding: [0x62,0xc2,0x7d,0x48,0x23,0xfb] + vpmovsxwd zmm23, ymm11 + +// CHECK: vpmovsxwd zmm23 {k2}, ymm11 +// CHECK: encoding: [0x62,0xc2,0x7d,0x4a,0x23,0xfb] + vpmovsxwd zmm23 {k2}, ymm11 + +// CHECK: vpmovsxwd zmm23 {k2} {z}, ymm11 +// CHECK: encoding: [0x62,0xc2,0x7d,0xca,0x23,0xfb] + vpmovsxwd zmm23 {k2} {z}, ymm11 + +// CHECK: vpmovsxwd zmm23, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x23,0x39] + vpmovsxwd zmm23, ymmword ptr [rcx] + +// CHECK: vpmovsxwd zmm23, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x23,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpmovsxwd zmm23, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovsxwd zmm23, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x23,0x7a,0x7f] + vpmovsxwd zmm23, ymmword ptr [rdx + 4064] + +// CHECK: vpmovsxwd zmm23, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x23,0xba,0x00,0x10,0x00,0x00] + vpmovsxwd zmm23, ymmword ptr [rdx + 4096] + +// CHECK: vpmovsxwd zmm23, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x23,0x7a,0x80] + vpmovsxwd zmm23, ymmword ptr [rdx - 4096] + +// CHECK: vpmovsxwd zmm23, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x23,0xba,0xe0,0xef,0xff,0xff] + vpmovsxwd zmm23, ymmword ptr [rdx - 4128] + +// CHECK: vpmovsxwq zmm25, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x48,0x24,0xc9] + vpmovsxwq zmm25, xmm25 + +// CHECK: vpmovsxwq zmm25 {k4}, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x4c,0x24,0xc9] + vpmovsxwq zmm25 {k4}, xmm25 + +// CHECK: vpmovsxwq zmm25 {k4} {z}, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0xcc,0x24,0xc9] + vpmovsxwq zmm25 {k4} {z}, xmm25 + +// CHECK: vpmovsxwq zmm25, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x24,0x09] + vpmovsxwq zmm25, xmmword ptr [rcx] + +// CHECK: vpmovsxwq zmm25, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x24,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpmovsxwq zmm25, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovsxwq zmm25, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x24,0x4a,0x7f] + vpmovsxwq zmm25, xmmword ptr [rdx + 2032] + +// CHECK: vpmovsxwq zmm25, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x24,0x8a,0x00,0x08,0x00,0x00] + vpmovsxwq zmm25, xmmword ptr [rdx + 2048] + +// CHECK: vpmovsxwq zmm25, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x24,0x4a,0x80] + vpmovsxwq zmm25, xmmword ptr [rdx - 2048] + +// CHECK: vpmovsxwq zmm25, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x24,0x8a,0xf0,0xf7,0xff,0xff] + vpmovsxwq zmm25, xmmword ptr [rdx - 2064] + +// CHECK: vpmovzxbd zmm18, xmm25 +// CHECK: encoding: [0x62,0x82,0x7d,0x48,0x31,0xd1] + vpmovzxbd zmm18, xmm25 + +// CHECK: vpmovzxbd zmm18 {k7}, xmm25 +// CHECK: encoding: [0x62,0x82,0x7d,0x4f,0x31,0xd1] + vpmovzxbd zmm18 {k7}, xmm25 + +// CHECK: vpmovzxbd zmm18 {k7} {z}, xmm25 +// CHECK: encoding: [0x62,0x82,0x7d,0xcf,0x31,0xd1] + vpmovzxbd zmm18 {k7} {z}, xmm25 + +// CHECK: vpmovzxbd zmm18, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x31,0x11] + vpmovzxbd zmm18, xmmword ptr [rcx] + +// CHECK: vpmovzxbd zmm18, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x31,0x94,0xf0,0x23,0x01,0x00,0x00] + vpmovzxbd zmm18, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovzxbd zmm18, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x31,0x52,0x7f] + vpmovzxbd zmm18, xmmword ptr [rdx + 2032] + +// CHECK: vpmovzxbd zmm18, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x31,0x92,0x00,0x08,0x00,0x00] + vpmovzxbd zmm18, xmmword ptr [rdx + 2048] + +// CHECK: vpmovzxbd zmm18, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x31,0x52,0x80] + vpmovzxbd zmm18, xmmword ptr [rdx - 2048] + +// CHECK: vpmovzxbd zmm18, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x31,0x92,0xf0,0xf7,0xff,0xff] + vpmovzxbd zmm18, xmmword ptr [rdx - 2064] + +// CHECK: vpmovzxbq zmm5, xmm15 +// CHECK: encoding: [0x62,0xd2,0x7d,0x48,0x32,0xef] + vpmovzxbq zmm5, xmm15 + +// CHECK: vpmovzxbq zmm5 {k1}, xmm15 +// CHECK: encoding: [0x62,0xd2,0x7d,0x49,0x32,0xef] + vpmovzxbq zmm5 {k1}, xmm15 + +// CHECK: vpmovzxbq zmm5 {k1} {z}, xmm15 +// CHECK: encoding: [0x62,0xd2,0x7d,0xc9,0x32,0xef] + vpmovzxbq zmm5 {k1} {z}, xmm15 + +// CHECK: vpmovzxbq zmm5, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x32,0x29] + vpmovzxbq zmm5, qword ptr [rcx] + +// CHECK: vpmovzxbq zmm5, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x32,0xac,0xf0,0x23,0x01,0x00,0x00] + vpmovzxbq zmm5, qword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovzxbq zmm5, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x32,0x6a,0x7f] + vpmovzxbq zmm5, qword ptr [rdx + 1016] + +// CHECK: vpmovzxbq zmm5, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x32,0xaa,0x00,0x04,0x00,0x00] + vpmovzxbq zmm5, qword ptr [rdx + 1024] + +// CHECK: vpmovzxbq zmm5, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x32,0x6a,0x80] + vpmovzxbq zmm5, qword ptr [rdx - 1024] + +// CHECK: vpmovzxbq zmm5, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x32,0xaa,0xf8,0xfb,0xff,0xff] + vpmovzxbq zmm5, qword ptr [rdx - 1032] + +// CHECK: vpmovzxdq zmm20, ymm4 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x35,0xe4] + vpmovzxdq zmm20, ymm4 + +// CHECK: vpmovzxdq zmm20 {k3}, ymm4 +// CHECK: encoding: [0x62,0xe2,0x7d,0x4b,0x35,0xe4] + vpmovzxdq zmm20 {k3}, ymm4 + +// CHECK: vpmovzxdq zmm20 {k3} {z}, ymm4 +// CHECK: encoding: [0x62,0xe2,0x7d,0xcb,0x35,0xe4] + vpmovzxdq zmm20 {k3} {z}, ymm4 + +// CHECK: vpmovzxdq zmm20, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x35,0x21] + vpmovzxdq zmm20, ymmword ptr [rcx] + +// CHECK: vpmovzxdq zmm20, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x35,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpmovzxdq zmm20, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovzxdq zmm20, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x35,0x62,0x7f] + vpmovzxdq zmm20, ymmword ptr [rdx + 4064] + +// CHECK: vpmovzxdq zmm20, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x35,0xa2,0x00,0x10,0x00,0x00] + vpmovzxdq zmm20, ymmword ptr [rdx + 4096] + +// CHECK: vpmovzxdq zmm20, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x35,0x62,0x80] + vpmovzxdq zmm20, ymmword ptr [rdx - 4096] + +// CHECK: vpmovzxdq zmm20, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x35,0xa2,0xe0,0xef,0xff,0xff] + vpmovzxdq zmm20, ymmword ptr [rdx - 4128] + +// CHECK: vpmovzxwd zmm8, ymm6 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x33,0xc6] + vpmovzxwd zmm8, ymm6 + +// CHECK: vpmovzxwd zmm8 {k7}, ymm6 +// CHECK: encoding: [0x62,0x72,0x7d,0x4f,0x33,0xc6] + vpmovzxwd zmm8 {k7}, ymm6 + +// CHECK: vpmovzxwd zmm8 {k7} {z}, ymm6 +// CHECK: encoding: [0x62,0x72,0x7d,0xcf,0x33,0xc6] + vpmovzxwd zmm8 {k7} {z}, ymm6 + +// CHECK: vpmovzxwd zmm8, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x33,0x01] + vpmovzxwd zmm8, ymmword ptr [rcx] + +// CHECK: vpmovzxwd zmm8, ymmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x33,0x84,0xf0,0x23,0x01,0x00,0x00] + vpmovzxwd zmm8, ymmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovzxwd zmm8, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x33,0x42,0x7f] + vpmovzxwd zmm8, ymmword ptr [rdx + 4064] + +// CHECK: vpmovzxwd zmm8, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x33,0x82,0x00,0x10,0x00,0x00] + vpmovzxwd zmm8, ymmword ptr [rdx + 4096] + +// CHECK: vpmovzxwd zmm8, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x33,0x42,0x80] + vpmovzxwd zmm8, ymmword ptr [rdx - 4096] + +// CHECK: vpmovzxwd zmm8, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x33,0x82,0xe0,0xef,0xff,0xff] + vpmovzxwd zmm8, ymmword ptr [rdx - 4128] + +// CHECK: vpmovzxwq zmm5, xmm15 +// CHECK: encoding: [0x62,0xd2,0x7d,0x48,0x34,0xef] + vpmovzxwq zmm5, xmm15 + +// CHECK: vpmovzxwq zmm5 {k7}, xmm15 +// CHECK: encoding: [0x62,0xd2,0x7d,0x4f,0x34,0xef] + vpmovzxwq zmm5 {k7}, xmm15 + +// CHECK: vpmovzxwq zmm5 {k7} {z}, xmm15 +// CHECK: encoding: [0x62,0xd2,0x7d,0xcf,0x34,0xef] + vpmovzxwq zmm5 {k7} {z}, xmm15 + +// CHECK: vpmovzxwq zmm5, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x34,0x29] + vpmovzxwq zmm5, xmmword ptr [rcx] + +// CHECK: vpmovzxwq zmm5, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x34,0xac,0xf0,0x23,0x01,0x00,0x00] + vpmovzxwq zmm5, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmovzxwq zmm5, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x34,0x6a,0x7f] + vpmovzxwq zmm5, xmmword ptr [rdx + 2032] + +// CHECK: vpmovzxwq zmm5, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x34,0xaa,0x00,0x08,0x00,0x00] + vpmovzxwq zmm5, xmmword ptr [rdx + 2048] + +// CHECK: vpmovzxwq zmm5, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x34,0x6a,0x80] + vpmovzxwq zmm5, xmmword ptr [rdx - 2048] + +// CHECK: vpmovzxwq zmm5, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x34,0xaa,0xf0,0xf7,0xff,0xff] + vpmovzxwq zmm5, xmmword ptr [rdx - 2064] + +// CHECK: vpmuldq zmm29, zmm9, zmm9 +// CHECK: encoding: [0x62,0x42,0xb5,0x48,0x28,0xe9] + vpmuldq zmm29, zmm9, zmm9 + +// CHECK: vpmuldq zmm29 {k5}, zmm9, zmm9 +// CHECK: encoding: [0x62,0x42,0xb5,0x4d,0x28,0xe9] + vpmuldq zmm29 {k5}, zmm9, zmm9 + +// CHECK: vpmuldq zmm29 {k5} {z}, zmm9, zmm9 +// CHECK: encoding: [0x62,0x42,0xb5,0xcd,0x28,0xe9] + vpmuldq zmm29 {k5} {z}, zmm9, zmm9 + +// CHECK: vpmuldq zmm29, zmm9, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xb5,0x48,0x28,0x29] + vpmuldq zmm29, zmm9, zmmword ptr [rcx] + +// CHECK: vpmuldq zmm29, zmm9, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xb5,0x48,0x28,0xac,0xf0,0x23,0x01,0x00,0x00] + vpmuldq zmm29, zmm9, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmuldq zmm29, zmm9, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xb5,0x58,0x28,0x29] + vpmuldq zmm29, zmm9, qword ptr [rcx]{1to8} + +// CHECK: vpmuldq zmm29, zmm9, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xb5,0x48,0x28,0x6a,0x7f] + vpmuldq zmm29, zmm9, zmmword ptr [rdx + 8128] + +// CHECK: vpmuldq zmm29, zmm9, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xb5,0x48,0x28,0xaa,0x00,0x20,0x00,0x00] + vpmuldq zmm29, zmm9, zmmword ptr [rdx + 8192] + +// CHECK: vpmuldq zmm29, zmm9, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xb5,0x48,0x28,0x6a,0x80] + vpmuldq zmm29, zmm9, zmmword ptr [rdx - 8192] + +// CHECK: vpmuldq zmm29, zmm9, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xb5,0x48,0x28,0xaa,0xc0,0xdf,0xff,0xff] + vpmuldq zmm29, zmm9, zmmword ptr [rdx - 8256] + +// CHECK: vpmuldq zmm29, zmm9, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xb5,0x58,0x28,0x6a,0x7f] + vpmuldq zmm29, zmm9, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpmuldq zmm29, zmm9, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xb5,0x58,0x28,0xaa,0x00,0x04,0x00,0x00] + vpmuldq zmm29, zmm9, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpmuldq zmm29, zmm9, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xb5,0x58,0x28,0x6a,0x80] + vpmuldq zmm29, zmm9, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpmuldq zmm29, zmm9, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xb5,0x58,0x28,0xaa,0xf8,0xfb,0xff,0xff] + vpmuldq zmm29, zmm9, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpmulld zmm12, zmm3, zmm2 +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x40,0xe2] + vpmulld zmm12, zmm3, zmm2 + +// CHECK: vpmulld zmm12 {k6}, zmm3, zmm2 +// CHECK: encoding: [0x62,0x72,0x65,0x4e,0x40,0xe2] + vpmulld zmm12 {k6}, zmm3, zmm2 + +// CHECK: vpmulld zmm12 {k6} {z}, zmm3, zmm2 +// CHECK: encoding: [0x62,0x72,0x65,0xce,0x40,0xe2] + vpmulld zmm12 {k6} {z}, zmm3, zmm2 + +// CHECK: vpmulld zmm12, zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x40,0x21] + vpmulld zmm12, zmm3, zmmword ptr [rcx] + +// CHECK: vpmulld zmm12, zmm3, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x65,0x48,0x40,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpmulld zmm12, zmm3, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmulld zmm12, zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x40,0x21] + vpmulld zmm12, zmm3, dword ptr [rcx]{1to16} + +// CHECK: vpmulld zmm12, zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x40,0x62,0x7f] + vpmulld zmm12, zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vpmulld zmm12, zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x40,0xa2,0x00,0x20,0x00,0x00] + vpmulld zmm12, zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vpmulld zmm12, zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x40,0x62,0x80] + vpmulld zmm12, zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vpmulld zmm12, zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x40,0xa2,0xc0,0xdf,0xff,0xff] + vpmulld zmm12, zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vpmulld zmm12, zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x40,0x62,0x7f] + vpmulld zmm12, zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vpmulld zmm12, zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x40,0xa2,0x00,0x02,0x00,0x00] + vpmulld zmm12, zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vpmulld zmm12, zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x40,0x62,0x80] + vpmulld zmm12, zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vpmulld zmm12, zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x40,0xa2,0xfc,0xfd,0xff,0xff] + vpmulld zmm12, zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vpmuludq zmm23, zmm5, zmm9 +// CHECK: encoding: [0x62,0xc1,0xd5,0x48,0xf4,0xf9] + vpmuludq zmm23, zmm5, zmm9 + +// CHECK: vpmuludq zmm23 {k4}, zmm5, zmm9 +// CHECK: encoding: [0x62,0xc1,0xd5,0x4c,0xf4,0xf9] + vpmuludq zmm23 {k4}, zmm5, zmm9 + +// CHECK: vpmuludq zmm23 {k4} {z}, zmm5, zmm9 +// CHECK: encoding: [0x62,0xc1,0xd5,0xcc,0xf4,0xf9] + vpmuludq zmm23 {k4} {z}, zmm5, zmm9 + +// CHECK: vpmuludq zmm23, zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xd5,0x48,0xf4,0x39] + vpmuludq zmm23, zmm5, zmmword ptr [rcx] + +// CHECK: vpmuludq zmm23, zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xd5,0x48,0xf4,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpmuludq zmm23, zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpmuludq zmm23, zmm5, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xd5,0x58,0xf4,0x39] + vpmuludq zmm23, zmm5, qword ptr [rcx]{1to8} + +// CHECK: vpmuludq zmm23, zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xd5,0x48,0xf4,0x7a,0x7f] + vpmuludq zmm23, zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vpmuludq zmm23, zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xd5,0x48,0xf4,0xba,0x00,0x20,0x00,0x00] + vpmuludq zmm23, zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vpmuludq zmm23, zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xd5,0x48,0xf4,0x7a,0x80] + vpmuludq zmm23, zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vpmuludq zmm23, zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xd5,0x48,0xf4,0xba,0xc0,0xdf,0xff,0xff] + vpmuludq zmm23, zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vpmuludq zmm23, zmm5, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xd5,0x58,0xf4,0x7a,0x7f] + vpmuludq zmm23, zmm5, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpmuludq zmm23, zmm5, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xd5,0x58,0xf4,0xba,0x00,0x04,0x00,0x00] + vpmuludq zmm23, zmm5, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpmuludq zmm23, zmm5, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xd5,0x58,0xf4,0x7a,0x80] + vpmuludq zmm23, zmm5, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpmuludq zmm23, zmm5, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xd5,0x58,0xf4,0xba,0xf8,0xfb,0xff,0xff] + vpmuludq zmm23, zmm5, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpord zmm23, zmm2, zmm20 +// CHECK: encoding: [0x62,0xa1,0x6d,0x48,0xeb,0xfc] + vpord zmm23, zmm2, zmm20 + +// CHECK: vpord zmm23 {k2}, zmm2, zmm20 +// CHECK: encoding: [0x62,0xa1,0x6d,0x4a,0xeb,0xfc] + vpord zmm23 {k2}, zmm2, zmm20 + +// CHECK: vpord zmm23 {k2} {z}, zmm2, zmm20 +// CHECK: encoding: [0x62,0xa1,0x6d,0xca,0xeb,0xfc] + vpord zmm23 {k2} {z}, zmm2, zmm20 + +// CHECK: vpord zmm23, zmm2, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x6d,0x48,0xeb,0x39] + vpord zmm23, zmm2, zmmword ptr [rcx] + +// CHECK: vpord zmm23, zmm2, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x6d,0x48,0xeb,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpord zmm23, zmm2, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpord zmm23, zmm2, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x58,0xeb,0x39] + vpord zmm23, zmm2, dword ptr [rcx]{1to16} + +// CHECK: vpord zmm23, zmm2, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x6d,0x48,0xeb,0x7a,0x7f] + vpord zmm23, zmm2, zmmword ptr [rdx + 8128] + +// CHECK: vpord zmm23, zmm2, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x6d,0x48,0xeb,0xba,0x00,0x20,0x00,0x00] + vpord zmm23, zmm2, zmmword ptr [rdx + 8192] + +// CHECK: vpord zmm23, zmm2, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x6d,0x48,0xeb,0x7a,0x80] + vpord zmm23, zmm2, zmmword ptr [rdx - 8192] + +// CHECK: vpord zmm23, zmm2, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x6d,0x48,0xeb,0xba,0xc0,0xdf,0xff,0xff] + vpord zmm23, zmm2, zmmword ptr [rdx - 8256] + +// CHECK: vpord zmm23, zmm2, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x58,0xeb,0x7a,0x7f] + vpord zmm23, zmm2, dword ptr [rdx + 508]{1to16} + +// CHECK: vpord zmm23, zmm2, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x58,0xeb,0xba,0x00,0x02,0x00,0x00] + vpord zmm23, zmm2, dword ptr [rdx + 512]{1to16} + +// CHECK: vpord zmm23, zmm2, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x58,0xeb,0x7a,0x80] + vpord zmm23, zmm2, dword ptr [rdx - 512]{1to16} + +// CHECK: vpord zmm23, zmm2, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x58,0xeb,0xba,0xfc,0xfd,0xff,0xff] + vpord zmm23, zmm2, dword ptr [rdx - 516]{1to16} + +// CHECK: vporq zmm1, zmm10, zmm6 +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xeb,0xce] + vporq zmm1, zmm10, zmm6 + +// CHECK: vporq zmm1 {k2}, zmm10, zmm6 +// CHECK: encoding: [0x62,0xf1,0xad,0x4a,0xeb,0xce] + vporq zmm1 {k2}, zmm10, zmm6 + +// CHECK: vporq zmm1 {k2} {z}, zmm10, zmm6 +// CHECK: encoding: [0x62,0xf1,0xad,0xca,0xeb,0xce] + vporq zmm1 {k2} {z}, zmm10, zmm6 + +// CHECK: vporq zmm1, zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xeb,0x09] + vporq zmm1, zmm10, zmmword ptr [rcx] + +// CHECK: vporq zmm1, zmm10, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xad,0x48,0xeb,0x8c,0xf0,0x23,0x01,0x00,0x00] + vporq zmm1, zmm10, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vporq zmm1, zmm10, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xeb,0x09] + vporq zmm1, zmm10, qword ptr [rcx]{1to8} + +// CHECK: vporq zmm1, zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xeb,0x4a,0x7f] + vporq zmm1, zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vporq zmm1, zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xeb,0x8a,0x00,0x20,0x00,0x00] + vporq zmm1, zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vporq zmm1, zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xeb,0x4a,0x80] + vporq zmm1, zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vporq zmm1, zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xeb,0x8a,0xc0,0xdf,0xff,0xff] + vporq zmm1, zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vporq zmm1, zmm10, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xeb,0x4a,0x7f] + vporq zmm1, zmm10, qword ptr [rdx + 1016]{1to8} + +// CHECK: vporq zmm1, zmm10, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xeb,0x8a,0x00,0x04,0x00,0x00] + vporq zmm1, zmm10, qword ptr [rdx + 1024]{1to8} + +// CHECK: vporq zmm1, zmm10, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xeb,0x4a,0x80] + vporq zmm1, zmm10, qword ptr [rdx - 1024]{1to8} + +// CHECK: vporq zmm1, zmm10, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xeb,0x8a,0xf8,0xfb,0xff,0xff] + vporq zmm1, zmm10, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpshufd zmm19, zmm25, 171 +// CHECK: encoding: [0x62,0x81,0x7d,0x48,0x70,0xd9,0xab] + vpshufd zmm19, zmm25, 171 + +// CHECK: vpshufd zmm19 {k6}, zmm25, 171 +// CHECK: encoding: [0x62,0x81,0x7d,0x4e,0x70,0xd9,0xab] + vpshufd zmm19 {k6}, zmm25, 171 + +// CHECK: vpshufd zmm19 {k6} {z}, zmm25, 171 +// CHECK: encoding: [0x62,0x81,0x7d,0xce,0x70,0xd9,0xab] + vpshufd zmm19 {k6} {z}, zmm25, 171 + +// CHECK: vpshufd zmm19, zmm25, 123 +// CHECK: encoding: [0x62,0x81,0x7d,0x48,0x70,0xd9,0x7b] + vpshufd zmm19, zmm25, 123 + +// CHECK: vpshufd zmm19, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x19,0x7b] + vpshufd zmm19, zmmword ptr [rcx], 123 + +// CHECK: vpshufd zmm19, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xa1,0x7d,0x48,0x70,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpshufd zmm19, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpshufd zmm19, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x19,0x7b] + vpshufd zmm19, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpshufd zmm19, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x5a,0x7f,0x7b] + vpshufd zmm19, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpshufd zmm19, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x9a,0x00,0x20,0x00,0x00,0x7b] + vpshufd zmm19, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpshufd zmm19, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x5a,0x80,0x7b] + vpshufd zmm19, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpshufd zmm19, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vpshufd zmm19, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpshufd zmm19, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x5a,0x7f,0x7b] + vpshufd zmm19, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpshufd zmm19, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x9a,0x00,0x02,0x00,0x00,0x7b] + vpshufd zmm19, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpshufd zmm19, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x5a,0x80,0x7b] + vpshufd zmm19, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpshufd zmm19, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x9a,0xfc,0xfd,0xff,0xff,0x7b] + vpshufd zmm19, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpslld zmm17, zmm6, xmm3 +// CHECK: encoding: [0x62,0xe1,0x4d,0x48,0xf2,0xcb] + vpslld zmm17, zmm6, xmm3 + +// CHECK: vpslld zmm17 {k3}, zmm6, xmm3 +// CHECK: encoding: [0x62,0xe1,0x4d,0x4b,0xf2,0xcb] + vpslld zmm17 {k3}, zmm6, xmm3 + +// CHECK: vpslld zmm17 {k3} {z}, zmm6, xmm3 +// CHECK: encoding: [0x62,0xe1,0x4d,0xcb,0xf2,0xcb] + vpslld zmm17 {k3} {z}, zmm6, xmm3 + +// CHECK: vpslld zmm17, zmm6, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x4d,0x48,0xf2,0x09] + vpslld zmm17, zmm6, xmmword ptr [rcx] + +// CHECK: vpslld zmm17, zmm6, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x4d,0x48,0xf2,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpslld zmm17, zmm6, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpslld zmm17, zmm6, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xe1,0x4d,0x48,0xf2,0x4a,0x7f] + vpslld zmm17, zmm6, xmmword ptr [rdx + 2032] + +// CHECK: vpslld zmm17, zmm6, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xe1,0x4d,0x48,0xf2,0x8a,0x00,0x08,0x00,0x00] + vpslld zmm17, zmm6, xmmword ptr [rdx + 2048] + +// CHECK: vpslld zmm17, zmm6, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xe1,0x4d,0x48,0xf2,0x4a,0x80] + vpslld zmm17, zmm6, xmmword ptr [rdx - 2048] + +// CHECK: vpslld zmm17, zmm6, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xe1,0x4d,0x48,0xf2,0x8a,0xf0,0xf7,0xff,0xff] + vpslld zmm17, zmm6, xmmword ptr [rdx - 2064] + +// CHECK: vpsllq zmm26, zmm17, xmm23 +// CHECK: encoding: [0x62,0x21,0xf5,0x40,0xf3,0xd7] + vpsllq zmm26, zmm17, xmm23 + +// CHECK: vpsllq zmm26 {k6}, zmm17, xmm23 +// CHECK: encoding: [0x62,0x21,0xf5,0x46,0xf3,0xd7] + vpsllq zmm26 {k6}, zmm17, xmm23 + +// CHECK: vpsllq zmm26 {k6} {z}, zmm17, xmm23 +// CHECK: encoding: [0x62,0x21,0xf5,0xc6,0xf3,0xd7] + vpsllq zmm26 {k6} {z}, zmm17, xmm23 + +// CHECK: vpsllq zmm26, zmm17, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xf5,0x40,0xf3,0x11] + vpsllq zmm26, zmm17, xmmword ptr [rcx] + +// CHECK: vpsllq zmm26, zmm17, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0xf5,0x40,0xf3,0x94,0xf0,0x23,0x01,0x00,0x00] + vpsllq zmm26, zmm17, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsllq zmm26, zmm17, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x61,0xf5,0x40,0xf3,0x52,0x7f] + vpsllq zmm26, zmm17, xmmword ptr [rdx + 2032] + +// CHECK: vpsllq zmm26, zmm17, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x61,0xf5,0x40,0xf3,0x92,0x00,0x08,0x00,0x00] + vpsllq zmm26, zmm17, xmmword ptr [rdx + 2048] + +// CHECK: vpsllq zmm26, zmm17, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x61,0xf5,0x40,0xf3,0x52,0x80] + vpsllq zmm26, zmm17, xmmword ptr [rdx - 2048] + +// CHECK: vpsllq zmm26, zmm17, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x61,0xf5,0x40,0xf3,0x92,0xf0,0xf7,0xff,0xff] + vpsllq zmm26, zmm17, xmmword ptr [rdx - 2064] + +// CHECK: vpsllvd zmm10, zmm12, zmm22 +// CHECK: encoding: [0x62,0x32,0x1d,0x48,0x47,0xd6] + vpsllvd zmm10, zmm12, zmm22 + +// CHECK: vpsllvd zmm10 {k6}, zmm12, zmm22 +// CHECK: encoding: [0x62,0x32,0x1d,0x4e,0x47,0xd6] + vpsllvd zmm10 {k6}, zmm12, zmm22 + +// CHECK: vpsllvd zmm10 {k6} {z}, zmm12, zmm22 +// CHECK: encoding: [0x62,0x32,0x1d,0xce,0x47,0xd6] + vpsllvd zmm10 {k6} {z}, zmm12, zmm22 + +// CHECK: vpsllvd zmm10, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x1d,0x48,0x47,0x11] + vpsllvd zmm10, zmm12, zmmword ptr [rcx] + +// CHECK: vpsllvd zmm10, zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x1d,0x48,0x47,0x94,0xf0,0x23,0x01,0x00,0x00] + vpsllvd zmm10, zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsllvd zmm10, zmm12, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x58,0x47,0x11] + vpsllvd zmm10, zmm12, dword ptr [rcx]{1to16} + +// CHECK: vpsllvd zmm10, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x1d,0x48,0x47,0x52,0x7f] + vpsllvd zmm10, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vpsllvd zmm10, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x48,0x47,0x92,0x00,0x20,0x00,0x00] + vpsllvd zmm10, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vpsllvd zmm10, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x48,0x47,0x52,0x80] + vpsllvd zmm10, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vpsllvd zmm10, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x1d,0x48,0x47,0x92,0xc0,0xdf,0xff,0xff] + vpsllvd zmm10, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vpsllvd zmm10, zmm12, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x58,0x47,0x52,0x7f] + vpsllvd zmm10, zmm12, dword ptr [rdx + 508]{1to16} + +// CHECK: vpsllvd zmm10, zmm12, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x58,0x47,0x92,0x00,0x02,0x00,0x00] + vpsllvd zmm10, zmm12, dword ptr [rdx + 512]{1to16} + +// CHECK: vpsllvd zmm10, zmm12, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x58,0x47,0x52,0x80] + vpsllvd zmm10, zmm12, dword ptr [rdx - 512]{1to16} + +// CHECK: vpsllvd zmm10, zmm12, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x58,0x47,0x92,0xfc,0xfd,0xff,0xff] + vpsllvd zmm10, zmm12, dword ptr [rdx - 516]{1to16} + +// CHECK: vpsllvq zmm16, zmm5, zmm26 +// CHECK: encoding: [0x62,0x82,0xd5,0x48,0x47,0xc2] + vpsllvq zmm16, zmm5, zmm26 + +// CHECK: vpsllvq zmm16 {k5}, zmm5, zmm26 +// CHECK: encoding: [0x62,0x82,0xd5,0x4d,0x47,0xc2] + vpsllvq zmm16 {k5}, zmm5, zmm26 + +// CHECK: vpsllvq zmm16 {k5} {z}, zmm5, zmm26 +// CHECK: encoding: [0x62,0x82,0xd5,0xcd,0x47,0xc2] + vpsllvq zmm16 {k5} {z}, zmm5, zmm26 + +// CHECK: vpsllvq zmm16, zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x47,0x01] + vpsllvq zmm16, zmm5, zmmword ptr [rcx] + +// CHECK: vpsllvq zmm16, zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xd5,0x48,0x47,0x84,0xf0,0x23,0x01,0x00,0x00] + vpsllvq zmm16, zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsllvq zmm16, zmm5, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x47,0x01] + vpsllvq zmm16, zmm5, qword ptr [rcx]{1to8} + +// CHECK: vpsllvq zmm16, zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x47,0x42,0x7f] + vpsllvq zmm16, zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vpsllvq zmm16, zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x47,0x82,0x00,0x20,0x00,0x00] + vpsllvq zmm16, zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vpsllvq zmm16, zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x47,0x42,0x80] + vpsllvq zmm16, zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vpsllvq zmm16, zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x47,0x82,0xc0,0xdf,0xff,0xff] + vpsllvq zmm16, zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vpsllvq zmm16, zmm5, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x47,0x42,0x7f] + vpsllvq zmm16, zmm5, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpsllvq zmm16, zmm5, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x47,0x82,0x00,0x04,0x00,0x00] + vpsllvq zmm16, zmm5, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpsllvq zmm16, zmm5, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x47,0x42,0x80] + vpsllvq zmm16, zmm5, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpsllvq zmm16, zmm5, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x47,0x82,0xf8,0xfb,0xff,0xff] + vpsllvq zmm16, zmm5, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpsrad zmm18, zmm14, xmm6 +// CHECK: encoding: [0x62,0xe1,0x0d,0x48,0xe2,0xd6] + vpsrad zmm18, zmm14, xmm6 + +// CHECK: vpsrad zmm18 {k1}, zmm14, xmm6 +// CHECK: encoding: [0x62,0xe1,0x0d,0x49,0xe2,0xd6] + vpsrad zmm18 {k1}, zmm14, xmm6 + +// CHECK: vpsrad zmm18 {k1} {z}, zmm14, xmm6 +// CHECK: encoding: [0x62,0xe1,0x0d,0xc9,0xe2,0xd6] + vpsrad zmm18 {k1} {z}, zmm14, xmm6 + +// CHECK: vpsrad zmm18, zmm14, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x0d,0x48,0xe2,0x11] + vpsrad zmm18, zmm14, xmmword ptr [rcx] + +// CHECK: vpsrad zmm18, zmm14, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x0d,0x48,0xe2,0x94,0xf0,0x23,0x01,0x00,0x00] + vpsrad zmm18, zmm14, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsrad zmm18, zmm14, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xe1,0x0d,0x48,0xe2,0x52,0x7f] + vpsrad zmm18, zmm14, xmmword ptr [rdx + 2032] + +// CHECK: vpsrad zmm18, zmm14, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xe1,0x0d,0x48,0xe2,0x92,0x00,0x08,0x00,0x00] + vpsrad zmm18, zmm14, xmmword ptr [rdx + 2048] + +// CHECK: vpsrad zmm18, zmm14, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xe1,0x0d,0x48,0xe2,0x52,0x80] + vpsrad zmm18, zmm14, xmmword ptr [rdx - 2048] + +// CHECK: vpsrad zmm18, zmm14, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xe1,0x0d,0x48,0xe2,0x92,0xf0,0xf7,0xff,0xff] + vpsrad zmm18, zmm14, xmmword ptr [rdx - 2064] + +// CHECK: vpsraq zmm21, zmm17, xmm22 +// CHECK: encoding: [0x62,0xa1,0xf5,0x40,0xe2,0xee] + vpsraq zmm21, zmm17, xmm22 + +// CHECK: vpsraq zmm21 {k3}, zmm17, xmm22 +// CHECK: encoding: [0x62,0xa1,0xf5,0x43,0xe2,0xee] + vpsraq zmm21 {k3}, zmm17, xmm22 + +// CHECK: vpsraq zmm21 {k3} {z}, zmm17, xmm22 +// CHECK: encoding: [0x62,0xa1,0xf5,0xc3,0xe2,0xee] + vpsraq zmm21 {k3} {z}, zmm17, xmm22 + +// CHECK: vpsraq zmm21, zmm17, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xf5,0x40,0xe2,0x29] + vpsraq zmm21, zmm17, xmmword ptr [rcx] + +// CHECK: vpsraq zmm21, zmm17, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xf5,0x40,0xe2,0xac,0xf0,0x23,0x01,0x00,0x00] + vpsraq zmm21, zmm17, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsraq zmm21, zmm17, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xe1,0xf5,0x40,0xe2,0x6a,0x7f] + vpsraq zmm21, zmm17, xmmword ptr [rdx + 2032] + +// CHECK: vpsraq zmm21, zmm17, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xe1,0xf5,0x40,0xe2,0xaa,0x00,0x08,0x00,0x00] + vpsraq zmm21, zmm17, xmmword ptr [rdx + 2048] + +// CHECK: vpsraq zmm21, zmm17, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xe1,0xf5,0x40,0xe2,0x6a,0x80] + vpsraq zmm21, zmm17, xmmword ptr [rdx - 2048] + +// CHECK: vpsraq zmm21, zmm17, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xe1,0xf5,0x40,0xe2,0xaa,0xf0,0xf7,0xff,0xff] + vpsraq zmm21, zmm17, xmmword ptr [rdx - 2064] + +// CHECK: vpsravd zmm29, zmm29, zmm17 +// CHECK: encoding: [0x62,0x22,0x15,0x40,0x46,0xe9] + vpsravd zmm29, zmm29, zmm17 + +// CHECK: vpsravd zmm29 {k2}, zmm29, zmm17 +// CHECK: encoding: [0x62,0x22,0x15,0x42,0x46,0xe9] + vpsravd zmm29 {k2}, zmm29, zmm17 + +// CHECK: vpsravd zmm29 {k2} {z}, zmm29, zmm17 +// CHECK: encoding: [0x62,0x22,0x15,0xc2,0x46,0xe9] + vpsravd zmm29 {k2} {z}, zmm29, zmm17 + +// CHECK: vpsravd zmm29, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x15,0x40,0x46,0x29] + vpsravd zmm29, zmm29, zmmword ptr [rcx] + +// CHECK: vpsravd zmm29, zmm29, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x15,0x40,0x46,0xac,0xf0,0x23,0x01,0x00,0x00] + vpsravd zmm29, zmm29, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsravd zmm29, zmm29, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x50,0x46,0x29] + vpsravd zmm29, zmm29, dword ptr [rcx]{1to16} + +// CHECK: vpsravd zmm29, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x15,0x40,0x46,0x6a,0x7f] + vpsravd zmm29, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vpsravd zmm29, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x15,0x40,0x46,0xaa,0x00,0x20,0x00,0x00] + vpsravd zmm29, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vpsravd zmm29, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x15,0x40,0x46,0x6a,0x80] + vpsravd zmm29, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vpsravd zmm29, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x15,0x40,0x46,0xaa,0xc0,0xdf,0xff,0xff] + vpsravd zmm29, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vpsravd zmm29, zmm29, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x50,0x46,0x6a,0x7f] + vpsravd zmm29, zmm29, dword ptr [rdx + 508]{1to16} + +// CHECK: vpsravd zmm29, zmm29, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x50,0x46,0xaa,0x00,0x02,0x00,0x00] + vpsravd zmm29, zmm29, dword ptr [rdx + 512]{1to16} + +// CHECK: vpsravd zmm29, zmm29, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x50,0x46,0x6a,0x80] + vpsravd zmm29, zmm29, dword ptr [rdx - 512]{1to16} + +// CHECK: vpsravd zmm29, zmm29, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x50,0x46,0xaa,0xfc,0xfd,0xff,0xff] + vpsravd zmm29, zmm29, dword ptr [rdx - 516]{1to16} + +// CHECK: vpsravq zmm22, zmm20, zmm2 +// CHECK: encoding: [0x62,0xe2,0xdd,0x40,0x46,0xf2] + vpsravq zmm22, zmm20, zmm2 + +// CHECK: vpsravq zmm22 {k2}, zmm20, zmm2 +// CHECK: encoding: [0x62,0xe2,0xdd,0x42,0x46,0xf2] + vpsravq zmm22 {k2}, zmm20, zmm2 + +// CHECK: vpsravq zmm22 {k2} {z}, zmm20, zmm2 +// CHECK: encoding: [0x62,0xe2,0xdd,0xc2,0x46,0xf2] + vpsravq zmm22 {k2} {z}, zmm20, zmm2 + +// CHECK: vpsravq zmm22, zmm20, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xdd,0x40,0x46,0x31] + vpsravq zmm22, zmm20, zmmword ptr [rcx] + +// CHECK: vpsravq zmm22, zmm20, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xdd,0x40,0x46,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpsravq zmm22, zmm20, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsravq zmm22, zmm20, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x50,0x46,0x31] + vpsravq zmm22, zmm20, qword ptr [rcx]{1to8} + +// CHECK: vpsravq zmm22, zmm20, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xdd,0x40,0x46,0x72,0x7f] + vpsravq zmm22, zmm20, zmmword ptr [rdx + 8128] + +// CHECK: vpsravq zmm22, zmm20, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xdd,0x40,0x46,0xb2,0x00,0x20,0x00,0x00] + vpsravq zmm22, zmm20, zmmword ptr [rdx + 8192] + +// CHECK: vpsravq zmm22, zmm20, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xdd,0x40,0x46,0x72,0x80] + vpsravq zmm22, zmm20, zmmword ptr [rdx - 8192] + +// CHECK: vpsravq zmm22, zmm20, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xdd,0x40,0x46,0xb2,0xc0,0xdf,0xff,0xff] + vpsravq zmm22, zmm20, zmmword ptr [rdx - 8256] + +// CHECK: vpsravq zmm22, zmm20, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x50,0x46,0x72,0x7f] + vpsravq zmm22, zmm20, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpsravq zmm22, zmm20, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x50,0x46,0xb2,0x00,0x04,0x00,0x00] + vpsravq zmm22, zmm20, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpsravq zmm22, zmm20, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x50,0x46,0x72,0x80] + vpsravq zmm22, zmm20, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpsravq zmm22, zmm20, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x50,0x46,0xb2,0xf8,0xfb,0xff,0xff] + vpsravq zmm22, zmm20, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpsrld zmm1, zmm17, xmm25 +// CHECK: encoding: [0x62,0x91,0x75,0x40,0xd2,0xc9] + vpsrld zmm1, zmm17, xmm25 + +// CHECK: vpsrld zmm1 {k4}, zmm17, xmm25 +// CHECK: encoding: [0x62,0x91,0x75,0x44,0xd2,0xc9] + vpsrld zmm1 {k4}, zmm17, xmm25 + +// CHECK: vpsrld zmm1 {k4} {z}, zmm17, xmm25 +// CHECK: encoding: [0x62,0x91,0x75,0xc4,0xd2,0xc9] + vpsrld zmm1 {k4} {z}, zmm17, xmm25 + +// CHECK: vpsrld zmm1, zmm17, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x75,0x40,0xd2,0x09] + vpsrld zmm1, zmm17, xmmword ptr [rcx] + +// CHECK: vpsrld zmm1, zmm17, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x75,0x40,0xd2,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpsrld zmm1, zmm17, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsrld zmm1, zmm17, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xf1,0x75,0x40,0xd2,0x4a,0x7f] + vpsrld zmm1, zmm17, xmmword ptr [rdx + 2032] + +// CHECK: vpsrld zmm1, zmm17, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xf1,0x75,0x40,0xd2,0x8a,0x00,0x08,0x00,0x00] + vpsrld zmm1, zmm17, xmmword ptr [rdx + 2048] + +// CHECK: vpsrld zmm1, zmm17, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xf1,0x75,0x40,0xd2,0x4a,0x80] + vpsrld zmm1, zmm17, xmmword ptr [rdx - 2048] + +// CHECK: vpsrld zmm1, zmm17, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xf1,0x75,0x40,0xd2,0x8a,0xf0,0xf7,0xff,0xff] + vpsrld zmm1, zmm17, xmmword ptr [rdx - 2064] + +// CHECK: vpsrlq zmm9, zmm11, xmm3 +// CHECK: encoding: [0x62,0x71,0xa5,0x48,0xd3,0xcb] + vpsrlq zmm9, zmm11, xmm3 + +// CHECK: vpsrlq zmm9 {k5}, zmm11, xmm3 +// CHECK: encoding: [0x62,0x71,0xa5,0x4d,0xd3,0xcb] + vpsrlq zmm9 {k5}, zmm11, xmm3 + +// CHECK: vpsrlq zmm9 {k5} {z}, zmm11, xmm3 +// CHECK: encoding: [0x62,0x71,0xa5,0xcd,0xd3,0xcb] + vpsrlq zmm9 {k5} {z}, zmm11, xmm3 + +// CHECK: vpsrlq zmm9, zmm11, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xa5,0x48,0xd3,0x09] + vpsrlq zmm9, zmm11, xmmword ptr [rcx] + +// CHECK: vpsrlq zmm9, zmm11, xmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xa5,0x48,0xd3,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpsrlq zmm9, zmm11, xmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsrlq zmm9, zmm11, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x71,0xa5,0x48,0xd3,0x4a,0x7f] + vpsrlq zmm9, zmm11, xmmword ptr [rdx + 2032] + +// CHECK: vpsrlq zmm9, zmm11, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x71,0xa5,0x48,0xd3,0x8a,0x00,0x08,0x00,0x00] + vpsrlq zmm9, zmm11, xmmword ptr [rdx + 2048] + +// CHECK: vpsrlq zmm9, zmm11, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x71,0xa5,0x48,0xd3,0x4a,0x80] + vpsrlq zmm9, zmm11, xmmword ptr [rdx - 2048] + +// CHECK: vpsrlq zmm9, zmm11, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x71,0xa5,0x48,0xd3,0x8a,0xf0,0xf7,0xff,0xff] + vpsrlq zmm9, zmm11, xmmword ptr [rdx - 2064] + +// CHECK: vpsrlvd zmm8, zmm14, zmm28 +// CHECK: encoding: [0x62,0x12,0x0d,0x48,0x45,0xc4] + vpsrlvd zmm8, zmm14, zmm28 + +// CHECK: vpsrlvd zmm8 {k4}, zmm14, zmm28 +// CHECK: encoding: [0x62,0x12,0x0d,0x4c,0x45,0xc4] + vpsrlvd zmm8 {k4}, zmm14, zmm28 + +// CHECK: vpsrlvd zmm8 {k4} {z}, zmm14, zmm28 +// CHECK: encoding: [0x62,0x12,0x0d,0xcc,0x45,0xc4] + vpsrlvd zmm8 {k4} {z}, zmm14, zmm28 + +// CHECK: vpsrlvd zmm8, zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x0d,0x48,0x45,0x01] + vpsrlvd zmm8, zmm14, zmmword ptr [rcx] + +// CHECK: vpsrlvd zmm8, zmm14, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x0d,0x48,0x45,0x84,0xf0,0x23,0x01,0x00,0x00] + vpsrlvd zmm8, zmm14, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsrlvd zmm8, zmm14, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x0d,0x58,0x45,0x01] + vpsrlvd zmm8, zmm14, dword ptr [rcx]{1to16} + +// CHECK: vpsrlvd zmm8, zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x0d,0x48,0x45,0x42,0x7f] + vpsrlvd zmm8, zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vpsrlvd zmm8, zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x0d,0x48,0x45,0x82,0x00,0x20,0x00,0x00] + vpsrlvd zmm8, zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vpsrlvd zmm8, zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x0d,0x48,0x45,0x42,0x80] + vpsrlvd zmm8, zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vpsrlvd zmm8, zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x0d,0x48,0x45,0x82,0xc0,0xdf,0xff,0xff] + vpsrlvd zmm8, zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vpsrlvd zmm8, zmm14, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x0d,0x58,0x45,0x42,0x7f] + vpsrlvd zmm8, zmm14, dword ptr [rdx + 508]{1to16} + +// CHECK: vpsrlvd zmm8, zmm14, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x0d,0x58,0x45,0x82,0x00,0x02,0x00,0x00] + vpsrlvd zmm8, zmm14, dword ptr [rdx + 512]{1to16} + +// CHECK: vpsrlvd zmm8, zmm14, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x0d,0x58,0x45,0x42,0x80] + vpsrlvd zmm8, zmm14, dword ptr [rdx - 512]{1to16} + +// CHECK: vpsrlvd zmm8, zmm14, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x0d,0x58,0x45,0x82,0xfc,0xfd,0xff,0xff] + vpsrlvd zmm8, zmm14, dword ptr [rdx - 516]{1to16} + +// CHECK: vpsrlvq zmm20, zmm7, zmm26 +// CHECK: encoding: [0x62,0x82,0xc5,0x48,0x45,0xe2] + vpsrlvq zmm20, zmm7, zmm26 + +// CHECK: vpsrlvq zmm20 {k5}, zmm7, zmm26 +// CHECK: encoding: [0x62,0x82,0xc5,0x4d,0x45,0xe2] + vpsrlvq zmm20 {k5}, zmm7, zmm26 + +// CHECK: vpsrlvq zmm20 {k5} {z}, zmm7, zmm26 +// CHECK: encoding: [0x62,0x82,0xc5,0xcd,0x45,0xe2] + vpsrlvq zmm20 {k5} {z}, zmm7, zmm26 + +// CHECK: vpsrlvq zmm20, zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xc5,0x48,0x45,0x21] + vpsrlvq zmm20, zmm7, zmmword ptr [rcx] + +// CHECK: vpsrlvq zmm20, zmm7, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xc5,0x48,0x45,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpsrlvq zmm20, zmm7, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsrlvq zmm20, zmm7, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x58,0x45,0x21] + vpsrlvq zmm20, zmm7, qword ptr [rcx]{1to8} + +// CHECK: vpsrlvq zmm20, zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xc5,0x48,0x45,0x62,0x7f] + vpsrlvq zmm20, zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vpsrlvq zmm20, zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xc5,0x48,0x45,0xa2,0x00,0x20,0x00,0x00] + vpsrlvq zmm20, zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vpsrlvq zmm20, zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xc5,0x48,0x45,0x62,0x80] + vpsrlvq zmm20, zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vpsrlvq zmm20, zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xc5,0x48,0x45,0xa2,0xc0,0xdf,0xff,0xff] + vpsrlvq zmm20, zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vpsrlvq zmm20, zmm7, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x58,0x45,0x62,0x7f] + vpsrlvq zmm20, zmm7, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpsrlvq zmm20, zmm7, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x58,0x45,0xa2,0x00,0x04,0x00,0x00] + vpsrlvq zmm20, zmm7, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpsrlvq zmm20, zmm7, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x58,0x45,0x62,0x80] + vpsrlvq zmm20, zmm7, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpsrlvq zmm20, zmm7, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x58,0x45,0xa2,0xf8,0xfb,0xff,0xff] + vpsrlvq zmm20, zmm7, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpsrld zmm3, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0x72,0xd5,0xab] + vpsrld zmm3, zmm5, 171 + +// CHECK: vpsrld zmm3 {k4}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x65,0x4c,0x72,0xd5,0xab] + vpsrld zmm3 {k4}, zmm5, 171 + +// CHECK: vpsrld zmm3 {k4} {z}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x65,0xcc,0x72,0xd5,0xab] + vpsrld zmm3 {k4} {z}, zmm5, 171 + +// CHECK: vpsrld zmm3, zmm5, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0x72,0xd5,0x7b] + vpsrld zmm3, zmm5, 123 + +// CHECK: vpsrld zmm3, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0x72,0x11,0x7b] + vpsrld zmm3, zmmword ptr [rcx], 123 + +// CHECK: vpsrld zmm3, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x65,0x48,0x72,0x94,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpsrld zmm3, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpsrld zmm3, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0x72,0x11,0x7b] + vpsrld zmm3, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpsrld zmm3, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0x72,0x52,0x7f,0x7b] + vpsrld zmm3, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsrld zmm3, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0x72,0x92,0x00,0x20,0x00,0x00,0x7b] + vpsrld zmm3, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsrld zmm3, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0x72,0x52,0x80,0x7b] + vpsrld zmm3, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsrld zmm3, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0x72,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpsrld zmm3, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsrld zmm3, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0x72,0x52,0x7f,0x7b] + vpsrld zmm3, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpsrld zmm3, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0x72,0x92,0x00,0x02,0x00,0x00,0x7b] + vpsrld zmm3, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpsrld zmm3, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0x72,0x52,0x80,0x7b] + vpsrld zmm3, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpsrld zmm3, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0x72,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vpsrld zmm3, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpsrlq zmm18, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xed,0x40,0x73,0xd1,0xab] + vpsrlq zmm18, zmm25, 171 + +// CHECK: vpsrlq zmm18 {k1}, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xed,0x41,0x73,0xd1,0xab] + vpsrlq zmm18 {k1}, zmm25, 171 + +// CHECK: vpsrlq zmm18 {k1} {z}, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xed,0xc1,0x73,0xd1,0xab] + vpsrlq zmm18 {k1} {z}, zmm25, 171 + +// CHECK: vpsrlq zmm18, zmm25, 123 +// CHECK: encoding: [0x62,0x91,0xed,0x40,0x73,0xd1,0x7b] + vpsrlq zmm18, zmm25, 123 + +// CHECK: vpsrlq zmm18, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x40,0x73,0x11,0x7b] + vpsrlq zmm18, zmmword ptr [rcx], 123 + +// CHECK: vpsrlq zmm18, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0xed,0x40,0x73,0x94,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpsrlq zmm18, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpsrlq zmm18, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x50,0x73,0x11,0x7b] + vpsrlq zmm18, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpsrlq zmm18, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x40,0x73,0x52,0x7f,0x7b] + vpsrlq zmm18, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsrlq zmm18, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x40,0x73,0x92,0x00,0x20,0x00,0x00,0x7b] + vpsrlq zmm18, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsrlq zmm18, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x40,0x73,0x52,0x80,0x7b] + vpsrlq zmm18, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsrlq zmm18, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x40,0x73,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpsrlq zmm18, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsrlq zmm18, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x50,0x73,0x52,0x7f,0x7b] + vpsrlq zmm18, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpsrlq zmm18, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x50,0x73,0x92,0x00,0x04,0x00,0x00,0x7b] + vpsrlq zmm18, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpsrlq zmm18, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x50,0x73,0x52,0x80,0x7b] + vpsrlq zmm18, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpsrlq zmm18, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xed,0x50,0x73,0x92,0xf8,0xfb,0xff,0xff,0x7b] + vpsrlq zmm18, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpsubd zmm7, zmm28, zmm7 +// CHECK: encoding: [0x62,0xf1,0x1d,0x40,0xfa,0xff] + vpsubd zmm7, zmm28, zmm7 + +// CHECK: vpsubd zmm7 {k3}, zmm28, zmm7 +// CHECK: encoding: [0x62,0xf1,0x1d,0x43,0xfa,0xff] + vpsubd zmm7 {k3}, zmm28, zmm7 + +// CHECK: vpsubd zmm7 {k3} {z}, zmm28, zmm7 +// CHECK: encoding: [0x62,0xf1,0x1d,0xc3,0xfa,0xff] + vpsubd zmm7 {k3} {z}, zmm28, zmm7 + +// CHECK: vpsubd zmm7, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x1d,0x40,0xfa,0x39] + vpsubd zmm7, zmm28, zmmword ptr [rcx] + +// CHECK: vpsubd zmm7, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x1d,0x40,0xfa,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpsubd zmm7, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsubd zmm7, zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x1d,0x50,0xfa,0x39] + vpsubd zmm7, zmm28, dword ptr [rcx]{1to16} + +// CHECK: vpsubd zmm7, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x1d,0x40,0xfa,0x7a,0x7f] + vpsubd zmm7, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vpsubd zmm7, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x1d,0x40,0xfa,0xba,0x00,0x20,0x00,0x00] + vpsubd zmm7, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vpsubd zmm7, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x1d,0x40,0xfa,0x7a,0x80] + vpsubd zmm7, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vpsubd zmm7, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x1d,0x40,0xfa,0xba,0xc0,0xdf,0xff,0xff] + vpsubd zmm7, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vpsubd zmm7, zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x1d,0x50,0xfa,0x7a,0x7f] + vpsubd zmm7, zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vpsubd zmm7, zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x1d,0x50,0xfa,0xba,0x00,0x02,0x00,0x00] + vpsubd zmm7, zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vpsubd zmm7, zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x1d,0x50,0xfa,0x7a,0x80] + vpsubd zmm7, zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vpsubd zmm7, zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x1d,0x50,0xfa,0xba,0xfc,0xfd,0xff,0xff] + vpsubd zmm7, zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vpsubq zmm29, zmm28, zmm17 +// CHECK: encoding: [0x62,0x21,0x9d,0x40,0xfb,0xe9] + vpsubq zmm29, zmm28, zmm17 + +// CHECK: vpsubq zmm29 {k2}, zmm28, zmm17 +// CHECK: encoding: [0x62,0x21,0x9d,0x42,0xfb,0xe9] + vpsubq zmm29 {k2}, zmm28, zmm17 + +// CHECK: vpsubq zmm29 {k2} {z}, zmm28, zmm17 +// CHECK: encoding: [0x62,0x21,0x9d,0xc2,0xfb,0xe9] + vpsubq zmm29 {k2} {z}, zmm28, zmm17 + +// CHECK: vpsubq zmm29, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0xfb,0x29] + vpsubq zmm29, zmm28, zmmword ptr [rcx] + +// CHECK: vpsubq zmm29, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x9d,0x40,0xfb,0xac,0xf0,0x23,0x01,0x00,0x00] + vpsubq zmm29, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpsubq zmm29, zmm28, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0xfb,0x29] + vpsubq zmm29, zmm28, qword ptr [rcx]{1to8} + +// CHECK: vpsubq zmm29, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0xfb,0x6a,0x7f] + vpsubq zmm29, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vpsubq zmm29, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0xfb,0xaa,0x00,0x20,0x00,0x00] + vpsubq zmm29, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vpsubq zmm29, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0xfb,0x6a,0x80] + vpsubq zmm29, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vpsubq zmm29, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x9d,0x40,0xfb,0xaa,0xc0,0xdf,0xff,0xff] + vpsubq zmm29, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vpsubq zmm29, zmm28, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0xfb,0x6a,0x7f] + vpsubq zmm29, zmm28, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpsubq zmm29, zmm28, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0xfb,0xaa,0x00,0x04,0x00,0x00] + vpsubq zmm29, zmm28, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpsubq zmm29, zmm28, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0xfb,0x6a,0x80] + vpsubq zmm29, zmm28, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpsubq zmm29, zmm28, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x50,0xfb,0xaa,0xf8,0xfb,0xff,0xff] + vpsubq zmm29, zmm28, qword ptr [rdx - 1032]{1to8} + +// CHECK: vptestmd k2, zmm12, zmm16 +// CHECK: encoding: [0x62,0xb2,0x1d,0x48,0x27,0xd0] + vptestmd k2, zmm12, zmm16 + +// CHECK: vptestmd k2 {k1}, zmm12, zmm16 +// CHECK: encoding: [0x62,0xb2,0x1d,0x49,0x27,0xd0] + vptestmd k2 {k1}, zmm12, zmm16 + +// CHECK: vptestmd k2, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x1d,0x48,0x27,0x11] + vptestmd k2, zmm12, zmmword ptr [rcx] + +// CHECK: vptestmd k2, zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x1d,0x48,0x27,0x94,0xf0,0x23,0x01,0x00,0x00] + vptestmd k2, zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vptestmd k2, zmm12, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x1d,0x58,0x27,0x11] + vptestmd k2, zmm12, dword ptr [rcx]{1to16} + +// CHECK: vptestmd k2, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x1d,0x48,0x27,0x52,0x7f] + vptestmd k2, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vptestmd k2, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x1d,0x48,0x27,0x92,0x00,0x20,0x00,0x00] + vptestmd k2, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vptestmd k2, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x1d,0x48,0x27,0x52,0x80] + vptestmd k2, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vptestmd k2, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x1d,0x48,0x27,0x92,0xc0,0xdf,0xff,0xff] + vptestmd k2, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vptestmd k2, zmm12, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x1d,0x58,0x27,0x52,0x7f] + vptestmd k2, zmm12, dword ptr [rdx + 508]{1to16} + +// CHECK: vptestmd k2, zmm12, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x1d,0x58,0x27,0x92,0x00,0x02,0x00,0x00] + vptestmd k2, zmm12, dword ptr [rdx + 512]{1to16} + +// CHECK: vptestmd k2, zmm12, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x1d,0x58,0x27,0x52,0x80] + vptestmd k2, zmm12, dword ptr [rdx - 512]{1to16} + +// CHECK: vptestmd k2, zmm12, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x1d,0x58,0x27,0x92,0xfc,0xfd,0xff,0xff] + vptestmd k2, zmm12, dword ptr [rdx - 516]{1to16} + +// CHECK: vptestmq k5, zmm6, zmm21 +// CHECK: encoding: [0x62,0xb2,0xcd,0x48,0x27,0xed] + vptestmq k5, zmm6, zmm21 + +// CHECK: vptestmq k5 {k5}, zmm6, zmm21 +// CHECK: encoding: [0x62,0xb2,0xcd,0x4d,0x27,0xed] + vptestmq k5 {k5}, zmm6, zmm21 + +// CHECK: vptestmq k5, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x27,0x29] + vptestmq k5, zmm6, zmmword ptr [rcx] + +// CHECK: vptestmq k5, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xcd,0x48,0x27,0xac,0xf0,0x23,0x01,0x00,0x00] + vptestmq k5, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vptestmq k5, zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x27,0x29] + vptestmq k5, zmm6, qword ptr [rcx]{1to8} + +// CHECK: vptestmq k5, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x27,0x6a,0x7f] + vptestmq k5, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vptestmq k5, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x27,0xaa,0x00,0x20,0x00,0x00] + vptestmq k5, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vptestmq k5, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x27,0x6a,0x80] + vptestmq k5, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vptestmq k5, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xcd,0x48,0x27,0xaa,0xc0,0xdf,0xff,0xff] + vptestmq k5, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vptestmq k5, zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x27,0x6a,0x7f] + vptestmq k5, zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vptestmq k5, zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x27,0xaa,0x00,0x04,0x00,0x00] + vptestmq k5, zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vptestmq k5, zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x27,0x6a,0x80] + vptestmq k5, zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vptestmq k5, zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x58,0x27,0xaa,0xf8,0xfb,0xff,0xff] + vptestmq k5, zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpunpckhdq zmm6, zmm4, zmm13 +// CHECK: encoding: [0x62,0xd1,0x5d,0x48,0x6a,0xf5] + vpunpckhdq zmm6, zmm4, zmm13 + +// CHECK: vpunpckhdq zmm6 {k5}, zmm4, zmm13 +// CHECK: encoding: [0x62,0xd1,0x5d,0x4d,0x6a,0xf5] + vpunpckhdq zmm6 {k5}, zmm4, zmm13 + +// CHECK: vpunpckhdq zmm6 {k5} {z}, zmm4, zmm13 +// CHECK: encoding: [0x62,0xd1,0x5d,0xcd,0x6a,0xf5] + vpunpckhdq zmm6 {k5} {z}, zmm4, zmm13 + +// CHECK: vpunpckhdq zmm6, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x5d,0x48,0x6a,0x31] + vpunpckhdq zmm6, zmm4, zmmword ptr [rcx] + +// CHECK: vpunpckhdq zmm6, zmm4, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x5d,0x48,0x6a,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpunpckhdq zmm6, zmm4, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpunpckhdq zmm6, zmm4, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x5d,0x58,0x6a,0x31] + vpunpckhdq zmm6, zmm4, dword ptr [rcx]{1to16} + +// CHECK: vpunpckhdq zmm6, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x5d,0x48,0x6a,0x72,0x7f] + vpunpckhdq zmm6, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vpunpckhdq zmm6, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x5d,0x48,0x6a,0xb2,0x00,0x20,0x00,0x00] + vpunpckhdq zmm6, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vpunpckhdq zmm6, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x5d,0x48,0x6a,0x72,0x80] + vpunpckhdq zmm6, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vpunpckhdq zmm6, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x5d,0x48,0x6a,0xb2,0xc0,0xdf,0xff,0xff] + vpunpckhdq zmm6, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vpunpckhdq zmm6, zmm4, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x5d,0x58,0x6a,0x72,0x7f] + vpunpckhdq zmm6, zmm4, dword ptr [rdx + 508]{1to16} + +// CHECK: vpunpckhdq zmm6, zmm4, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x5d,0x58,0x6a,0xb2,0x00,0x02,0x00,0x00] + vpunpckhdq zmm6, zmm4, dword ptr [rdx + 512]{1to16} + +// CHECK: vpunpckhdq zmm6, zmm4, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x5d,0x58,0x6a,0x72,0x80] + vpunpckhdq zmm6, zmm4, dword ptr [rdx - 512]{1to16} + +// CHECK: vpunpckhdq zmm6, zmm4, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x5d,0x58,0x6a,0xb2,0xfc,0xfd,0xff,0xff] + vpunpckhdq zmm6, zmm4, dword ptr [rdx - 516]{1to16} + +// CHECK: vpunpckhqdq zmm27, zmm15, zmm16 +// CHECK: encoding: [0x62,0x21,0x85,0x48,0x6d,0xd8] + vpunpckhqdq zmm27, zmm15, zmm16 + +// CHECK: vpunpckhqdq zmm27 {k3}, zmm15, zmm16 +// CHECK: encoding: [0x62,0x21,0x85,0x4b,0x6d,0xd8] + vpunpckhqdq zmm27 {k3}, zmm15, zmm16 + +// CHECK: vpunpckhqdq zmm27 {k3} {z}, zmm15, zmm16 +// CHECK: encoding: [0x62,0x21,0x85,0xcb,0x6d,0xd8] + vpunpckhqdq zmm27 {k3} {z}, zmm15, zmm16 + +// CHECK: vpunpckhqdq zmm27, zmm15, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x85,0x48,0x6d,0x19] + vpunpckhqdq zmm27, zmm15, zmmword ptr [rcx] + +// CHECK: vpunpckhqdq zmm27, zmm15, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x85,0x48,0x6d,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpunpckhqdq zmm27, zmm15, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpunpckhqdq zmm27, zmm15, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0x85,0x58,0x6d,0x19] + vpunpckhqdq zmm27, zmm15, qword ptr [rcx]{1to8} + +// CHECK: vpunpckhqdq zmm27, zmm15, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x85,0x48,0x6d,0x5a,0x7f] + vpunpckhqdq zmm27, zmm15, zmmword ptr [rdx + 8128] + +// CHECK: vpunpckhqdq zmm27, zmm15, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x85,0x48,0x6d,0x9a,0x00,0x20,0x00,0x00] + vpunpckhqdq zmm27, zmm15, zmmword ptr [rdx + 8192] + +// CHECK: vpunpckhqdq zmm27, zmm15, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x85,0x48,0x6d,0x5a,0x80] + vpunpckhqdq zmm27, zmm15, zmmword ptr [rdx - 8192] + +// CHECK: vpunpckhqdq zmm27, zmm15, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x85,0x48,0x6d,0x9a,0xc0,0xdf,0xff,0xff] + vpunpckhqdq zmm27, zmm15, zmmword ptr [rdx - 8256] + +// CHECK: vpunpckhqdq zmm27, zmm15, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0x85,0x58,0x6d,0x5a,0x7f] + vpunpckhqdq zmm27, zmm15, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpunpckhqdq zmm27, zmm15, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0x85,0x58,0x6d,0x9a,0x00,0x04,0x00,0x00] + vpunpckhqdq zmm27, zmm15, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpunpckhqdq zmm27, zmm15, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0x85,0x58,0x6d,0x5a,0x80] + vpunpckhqdq zmm27, zmm15, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpunpckhqdq zmm27, zmm15, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0x85,0x58,0x6d,0x9a,0xf8,0xfb,0xff,0xff] + vpunpckhqdq zmm27, zmm15, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpunpckldq zmm24, zmm3, zmm17 +// CHECK: encoding: [0x62,0x21,0x65,0x48,0x62,0xc1] + vpunpckldq zmm24, zmm3, zmm17 + +// CHECK: vpunpckldq zmm24 {k3}, zmm3, zmm17 +// CHECK: encoding: [0x62,0x21,0x65,0x4b,0x62,0xc1] + vpunpckldq zmm24 {k3}, zmm3, zmm17 + +// CHECK: vpunpckldq zmm24 {k3} {z}, zmm3, zmm17 +// CHECK: encoding: [0x62,0x21,0x65,0xcb,0x62,0xc1] + vpunpckldq zmm24 {k3} {z}, zmm3, zmm17 + +// CHECK: vpunpckldq zmm24, zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x65,0x48,0x62,0x01] + vpunpckldq zmm24, zmm3, zmmword ptr [rcx] + +// CHECK: vpunpckldq zmm24, zmm3, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x65,0x48,0x62,0x84,0xf0,0x23,0x01,0x00,0x00] + vpunpckldq zmm24, zmm3, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpunpckldq zmm24, zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x65,0x58,0x62,0x01] + vpunpckldq zmm24, zmm3, dword ptr [rcx]{1to16} + +// CHECK: vpunpckldq zmm24, zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x65,0x48,0x62,0x42,0x7f] + vpunpckldq zmm24, zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vpunpckldq zmm24, zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x65,0x48,0x62,0x82,0x00,0x20,0x00,0x00] + vpunpckldq zmm24, zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vpunpckldq zmm24, zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x65,0x48,0x62,0x42,0x80] + vpunpckldq zmm24, zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vpunpckldq zmm24, zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x65,0x48,0x62,0x82,0xc0,0xdf,0xff,0xff] + vpunpckldq zmm24, zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vpunpckldq zmm24, zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x65,0x58,0x62,0x42,0x7f] + vpunpckldq zmm24, zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vpunpckldq zmm24, zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x65,0x58,0x62,0x82,0x00,0x02,0x00,0x00] + vpunpckldq zmm24, zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vpunpckldq zmm24, zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x65,0x58,0x62,0x42,0x80] + vpunpckldq zmm24, zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vpunpckldq zmm24, zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x65,0x58,0x62,0x82,0xfc,0xfd,0xff,0xff] + vpunpckldq zmm24, zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vpunpcklqdq zmm3, zmm4, zmm17 +// CHECK: encoding: [0x62,0xb1,0xdd,0x48,0x6c,0xd9] + vpunpcklqdq zmm3, zmm4, zmm17 + +// CHECK: vpunpcklqdq zmm3 {k1}, zmm4, zmm17 +// CHECK: encoding: [0x62,0xb1,0xdd,0x49,0x6c,0xd9] + vpunpcklqdq zmm3 {k1}, zmm4, zmm17 + +// CHECK: vpunpcklqdq zmm3 {k1} {z}, zmm4, zmm17 +// CHECK: encoding: [0x62,0xb1,0xdd,0xc9,0x6c,0xd9] + vpunpcklqdq zmm3 {k1} {z}, zmm4, zmm17 + +// CHECK: vpunpcklqdq zmm3, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x6c,0x19] + vpunpcklqdq zmm3, zmm4, zmmword ptr [rcx] + +// CHECK: vpunpcklqdq zmm3, zmm4, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xdd,0x48,0x6c,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpunpcklqdq zmm3, zmm4, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpunpcklqdq zmm3, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x6c,0x19] + vpunpcklqdq zmm3, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vpunpcklqdq zmm3, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x6c,0x5a,0x7f] + vpunpcklqdq zmm3, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vpunpcklqdq zmm3, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x6c,0x9a,0x00,0x20,0x00,0x00] + vpunpcklqdq zmm3, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vpunpcklqdq zmm3, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x6c,0x5a,0x80] + vpunpcklqdq zmm3, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vpunpcklqdq zmm3, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x6c,0x9a,0xc0,0xdf,0xff,0xff] + vpunpcklqdq zmm3, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vpunpcklqdq zmm3, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x6c,0x5a,0x7f] + vpunpcklqdq zmm3, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpunpcklqdq zmm3, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x6c,0x9a,0x00,0x04,0x00,0x00] + vpunpcklqdq zmm3, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpunpcklqdq zmm3, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x6c,0x5a,0x80] + vpunpcklqdq zmm3, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpunpcklqdq zmm3, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x6c,0x9a,0xf8,0xfb,0xff,0xff] + vpunpcklqdq zmm3, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpxord zmm8, zmm12, zmm24 +// CHECK: encoding: [0x62,0x11,0x1d,0x48,0xef,0xc0] + vpxord zmm8, zmm12, zmm24 + +// CHECK: vpxord zmm8 {k6}, zmm12, zmm24 +// CHECK: encoding: [0x62,0x11,0x1d,0x4e,0xef,0xc0] + vpxord zmm8 {k6}, zmm12, zmm24 + +// CHECK: vpxord zmm8 {k6} {z}, zmm12, zmm24 +// CHECK: encoding: [0x62,0x11,0x1d,0xce,0xef,0xc0] + vpxord zmm8 {k6} {z}, zmm12, zmm24 + +// CHECK: vpxord zmm8, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x1d,0x48,0xef,0x01] + vpxord zmm8, zmm12, zmmword ptr [rcx] + +// CHECK: vpxord zmm8, zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x1d,0x48,0xef,0x84,0xf0,0x23,0x01,0x00,0x00] + vpxord zmm8, zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpxord zmm8, zmm12, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x71,0x1d,0x58,0xef,0x01] + vpxord zmm8, zmm12, dword ptr [rcx]{1to16} + +// CHECK: vpxord zmm8, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x1d,0x48,0xef,0x42,0x7f] + vpxord zmm8, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vpxord zmm8, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x1d,0x48,0xef,0x82,0x00,0x20,0x00,0x00] + vpxord zmm8, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vpxord zmm8, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x1d,0x48,0xef,0x42,0x80] + vpxord zmm8, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vpxord zmm8, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x1d,0x48,0xef,0x82,0xc0,0xdf,0xff,0xff] + vpxord zmm8, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vpxord zmm8, zmm12, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x71,0x1d,0x58,0xef,0x42,0x7f] + vpxord zmm8, zmm12, dword ptr [rdx + 508]{1to16} + +// CHECK: vpxord zmm8, zmm12, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x1d,0x58,0xef,0x82,0x00,0x02,0x00,0x00] + vpxord zmm8, zmm12, dword ptr [rdx + 512]{1to16} + +// CHECK: vpxord zmm8, zmm12, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x1d,0x58,0xef,0x42,0x80] + vpxord zmm8, zmm12, dword ptr [rdx - 512]{1to16} + +// CHECK: vpxord zmm8, zmm12, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x71,0x1d,0x58,0xef,0x82,0xfc,0xfd,0xff,0xff] + vpxord zmm8, zmm12, dword ptr [rdx - 516]{1to16} + +// CHECK: vpxorq zmm7, zmm22, zmm10 +// CHECK: encoding: [0x62,0xd1,0xcd,0x40,0xef,0xfa] + vpxorq zmm7, zmm22, zmm10 + +// CHECK: vpxorq zmm7 {k6}, zmm22, zmm10 +// CHECK: encoding: [0x62,0xd1,0xcd,0x46,0xef,0xfa] + vpxorq zmm7 {k6}, zmm22, zmm10 + +// CHECK: vpxorq zmm7 {k6} {z}, zmm22, zmm10 +// CHECK: encoding: [0x62,0xd1,0xcd,0xc6,0xef,0xfa] + vpxorq zmm7 {k6} {z}, zmm22, zmm10 + +// CHECK: vpxorq zmm7, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xcd,0x40,0xef,0x39] + vpxorq zmm7, zmm22, zmmword ptr [rcx] + +// CHECK: vpxorq zmm7, zmm22, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xcd,0x40,0xef,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpxorq zmm7, zmm22, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpxorq zmm7, zmm22, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x50,0xef,0x39] + vpxorq zmm7, zmm22, qword ptr [rcx]{1to8} + +// CHECK: vpxorq zmm7, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xcd,0x40,0xef,0x7a,0x7f] + vpxorq zmm7, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpxorq zmm7, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xcd,0x40,0xef,0xba,0x00,0x20,0x00,0x00] + vpxorq zmm7, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpxorq zmm7, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xcd,0x40,0xef,0x7a,0x80] + vpxorq zmm7, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpxorq zmm7, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xcd,0x40,0xef,0xba,0xc0,0xdf,0xff,0xff] + vpxorq zmm7, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpxorq zmm7, zmm22, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x50,0xef,0x7a,0x7f] + vpxorq zmm7, zmm22, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpxorq zmm7, zmm22, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x50,0xef,0xba,0x00,0x04,0x00,0x00] + vpxorq zmm7, zmm22, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpxorq zmm7, zmm22, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x50,0xef,0x7a,0x80] + vpxorq zmm7, zmm22, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpxorq zmm7, zmm22, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xcd,0x50,0xef,0xba,0xf8,0xfb,0xff,0xff] + vpxorq zmm7, zmm22, qword ptr [rdx - 1032]{1to8} + +// CHECK: vrcp14pd zmm13, zmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4c,0xec] + vrcp14pd zmm13, zmm4 + +// CHECK: vrcp14pd zmm13 {k5}, zmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0x4d,0x4c,0xec] + vrcp14pd zmm13 {k5}, zmm4 + +// CHECK: vrcp14pd zmm13 {k5} {z}, zmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0xcd,0x4c,0xec] + vrcp14pd zmm13 {k5} {z}, zmm4 + +// CHECK: vrcp14pd zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4c,0x29] + vrcp14pd zmm13, zmmword ptr [rcx] + +// CHECK: vrcp14pd zmm13, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xfd,0x48,0x4c,0xac,0xf0,0x23,0x01,0x00,0x00] + vrcp14pd zmm13, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vrcp14pd zmm13, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4c,0x29] + vrcp14pd zmm13, qword ptr [rcx]{1to8} + +// CHECK: vrcp14pd zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4c,0x6a,0x7f] + vrcp14pd zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vrcp14pd zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4c,0xaa,0x00,0x20,0x00,0x00] + vrcp14pd zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vrcp14pd zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4c,0x6a,0x80] + vrcp14pd zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vrcp14pd zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4c,0xaa,0xc0,0xdf,0xff,0xff] + vrcp14pd zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vrcp14pd zmm13, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4c,0x6a,0x7f] + vrcp14pd zmm13, qword ptr [rdx + 1016]{1to8} + +// CHECK: vrcp14pd zmm13, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4c,0xaa,0x00,0x04,0x00,0x00] + vrcp14pd zmm13, qword ptr [rdx + 1024]{1to8} + +// CHECK: vrcp14pd zmm13, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4c,0x6a,0x80] + vrcp14pd zmm13, qword ptr [rdx - 1024]{1to8} + +// CHECK: vrcp14pd zmm13, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4c,0xaa,0xf8,0xfb,0xff,0xff] + vrcp14pd zmm13, qword ptr [rdx - 1032]{1to8} + +// CHECK: vrcp14ps zmm10, zmm25 +// CHECK: encoding: [0x62,0x12,0x7d,0x48,0x4c,0xd1] + vrcp14ps zmm10, zmm25 + +// CHECK: vrcp14ps zmm10 {k1}, zmm25 +// CHECK: encoding: [0x62,0x12,0x7d,0x49,0x4c,0xd1] + vrcp14ps zmm10 {k1}, zmm25 + +// CHECK: vrcp14ps zmm10 {k1} {z}, zmm25 +// CHECK: encoding: [0x62,0x12,0x7d,0xc9,0x4c,0xd1] + vrcp14ps zmm10 {k1} {z}, zmm25 + +// CHECK: vrcp14ps zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x4c,0x11] + vrcp14ps zmm10, zmmword ptr [rcx] + +// CHECK: vrcp14ps zmm10, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x4c,0x94,0xf0,0x23,0x01,0x00,0x00] + vrcp14ps zmm10, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vrcp14ps zmm10, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x4c,0x11] + vrcp14ps zmm10, dword ptr [rcx]{1to16} + +// CHECK: vrcp14ps zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x4c,0x52,0x7f] + vrcp14ps zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vrcp14ps zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x4c,0x92,0x00,0x20,0x00,0x00] + vrcp14ps zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vrcp14ps zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x4c,0x52,0x80] + vrcp14ps zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vrcp14ps zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x4c,0x92,0xc0,0xdf,0xff,0xff] + vrcp14ps zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vrcp14ps zmm10, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x4c,0x52,0x7f] + vrcp14ps zmm10, dword ptr [rdx + 508]{1to16} + +// CHECK: vrcp14ps zmm10, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x4c,0x92,0x00,0x02,0x00,0x00] + vrcp14ps zmm10, dword ptr [rdx + 512]{1to16} + +// CHECK: vrcp14ps zmm10, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x4c,0x52,0x80] + vrcp14ps zmm10, dword ptr [rdx - 512]{1to16} + +// CHECK: vrcp14ps zmm10, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x58,0x4c,0x92,0xfc,0xfd,0xff,0xff] + vrcp14ps zmm10, dword ptr [rdx - 516]{1to16} + +// CHECK: vrcp14sd xmm12, xmm22, xmm14 +// CHECK: encoding: [0x62,0x52,0xcd,0x00,0x4d,0xe6] + vrcp14sd xmm12, xmm22, xmm14 + +// CHECK: vrcp14sd xmm12 {k2}, xmm22, xmm14 +// CHECK: encoding: [0x62,0x52,0xcd,0x02,0x4d,0xe6] + vrcp14sd xmm12 {k2}, xmm22, xmm14 + +// CHECK: vrcp14sd xmm12 {k2} {z}, xmm22, xmm14 +// CHECK: encoding: [0x62,0x52,0xcd,0x82,0x4d,0xe6] + vrcp14sd xmm12 {k2} {z}, xmm22, xmm14 + +// CHECK: vrcp14sd xmm12, xmm22, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xcd,0x00,0x4d,0x21] + vrcp14sd xmm12, xmm22, qword ptr [rcx] + +// CHECK: vrcp14sd xmm12, xmm22, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xcd,0x00,0x4d,0xa4,0xf0,0x23,0x01,0x00,0x00] + vrcp14sd xmm12, xmm22, qword ptr [rax + 8*r14 + 291] + +// CHECK: vrcp14sd xmm12, xmm22, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x72,0xcd,0x00,0x4d,0x62,0x7f] + vrcp14sd xmm12, xmm22, qword ptr [rdx + 1016] + +// CHECK: vrcp14sd xmm12, xmm22, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x72,0xcd,0x00,0x4d,0xa2,0x00,0x04,0x00,0x00] + vrcp14sd xmm12, xmm22, qword ptr [rdx + 1024] + +// CHECK: vrcp14sd xmm12, xmm22, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x72,0xcd,0x00,0x4d,0x62,0x80] + vrcp14sd xmm12, xmm22, qword ptr [rdx - 1024] + +// CHECK: vrcp14sd xmm12, xmm22, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x72,0xcd,0x00,0x4d,0xa2,0xf8,0xfb,0xff,0xff] + vrcp14sd xmm12, xmm22, qword ptr [rdx - 1032] + +// CHECK: vrcp14ss xmm8, xmm8, xmm3 +// CHECK: encoding: [0x62,0x72,0x3d,0x08,0x4d,0xc3] + vrcp14ss xmm8, xmm8, xmm3 + +// CHECK: vrcp14ss xmm8 {k7}, xmm8, xmm3 +// CHECK: encoding: [0x62,0x72,0x3d,0x0f,0x4d,0xc3] + vrcp14ss xmm8 {k7}, xmm8, xmm3 + +// CHECK: vrcp14ss xmm8 {k7} {z}, xmm8, xmm3 +// CHECK: encoding: [0x62,0x72,0x3d,0x8f,0x4d,0xc3] + vrcp14ss xmm8 {k7} {z}, xmm8, xmm3 + +// CHECK: vrcp14ss xmm8, xmm8, dword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x3d,0x08,0x4d,0x01] + vrcp14ss xmm8, xmm8, dword ptr [rcx] + +// CHECK: vrcp14ss xmm8, xmm8, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x3d,0x08,0x4d,0x84,0xf0,0x23,0x01,0x00,0x00] + vrcp14ss xmm8, xmm8, dword ptr [rax + 8*r14 + 291] + +// CHECK: vrcp14ss xmm8, xmm8, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x72,0x3d,0x08,0x4d,0x42,0x7f] + vrcp14ss xmm8, xmm8, dword ptr [rdx + 508] + +// CHECK: vrcp14ss xmm8, xmm8, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x72,0x3d,0x08,0x4d,0x82,0x00,0x02,0x00,0x00] + vrcp14ss xmm8, xmm8, dword ptr [rdx + 512] + +// CHECK: vrcp14ss xmm8, xmm8, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x72,0x3d,0x08,0x4d,0x42,0x80] + vrcp14ss xmm8, xmm8, dword ptr [rdx - 512] + +// CHECK: vrcp14ss xmm8, xmm8, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x72,0x3d,0x08,0x4d,0x82,0xfc,0xfd,0xff,0xff] + vrcp14ss xmm8, xmm8, dword ptr [rdx - 516] + +// CHECK: vrsqrt14pd zmm19, zmm14 +// CHECK: encoding: [0x62,0xc2,0xfd,0x48,0x4e,0xde] + vrsqrt14pd zmm19, zmm14 + +// CHECK: vrsqrt14pd zmm19 {k1}, zmm14 +// CHECK: encoding: [0x62,0xc2,0xfd,0x49,0x4e,0xde] + vrsqrt14pd zmm19 {k1}, zmm14 + +// CHECK: vrsqrt14pd zmm19 {k1} {z}, zmm14 +// CHECK: encoding: [0x62,0xc2,0xfd,0xc9,0x4e,0xde] + vrsqrt14pd zmm19 {k1} {z}, zmm14 + +// CHECK: vrsqrt14pd zmm19, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x4e,0x19] + vrsqrt14pd zmm19, zmmword ptr [rcx] + +// CHECK: vrsqrt14pd zmm19, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xfd,0x48,0x4e,0x9c,0xf0,0x23,0x01,0x00,0x00] + vrsqrt14pd zmm19, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vrsqrt14pd zmm19, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x4e,0x19] + vrsqrt14pd zmm19, qword ptr [rcx]{1to8} + +// CHECK: vrsqrt14pd zmm19, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x4e,0x5a,0x7f] + vrsqrt14pd zmm19, zmmword ptr [rdx + 8128] + +// CHECK: vrsqrt14pd zmm19, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x4e,0x9a,0x00,0x20,0x00,0x00] + vrsqrt14pd zmm19, zmmword ptr [rdx + 8192] + +// CHECK: vrsqrt14pd zmm19, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x4e,0x5a,0x80] + vrsqrt14pd zmm19, zmmword ptr [rdx - 8192] + +// CHECK: vrsqrt14pd zmm19, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x4e,0x9a,0xc0,0xdf,0xff,0xff] + vrsqrt14pd zmm19, zmmword ptr [rdx - 8256] + +// CHECK: vrsqrt14pd zmm19, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x4e,0x5a,0x7f] + vrsqrt14pd zmm19, qword ptr [rdx + 1016]{1to8} + +// CHECK: vrsqrt14pd zmm19, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x4e,0x9a,0x00,0x04,0x00,0x00] + vrsqrt14pd zmm19, qword ptr [rdx + 1024]{1to8} + +// CHECK: vrsqrt14pd zmm19, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x4e,0x5a,0x80] + vrsqrt14pd zmm19, qword ptr [rdx - 1024]{1to8} + +// CHECK: vrsqrt14pd zmm19, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x4e,0x9a,0xf8,0xfb,0xff,0xff] + vrsqrt14pd zmm19, qword ptr [rdx - 1032]{1to8} + +// CHECK: vrsqrt14ps zmm16, zmm9 +// CHECK: encoding: [0x62,0xc2,0x7d,0x48,0x4e,0xc1] + vrsqrt14ps zmm16, zmm9 + +// CHECK: vrsqrt14ps zmm16 {k5}, zmm9 +// CHECK: encoding: [0x62,0xc2,0x7d,0x4d,0x4e,0xc1] + vrsqrt14ps zmm16 {k5}, zmm9 + +// CHECK: vrsqrt14ps zmm16 {k5} {z}, zmm9 +// CHECK: encoding: [0x62,0xc2,0x7d,0xcd,0x4e,0xc1] + vrsqrt14ps zmm16 {k5} {z}, zmm9 + +// CHECK: vrsqrt14ps zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x4e,0x01] + vrsqrt14ps zmm16, zmmword ptr [rcx] + +// CHECK: vrsqrt14ps zmm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x4e,0x84,0xf0,0x23,0x01,0x00,0x00] + vrsqrt14ps zmm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vrsqrt14ps zmm16, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x58,0x4e,0x01] + vrsqrt14ps zmm16, dword ptr [rcx]{1to16} + +// CHECK: vrsqrt14ps zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x4e,0x42,0x7f] + vrsqrt14ps zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vrsqrt14ps zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x4e,0x82,0x00,0x20,0x00,0x00] + vrsqrt14ps zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vrsqrt14ps zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x4e,0x42,0x80] + vrsqrt14ps zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vrsqrt14ps zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x4e,0x82,0xc0,0xdf,0xff,0xff] + vrsqrt14ps zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vrsqrt14ps zmm16, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x58,0x4e,0x42,0x7f] + vrsqrt14ps zmm16, dword ptr [rdx + 508]{1to16} + +// CHECK: vrsqrt14ps zmm16, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x58,0x4e,0x82,0x00,0x02,0x00,0x00] + vrsqrt14ps zmm16, dword ptr [rdx + 512]{1to16} + +// CHECK: vrsqrt14ps zmm16, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x58,0x4e,0x42,0x80] + vrsqrt14ps zmm16, dword ptr [rdx - 512]{1to16} + +// CHECK: vrsqrt14ps zmm16, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x7d,0x58,0x4e,0x82,0xfc,0xfd,0xff,0xff] + vrsqrt14ps zmm16, dword ptr [rdx - 516]{1to16} + +// CHECK: vrsqrt14sd xmm26, xmm6, xmm10 +// CHECK: encoding: [0x62,0x42,0xcd,0x08,0x4f,0xd2] + vrsqrt14sd xmm26, xmm6, xmm10 + +// CHECK: vrsqrt14sd xmm26 {k5}, xmm6, xmm10 +// CHECK: encoding: [0x62,0x42,0xcd,0x0d,0x4f,0xd2] + vrsqrt14sd xmm26 {k5}, xmm6, xmm10 + +// CHECK: vrsqrt14sd xmm26 {k5} {z}, xmm6, xmm10 +// CHECK: encoding: [0x62,0x42,0xcd,0x8d,0x4f,0xd2] + vrsqrt14sd xmm26 {k5} {z}, xmm6, xmm10 + +// CHECK: vrsqrt14sd xmm26, xmm6, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xcd,0x08,0x4f,0x11] + vrsqrt14sd xmm26, xmm6, qword ptr [rcx] + +// CHECK: vrsqrt14sd xmm26, xmm6, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xcd,0x08,0x4f,0x94,0xf0,0x23,0x01,0x00,0x00] + vrsqrt14sd xmm26, xmm6, qword ptr [rax + 8*r14 + 291] + +// CHECK: vrsqrt14sd xmm26, xmm6, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xcd,0x08,0x4f,0x52,0x7f] + vrsqrt14sd xmm26, xmm6, qword ptr [rdx + 1016] + +// CHECK: vrsqrt14sd xmm26, xmm6, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xcd,0x08,0x4f,0x92,0x00,0x04,0x00,0x00] + vrsqrt14sd xmm26, xmm6, qword ptr [rdx + 1024] + +// CHECK: vrsqrt14sd xmm26, xmm6, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xcd,0x08,0x4f,0x52,0x80] + vrsqrt14sd xmm26, xmm6, qword ptr [rdx - 1024] + +// CHECK: vrsqrt14sd xmm26, xmm6, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xcd,0x08,0x4f,0x92,0xf8,0xfb,0xff,0xff] + vrsqrt14sd xmm26, xmm6, qword ptr [rdx - 1032] + +// CHECK: vrsqrt14ss xmm14, xmm14, xmm9 +// CHECK: encoding: [0x62,0x52,0x0d,0x08,0x4f,0xf1] + vrsqrt14ss xmm14, xmm14, xmm9 + +// CHECK: vrsqrt14ss xmm14 {k1}, xmm14, xmm9 +// CHECK: encoding: [0x62,0x52,0x0d,0x09,0x4f,0xf1] + vrsqrt14ss xmm14 {k1}, xmm14, xmm9 + +// CHECK: vrsqrt14ss xmm14 {k1} {z}, xmm14, xmm9 +// CHECK: encoding: [0x62,0x52,0x0d,0x89,0x4f,0xf1] + vrsqrt14ss xmm14 {k1} {z}, xmm14, xmm9 + +// CHECK: vrsqrt14ss xmm14, xmm14, dword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x0d,0x08,0x4f,0x31] + vrsqrt14ss xmm14, xmm14, dword ptr [rcx] + +// CHECK: vrsqrt14ss xmm14, xmm14, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x0d,0x08,0x4f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vrsqrt14ss xmm14, xmm14, dword ptr [rax + 8*r14 + 291] + +// CHECK: vrsqrt14ss xmm14, xmm14, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x72,0x0d,0x08,0x4f,0x72,0x7f] + vrsqrt14ss xmm14, xmm14, dword ptr [rdx + 508] + +// CHECK: vrsqrt14ss xmm14, xmm14, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x72,0x0d,0x08,0x4f,0xb2,0x00,0x02,0x00,0x00] + vrsqrt14ss xmm14, xmm14, dword ptr [rdx + 512] + +// CHECK: vrsqrt14ss xmm14, xmm14, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x72,0x0d,0x08,0x4f,0x72,0x80] + vrsqrt14ss xmm14, xmm14, dword ptr [rdx - 512] + +// CHECK: vrsqrt14ss xmm14, xmm14, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x72,0x0d,0x08,0x4f,0xb2,0xfc,0xfd,0xff,0xff] + vrsqrt14ss xmm14, xmm14, dword ptr [rdx - 516] + +// CHECK: vshufpd zmm28, zmm8, zmm22, 171 +// CHECK: encoding: [0x62,0x21,0xbd,0x48,0xc6,0xe6,0xab] + vshufpd zmm28, zmm8, zmm22, 171 + +// CHECK: vshufpd zmm28 {k2}, zmm8, zmm22, 171 +// CHECK: encoding: [0x62,0x21,0xbd,0x4a,0xc6,0xe6,0xab] + vshufpd zmm28 {k2}, zmm8, zmm22, 171 + +// CHECK: vshufpd zmm28 {k2} {z}, zmm8, zmm22, 171 +// CHECK: encoding: [0x62,0x21,0xbd,0xca,0xc6,0xe6,0xab] + vshufpd zmm28 {k2} {z}, zmm8, zmm22, 171 + +// CHECK: vshufpd zmm28, zmm8, zmm22, 123 +// CHECK: encoding: [0x62,0x21,0xbd,0x48,0xc6,0xe6,0x7b] + vshufpd zmm28, zmm8, zmm22, 123 + +// CHECK: vshufpd zmm28, zmm8, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x48,0xc6,0x21,0x7b] + vshufpd zmm28, zmm8, zmmword ptr [rcx], 123 + +// CHECK: vshufpd zmm28, zmm8, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x21,0xbd,0x48,0xc6,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vshufpd zmm28, zmm8, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vshufpd zmm28, zmm8, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x58,0xc6,0x21,0x7b] + vshufpd zmm28, zmm8, qword ptr [rcx]{1to8}, 123 + +// CHECK: vshufpd zmm28, zmm8, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x48,0xc6,0x62,0x7f,0x7b] + vshufpd zmm28, zmm8, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshufpd zmm28, zmm8, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x48,0xc6,0xa2,0x00,0x20,0x00,0x00,0x7b] + vshufpd zmm28, zmm8, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshufpd zmm28, zmm8, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x48,0xc6,0x62,0x80,0x7b] + vshufpd zmm28, zmm8, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshufpd zmm28, zmm8, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x48,0xc6,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + vshufpd zmm28, zmm8, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshufpd zmm28, zmm8, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x58,0xc6,0x62,0x7f,0x7b] + vshufpd zmm28, zmm8, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vshufpd zmm28, zmm8, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x58,0xc6,0xa2,0x00,0x04,0x00,0x00,0x7b] + vshufpd zmm28, zmm8, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vshufpd zmm28, zmm8, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x58,0xc6,0x62,0x80,0x7b] + vshufpd zmm28, zmm8, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vshufpd zmm28, zmm8, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x61,0xbd,0x58,0xc6,0xa2,0xf8,0xfb,0xff,0xff,0x7b] + vshufpd zmm28, zmm8, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vshufps zmm5, zmm6, zmm9, 171 +// CHECK: encoding: [0x62,0xd1,0x4c,0x48,0xc6,0xe9,0xab] + vshufps zmm5, zmm6, zmm9, 171 + +// CHECK: vshufps zmm5 {k6}, zmm6, zmm9, 171 +// CHECK: encoding: [0x62,0xd1,0x4c,0x4e,0xc6,0xe9,0xab] + vshufps zmm5 {k6}, zmm6, zmm9, 171 + +// CHECK: vshufps zmm5 {k6} {z}, zmm6, zmm9, 171 +// CHECK: encoding: [0x62,0xd1,0x4c,0xce,0xc6,0xe9,0xab] + vshufps zmm5 {k6} {z}, zmm6, zmm9, 171 + +// CHECK: vshufps zmm5, zmm6, zmm9, 123 +// CHECK: encoding: [0x62,0xd1,0x4c,0x48,0xc6,0xe9,0x7b] + vshufps zmm5, zmm6, zmm9, 123 + +// CHECK: vshufps zmm5, zmm6, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0xc6,0x29,0x7b] + vshufps zmm5, zmm6, zmmword ptr [rcx], 123 + +// CHECK: vshufps zmm5, zmm6, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x4c,0x48,0xc6,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vshufps zmm5, zmm6, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vshufps zmm5, zmm6, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0xc6,0x29,0x7b] + vshufps zmm5, zmm6, dword ptr [rcx]{1to16}, 123 + +// CHECK: vshufps zmm5, zmm6, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0xc6,0x6a,0x7f,0x7b] + vshufps zmm5, zmm6, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshufps zmm5, zmm6, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0xc6,0xaa,0x00,0x20,0x00,0x00,0x7b] + vshufps zmm5, zmm6, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshufps zmm5, zmm6, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0xc6,0x6a,0x80,0x7b] + vshufps zmm5, zmm6, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshufps zmm5, zmm6, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0xc6,0xaa,0xc0,0xdf,0xff,0xff,0x7b] + vshufps zmm5, zmm6, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshufps zmm5, zmm6, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0xc6,0x6a,0x7f,0x7b] + vshufps zmm5, zmm6, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vshufps zmm5, zmm6, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0xc6,0xaa,0x00,0x02,0x00,0x00,0x7b] + vshufps zmm5, zmm6, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vshufps zmm5, zmm6, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0xc6,0x6a,0x80,0x7b] + vshufps zmm5, zmm6, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vshufps zmm5, zmm6, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0xc6,0xaa,0xfc,0xfd,0xff,0xff,0x7b] + vshufps zmm5, zmm6, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vsqrtpd zmm19, zmm19 +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x51,0xdb] + vsqrtpd zmm19, zmm19 + +// CHECK: vsqrtpd zmm19 {k5}, zmm19 +// CHECK: encoding: [0x62,0xa1,0xfd,0x4d,0x51,0xdb] + vsqrtpd zmm19 {k5}, zmm19 + +// CHECK: vsqrtpd zmm19 {k5} {z}, zmm19 +// CHECK: encoding: [0x62,0xa1,0xfd,0xcd,0x51,0xdb] + vsqrtpd zmm19 {k5} {z}, zmm19 + +// CHECK: vsqrtpd zmm19, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0xa1,0xfd,0x18,0x51,0xdb] + vsqrtpd zmm19, zmm19, {rn-sae} + +// CHECK: vsqrtpd zmm19, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0xa1,0xfd,0x58,0x51,0xdb] + vsqrtpd zmm19, zmm19, {ru-sae} + +// CHECK: vsqrtpd zmm19, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0xa1,0xfd,0x38,0x51,0xdb] + vsqrtpd zmm19, zmm19, {rd-sae} + +// CHECK: vsqrtpd zmm19, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0xa1,0xfd,0x78,0x51,0xdb] + vsqrtpd zmm19, zmm19, {rz-sae} + +// CHECK: vsqrtpd zmm19, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x19] + vsqrtpd zmm19, zmmword ptr [rcx] + +// CHECK: vsqrtpd zmm19, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x51,0x9c,0xf0,0x23,0x01,0x00,0x00] + vsqrtpd zmm19, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vsqrtpd zmm19, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x19] + vsqrtpd zmm19, qword ptr [rcx]{1to8} + +// CHECK: vsqrtpd zmm19, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x5a,0x7f] + vsqrtpd zmm19, zmmword ptr [rdx + 8128] + +// CHECK: vsqrtpd zmm19, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x9a,0x00,0x20,0x00,0x00] + vsqrtpd zmm19, zmmword ptr [rdx + 8192] + +// CHECK: vsqrtpd zmm19, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x5a,0x80] + vsqrtpd zmm19, zmmword ptr [rdx - 8192] + +// CHECK: vsqrtpd zmm19, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x9a,0xc0,0xdf,0xff,0xff] + vsqrtpd zmm19, zmmword ptr [rdx - 8256] + +// CHECK: vsqrtpd zmm19, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x5a,0x7f] + vsqrtpd zmm19, qword ptr [rdx + 1016]{1to8} + +// CHECK: vsqrtpd zmm19, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x9a,0x00,0x04,0x00,0x00] + vsqrtpd zmm19, qword ptr [rdx + 1024]{1to8} + +// CHECK: vsqrtpd zmm19, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x5a,0x80] + vsqrtpd zmm19, qword ptr [rdx - 1024]{1to8} + +// CHECK: vsqrtpd zmm19, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x9a,0xf8,0xfb,0xff,0xff] + vsqrtpd zmm19, qword ptr [rdx - 1032]{1to8} + +// CHECK: vsqrtps zmm28, zmm29 +// CHECK: encoding: [0x62,0x01,0x7c,0x48,0x51,0xe5] + vsqrtps zmm28, zmm29 + +// CHECK: vsqrtps zmm28 {k3}, zmm29 +// CHECK: encoding: [0x62,0x01,0x7c,0x4b,0x51,0xe5] + vsqrtps zmm28 {k3}, zmm29 + +// CHECK: vsqrtps zmm28 {k3} {z}, zmm29 +// CHECK: encoding: [0x62,0x01,0x7c,0xcb,0x51,0xe5] + vsqrtps zmm28 {k3} {z}, zmm29 + +// CHECK: vsqrtps zmm28, zmm29, {rn-sae} +// CHECK: encoding: [0x62,0x01,0x7c,0x18,0x51,0xe5] + vsqrtps zmm28, zmm29, {rn-sae} + +// CHECK: vsqrtps zmm28, zmm29, {ru-sae} +// CHECK: encoding: [0x62,0x01,0x7c,0x58,0x51,0xe5] + vsqrtps zmm28, zmm29, {ru-sae} + +// CHECK: vsqrtps zmm28, zmm29, {rd-sae} +// CHECK: encoding: [0x62,0x01,0x7c,0x38,0x51,0xe5] + vsqrtps zmm28, zmm29, {rd-sae} + +// CHECK: vsqrtps zmm28, zmm29, {rz-sae} +// CHECK: encoding: [0x62,0x01,0x7c,0x78,0x51,0xe5] + vsqrtps zmm28, zmm29, {rz-sae} + +// CHECK: vsqrtps zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0x21] + vsqrtps zmm28, zmmword ptr [rcx] + +// CHECK: vsqrtps zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0x7c,0x48,0x51,0xa4,0xf0,0x23,0x01,0x00,0x00] + vsqrtps zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vsqrtps zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0x21] + vsqrtps zmm28, dword ptr [rcx]{1to16} + +// CHECK: vsqrtps zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0x62,0x7f] + vsqrtps zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vsqrtps zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0xa2,0x00,0x20,0x00,0x00] + vsqrtps zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vsqrtps zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0x62,0x80] + vsqrtps zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vsqrtps zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0xa2,0xc0,0xdf,0xff,0xff] + vsqrtps zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vsqrtps zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0x62,0x7f] + vsqrtps zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vsqrtps zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0xa2,0x00,0x02,0x00,0x00] + vsqrtps zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vsqrtps zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0x62,0x80] + vsqrtps zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vsqrtps zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0xa2,0xfc,0xfd,0xff,0xff] + vsqrtps zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vsqrtsd xmm6, xmm2, xmm12 +// CHECK: encoding: [0xc4,0xc1,0x6b,0x51,0xf4] + vsqrtsd xmm6, xmm2, xmm12 + +// CHECK: vsqrtsd xmm6 {k7}, xmm2, xmm12 +// CHECK: encoding: [0x62,0xd1,0xef,0x0f,0x51,0xf4] + vsqrtsd xmm6 {k7}, xmm2, xmm12 + +// CHECK: vsqrtsd xmm6 {k7} {z}, xmm2, xmm12 +// CHECK: encoding: [0x62,0xd1,0xef,0x8f,0x51,0xf4] + vsqrtsd xmm6 {k7} {z}, xmm2, xmm12 + +// CHECK: vsqrtsd xmm6, xmm2, xmm12, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0xef,0x18,0x51,0xf4] + vsqrtsd xmm6, xmm2, xmm12, {rn-sae} + +// CHECK: vsqrtsd xmm6, xmm2, xmm12, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0xef,0x58,0x51,0xf4] + vsqrtsd xmm6, xmm2, xmm12, {ru-sae} + +// CHECK: vsqrtsd xmm6, xmm2, xmm12, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0xef,0x38,0x51,0xf4] + vsqrtsd xmm6, xmm2, xmm12, {rd-sae} + +// CHECK: vsqrtsd xmm6, xmm2, xmm12, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0xef,0x78,0x51,0xf4] + vsqrtsd xmm6, xmm2, xmm12, {rz-sae} + +// CHECK: vsqrtsd xmm6, xmm2, qword ptr [rcx] +// CHECK: encoding: [0xc5,0xeb,0x51,0x31] + vsqrtsd xmm6, xmm2, qword ptr [rcx] + +// CHECK: vsqrtsd xmm6, xmm2, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa1,0x6b,0x51,0xb4,0xf0,0x23,0x01,0x00,0x00] + vsqrtsd xmm6, xmm2, qword ptr [rax + 8*r14 + 291] + +// CHECK: vsqrtsd xmm6, xmm2, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc5,0xeb,0x51,0xb2,0xf8,0x03,0x00,0x00] + vsqrtsd xmm6, xmm2, qword ptr [rdx + 1016] + +// CHECK: vsqrtsd xmm6, xmm2, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc5,0xeb,0x51,0xb2,0x00,0x04,0x00,0x00] + vsqrtsd xmm6, xmm2, qword ptr [rdx + 1024] + +// CHECK: vsqrtsd xmm6, xmm2, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc5,0xeb,0x51,0xb2,0x00,0xfc,0xff,0xff] + vsqrtsd xmm6, xmm2, qword ptr [rdx - 1024] + +// CHECK: vsqrtsd xmm6, xmm2, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc5,0xeb,0x51,0xb2,0xf8,0xfb,0xff,0xff] + vsqrtsd xmm6, xmm2, qword ptr [rdx - 1032] + +// CHECK: vsqrtss xmm22, xmm19, xmm8 +// CHECK: encoding: [0x62,0xc1,0x66,0x00,0x51,0xf0] + vsqrtss xmm22, xmm19, xmm8 + +// CHECK: vsqrtss xmm22 {k1}, xmm19, xmm8 +// CHECK: encoding: [0x62,0xc1,0x66,0x01,0x51,0xf0] + vsqrtss xmm22 {k1}, xmm19, xmm8 + +// CHECK: vsqrtss xmm22 {k1} {z}, xmm19, xmm8 +// CHECK: encoding: [0x62,0xc1,0x66,0x81,0x51,0xf0] + vsqrtss xmm22 {k1} {z}, xmm19, xmm8 + +// CHECK: vsqrtss xmm22, xmm19, xmm8, {rn-sae} +// CHECK: encoding: [0x62,0xc1,0x66,0x10,0x51,0xf0] + vsqrtss xmm22, xmm19, xmm8, {rn-sae} + +// CHECK: vsqrtss xmm22, xmm19, xmm8, {ru-sae} +// CHECK: encoding: [0x62,0xc1,0x66,0x50,0x51,0xf0] + vsqrtss xmm22, xmm19, xmm8, {ru-sae} + +// CHECK: vsqrtss xmm22, xmm19, xmm8, {rd-sae} +// CHECK: encoding: [0x62,0xc1,0x66,0x30,0x51,0xf0] + vsqrtss xmm22, xmm19, xmm8, {rd-sae} + +// CHECK: vsqrtss xmm22, xmm19, xmm8, {rz-sae} +// CHECK: encoding: [0x62,0xc1,0x66,0x70,0x51,0xf0] + vsqrtss xmm22, xmm19, xmm8, {rz-sae} + +// CHECK: vsqrtss xmm22, xmm19, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x66,0x00,0x51,0x31] + vsqrtss xmm22, xmm19, dword ptr [rcx] + +// CHECK: vsqrtss xmm22, xmm19, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x66,0x00,0x51,0xb4,0xf0,0x23,0x01,0x00,0x00] + vsqrtss xmm22, xmm19, dword ptr [rax + 8*r14 + 291] + +// CHECK: vsqrtss xmm22, xmm19, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe1,0x66,0x00,0x51,0x72,0x7f] + vsqrtss xmm22, xmm19, dword ptr [rdx + 508] + +// CHECK: vsqrtss xmm22, xmm19, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe1,0x66,0x00,0x51,0xb2,0x00,0x02,0x00,0x00] + vsqrtss xmm22, xmm19, dword ptr [rdx + 512] + +// CHECK: vsqrtss xmm22, xmm19, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe1,0x66,0x00,0x51,0x72,0x80] + vsqrtss xmm22, xmm19, dword ptr [rdx - 512] + +// CHECK: vsqrtss xmm22, xmm19, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe1,0x66,0x00,0x51,0xb2,0xfc,0xfd,0xff,0xff] + vsqrtss xmm22, xmm19, dword ptr [rdx - 516] + +// CHECK: vsubpd zmm9, zmm12, zmm9 +// CHECK: encoding: [0x62,0x51,0x9d,0x48,0x5c,0xc9] + vsubpd zmm9, zmm12, zmm9 + +// CHECK: vsubpd zmm9 {k7}, zmm12, zmm9 +// CHECK: encoding: [0x62,0x51,0x9d,0x4f,0x5c,0xc9] + vsubpd zmm9 {k7}, zmm12, zmm9 + +// CHECK: vsubpd zmm9 {k7} {z}, zmm12, zmm9 +// CHECK: encoding: [0x62,0x51,0x9d,0xcf,0x5c,0xc9] + vsubpd zmm9 {k7} {z}, zmm12, zmm9 + +// CHECK: vsubpd zmm9, zmm12, zmm9, {rn-sae} +// CHECK: encoding: [0x62,0x51,0x9d,0x18,0x5c,0xc9] + vsubpd zmm9, zmm12, zmm9, {rn-sae} + +// CHECK: vsubpd zmm9, zmm12, zmm9, {ru-sae} +// CHECK: encoding: [0x62,0x51,0x9d,0x58,0x5c,0xc9] + vsubpd zmm9, zmm12, zmm9, {ru-sae} + +// CHECK: vsubpd zmm9, zmm12, zmm9, {rd-sae} +// CHECK: encoding: [0x62,0x51,0x9d,0x38,0x5c,0xc9] + vsubpd zmm9, zmm12, zmm9, {rd-sae} + +// CHECK: vsubpd zmm9, zmm12, zmm9, {rz-sae} +// CHECK: encoding: [0x62,0x51,0x9d,0x78,0x5c,0xc9] + vsubpd zmm9, zmm12, zmm9, {rz-sae} + +// CHECK: vsubpd zmm9, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5c,0x09] + vsubpd zmm9, zmm12, zmmword ptr [rcx] + +// CHECK: vsubpd zmm9, zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x9d,0x48,0x5c,0x8c,0xf0,0x23,0x01,0x00,0x00] + vsubpd zmm9, zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vsubpd zmm9, zmm12, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5c,0x09] + vsubpd zmm9, zmm12, qword ptr [rcx]{1to8} + +// CHECK: vsubpd zmm9, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5c,0x4a,0x7f] + vsubpd zmm9, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vsubpd zmm9, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5c,0x8a,0x00,0x20,0x00,0x00] + vsubpd zmm9, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vsubpd zmm9, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5c,0x4a,0x80] + vsubpd zmm9, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vsubpd zmm9, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5c,0x8a,0xc0,0xdf,0xff,0xff] + vsubpd zmm9, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vsubpd zmm9, zmm12, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5c,0x4a,0x7f] + vsubpd zmm9, zmm12, qword ptr [rdx + 1016]{1to8} + +// CHECK: vsubpd zmm9, zmm12, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5c,0x8a,0x00,0x04,0x00,0x00] + vsubpd zmm9, zmm12, qword ptr [rdx + 1024]{1to8} + +// CHECK: vsubpd zmm9, zmm12, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5c,0x4a,0x80] + vsubpd zmm9, zmm12, qword ptr [rdx - 1024]{1to8} + +// CHECK: vsubpd zmm9, zmm12, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5c,0x8a,0xf8,0xfb,0xff,0xff] + vsubpd zmm9, zmm12, qword ptr [rdx - 1032]{1to8} + +// CHECK: vsubps zmm14, zmm27, zmm21 +// CHECK: encoding: [0x62,0x31,0x24,0x40,0x5c,0xf5] + vsubps zmm14, zmm27, zmm21 + +// CHECK: vsubps zmm14 {k5}, zmm27, zmm21 +// CHECK: encoding: [0x62,0x31,0x24,0x45,0x5c,0xf5] + vsubps zmm14 {k5}, zmm27, zmm21 + +// CHECK: vsubps zmm14 {k5} {z}, zmm27, zmm21 +// CHECK: encoding: [0x62,0x31,0x24,0xc5,0x5c,0xf5] + vsubps zmm14 {k5} {z}, zmm27, zmm21 + +// CHECK: vsubps zmm14, zmm27, zmm21, {rn-sae} +// CHECK: encoding: [0x62,0x31,0x24,0x10,0x5c,0xf5] + vsubps zmm14, zmm27, zmm21, {rn-sae} + +// CHECK: vsubps zmm14, zmm27, zmm21, {ru-sae} +// CHECK: encoding: [0x62,0x31,0x24,0x50,0x5c,0xf5] + vsubps zmm14, zmm27, zmm21, {ru-sae} + +// CHECK: vsubps zmm14, zmm27, zmm21, {rd-sae} +// CHECK: encoding: [0x62,0x31,0x24,0x30,0x5c,0xf5] + vsubps zmm14, zmm27, zmm21, {rd-sae} + +// CHECK: vsubps zmm14, zmm27, zmm21, {rz-sae} +// CHECK: encoding: [0x62,0x31,0x24,0x70,0x5c,0xf5] + vsubps zmm14, zmm27, zmm21, {rz-sae} + +// CHECK: vsubps zmm14, zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x24,0x40,0x5c,0x31] + vsubps zmm14, zmm27, zmmword ptr [rcx] + +// CHECK: vsubps zmm14, zmm27, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x24,0x40,0x5c,0xb4,0xf0,0x23,0x01,0x00,0x00] + vsubps zmm14, zmm27, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vsubps zmm14, zmm27, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x71,0x24,0x50,0x5c,0x31] + vsubps zmm14, zmm27, dword ptr [rcx]{1to16} + +// CHECK: vsubps zmm14, zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x24,0x40,0x5c,0x72,0x7f] + vsubps zmm14, zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vsubps zmm14, zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x24,0x40,0x5c,0xb2,0x00,0x20,0x00,0x00] + vsubps zmm14, zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vsubps zmm14, zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x24,0x40,0x5c,0x72,0x80] + vsubps zmm14, zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vsubps zmm14, zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x24,0x40,0x5c,0xb2,0xc0,0xdf,0xff,0xff] + vsubps zmm14, zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vsubps zmm14, zmm27, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x71,0x24,0x50,0x5c,0x72,0x7f] + vsubps zmm14, zmm27, dword ptr [rdx + 508]{1to16} + +// CHECK: vsubps zmm14, zmm27, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x24,0x50,0x5c,0xb2,0x00,0x02,0x00,0x00] + vsubps zmm14, zmm27, dword ptr [rdx + 512]{1to16} + +// CHECK: vsubps zmm14, zmm27, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x24,0x50,0x5c,0x72,0x80] + vsubps zmm14, zmm27, dword ptr [rdx - 512]{1to16} + +// CHECK: vsubps zmm14, zmm27, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x71,0x24,0x50,0x5c,0xb2,0xfc,0xfd,0xff,0xff] + vsubps zmm14, zmm27, dword ptr [rdx - 516]{1to16} + +// CHECK: vsubsd xmm20, xmm27, xmm15 +// CHECK: encoding: [0x62,0xc1,0xa7,0x00,0x5c,0xe7] + vsubsd xmm20, xmm27, xmm15 + +// CHECK: vsubsd xmm20 {k5}, xmm27, xmm15 +// CHECK: encoding: [0x62,0xc1,0xa7,0x05,0x5c,0xe7] + vsubsd xmm20 {k5}, xmm27, xmm15 + +// CHECK: vsubsd xmm20 {k5} {z}, xmm27, xmm15 +// CHECK: encoding: [0x62,0xc1,0xa7,0x85,0x5c,0xe7] + vsubsd xmm20 {k5} {z}, xmm27, xmm15 + +// CHECK: vsubsd xmm20, xmm27, xmm15, {rn-sae} +// CHECK: encoding: [0x62,0xc1,0xa7,0x10,0x5c,0xe7] + vsubsd xmm20, xmm27, xmm15, {rn-sae} + +// CHECK: vsubsd xmm20, xmm27, xmm15, {ru-sae} +// CHECK: encoding: [0x62,0xc1,0xa7,0x50,0x5c,0xe7] + vsubsd xmm20, xmm27, xmm15, {ru-sae} + +// CHECK: vsubsd xmm20, xmm27, xmm15, {rd-sae} +// CHECK: encoding: [0x62,0xc1,0xa7,0x30,0x5c,0xe7] + vsubsd xmm20, xmm27, xmm15, {rd-sae} + +// CHECK: vsubsd xmm20, xmm27, xmm15, {rz-sae} +// CHECK: encoding: [0x62,0xc1,0xa7,0x70,0x5c,0xe7] + vsubsd xmm20, xmm27, xmm15, {rz-sae} + +// CHECK: vsubsd xmm20, xmm27, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xa7,0x00,0x5c,0x21] + vsubsd xmm20, xmm27, qword ptr [rcx] + +// CHECK: vsubsd xmm20, xmm27, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xa7,0x00,0x5c,0xa4,0xf0,0x23,0x01,0x00,0x00] + vsubsd xmm20, xmm27, qword ptr [rax + 8*r14 + 291] + +// CHECK: vsubsd xmm20, xmm27, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xa7,0x00,0x5c,0x62,0x7f] + vsubsd xmm20, xmm27, qword ptr [rdx + 1016] + +// CHECK: vsubsd xmm20, xmm27, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xa7,0x00,0x5c,0xa2,0x00,0x04,0x00,0x00] + vsubsd xmm20, xmm27, qword ptr [rdx + 1024] + +// CHECK: vsubsd xmm20, xmm27, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xa7,0x00,0x5c,0x62,0x80] + vsubsd xmm20, xmm27, qword ptr [rdx - 1024] + +// CHECK: vsubsd xmm20, xmm27, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xa7,0x00,0x5c,0xa2,0xf8,0xfb,0xff,0xff] + vsubsd xmm20, xmm27, qword ptr [rdx - 1032] + +// CHECK: vsubss xmm5, xmm25, xmm9 +// CHECK: encoding: [0x62,0xd1,0x36,0x00,0x5c,0xe9] + vsubss xmm5, xmm25, xmm9 + +// CHECK: vsubss xmm5 {k3}, xmm25, xmm9 +// CHECK: encoding: [0x62,0xd1,0x36,0x03,0x5c,0xe9] + vsubss xmm5 {k3}, xmm25, xmm9 + +// CHECK: vsubss xmm5 {k3} {z}, xmm25, xmm9 +// CHECK: encoding: [0x62,0xd1,0x36,0x83,0x5c,0xe9] + vsubss xmm5 {k3} {z}, xmm25, xmm9 + +// CHECK: vsubss xmm5, xmm25, xmm9, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0x36,0x10,0x5c,0xe9] + vsubss xmm5, xmm25, xmm9, {rn-sae} + +// CHECK: vsubss xmm5, xmm25, xmm9, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0x36,0x50,0x5c,0xe9] + vsubss xmm5, xmm25, xmm9, {ru-sae} + +// CHECK: vsubss xmm5, xmm25, xmm9, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0x36,0x30,0x5c,0xe9] + vsubss xmm5, xmm25, xmm9, {rd-sae} + +// CHECK: vsubss xmm5, xmm25, xmm9, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0x36,0x70,0x5c,0xe9] + vsubss xmm5, xmm25, xmm9, {rz-sae} + +// CHECK: vsubss xmm5, xmm25, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x5c,0x29] + vsubss xmm5, xmm25, dword ptr [rcx] + +// CHECK: vsubss xmm5, xmm25, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x36,0x00,0x5c,0xac,0xf0,0x23,0x01,0x00,0x00] + vsubss xmm5, xmm25, dword ptr [rax + 8*r14 + 291] + +// CHECK: vsubss xmm5, xmm25, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x5c,0x6a,0x7f] + vsubss xmm5, xmm25, dword ptr [rdx + 508] + +// CHECK: vsubss xmm5, xmm25, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x5c,0xaa,0x00,0x02,0x00,0x00] + vsubss xmm5, xmm25, dword ptr [rdx + 512] + +// CHECK: vsubss xmm5, xmm25, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x5c,0x6a,0x80] + vsubss xmm5, xmm25, dword ptr [rdx - 512] + +// CHECK: vsubss xmm5, xmm25, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x36,0x00,0x5c,0xaa,0xfc,0xfd,0xff,0xff] + vsubss xmm5, xmm25, dword ptr [rdx - 516] + +// CHECK: vucomisd xmm11, xmm10 +// CHECK: encoding: [0xc4,0x41,0x79,0x2e,0xda] + vucomisd xmm11, xmm10 + +// CHECK: vucomisd xmm11, xmm10, {sae} +// CHECK: encoding: [0x62,0x51,0xfd,0x18,0x2e,0xda] + vucomisd xmm11, xmm10, {sae} + +// CHECK: vucomisd xmm11, qword ptr [rcx] +// CHECK: encoding: [0xc5,0x79,0x2e,0x19] + vucomisd xmm11, qword ptr [rcx] + +// CHECK: vucomisd xmm11, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0x21,0x79,0x2e,0x9c,0xf0,0x23,0x01,0x00,0x00] + vucomisd xmm11, qword ptr [rax + 8*r14 + 291] + +// CHECK: vucomisd xmm11, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc5,0x79,0x2e,0x9a,0xf8,0x03,0x00,0x00] + vucomisd xmm11, qword ptr [rdx + 1016] + +// CHECK: vucomisd xmm11, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc5,0x79,0x2e,0x9a,0x00,0x04,0x00,0x00] + vucomisd xmm11, qword ptr [rdx + 1024] + +// CHECK: vucomisd xmm11, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc5,0x79,0x2e,0x9a,0x00,0xfc,0xff,0xff] + vucomisd xmm11, qword ptr [rdx - 1024] + +// CHECK: vucomisd xmm11, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc5,0x79,0x2e,0x9a,0xf8,0xfb,0xff,0xff] + vucomisd xmm11, qword ptr [rdx - 1032] + +// CHECK: vucomiss xmm22, xmm11 +// CHECK: encoding: [0x62,0xc1,0x7c,0x08,0x2e,0xf3] + vucomiss xmm22, xmm11 + +// CHECK: vucomiss xmm22, xmm11, {sae} +// CHECK: encoding: [0x62,0xc1,0x7c,0x18,0x2e,0xf3] + vucomiss xmm22, xmm11, {sae} + +// CHECK: vucomiss xmm22, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0x31] + vucomiss xmm22, dword ptr [rcx] + +// CHECK: vucomiss xmm22, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x7c,0x08,0x2e,0xb4,0xf0,0x23,0x01,0x00,0x00] + vucomiss xmm22, dword ptr [rax + 8*r14 + 291] + +// CHECK: vucomiss xmm22, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0x72,0x7f] + vucomiss xmm22, dword ptr [rdx + 508] + +// CHECK: vucomiss xmm22, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0xb2,0x00,0x02,0x00,0x00] + vucomiss xmm22, dword ptr [rdx + 512] + +// CHECK: vucomiss xmm22, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0x72,0x80] + vucomiss xmm22, dword ptr [rdx - 512] + +// CHECK: vucomiss xmm22, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x2e,0xb2,0xfc,0xfd,0xff,0xff] + vucomiss xmm22, dword ptr [rdx - 516] + +// CHECK: vunpckhpd zmm25, zmm19, zmm26 +// CHECK: encoding: [0x62,0x01,0xe5,0x40,0x15,0xca] + vunpckhpd zmm25, zmm19, zmm26 + +// CHECK: vunpckhpd zmm25 {k5}, zmm19, zmm26 +// CHECK: encoding: [0x62,0x01,0xe5,0x45,0x15,0xca] + vunpckhpd zmm25 {k5}, zmm19, zmm26 + +// CHECK: vunpckhpd zmm25 {k5} {z}, zmm19, zmm26 +// CHECK: encoding: [0x62,0x01,0xe5,0xc5,0x15,0xca] + vunpckhpd zmm25 {k5} {z}, zmm19, zmm26 + +// CHECK: vunpckhpd zmm25, zmm19, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xe5,0x40,0x15,0x09] + vunpckhpd zmm25, zmm19, zmmword ptr [rcx] + +// CHECK: vunpckhpd zmm25, zmm19, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x21,0xe5,0x40,0x15,0x8c,0xf0,0x23,0x01,0x00,0x00] + vunpckhpd zmm25, zmm19, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vunpckhpd zmm25, zmm19, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0xe5,0x50,0x15,0x09] + vunpckhpd zmm25, zmm19, qword ptr [rcx]{1to8} + +// CHECK: vunpckhpd zmm25, zmm19, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xe5,0x40,0x15,0x4a,0x7f] + vunpckhpd zmm25, zmm19, zmmword ptr [rdx + 8128] + +// CHECK: vunpckhpd zmm25, zmm19, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xe5,0x40,0x15,0x8a,0x00,0x20,0x00,0x00] + vunpckhpd zmm25, zmm19, zmmword ptr [rdx + 8192] + +// CHECK: vunpckhpd zmm25, zmm19, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xe5,0x40,0x15,0x4a,0x80] + vunpckhpd zmm25, zmm19, zmmword ptr [rdx - 8192] + +// CHECK: vunpckhpd zmm25, zmm19, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xe5,0x40,0x15,0x8a,0xc0,0xdf,0xff,0xff] + vunpckhpd zmm25, zmm19, zmmword ptr [rdx - 8256] + +// CHECK: vunpckhpd zmm25, zmm19, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0xe5,0x50,0x15,0x4a,0x7f] + vunpckhpd zmm25, zmm19, qword ptr [rdx + 1016]{1to8} + +// CHECK: vunpckhpd zmm25, zmm19, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xe5,0x50,0x15,0x8a,0x00,0x04,0x00,0x00] + vunpckhpd zmm25, zmm19, qword ptr [rdx + 1024]{1to8} + +// CHECK: vunpckhpd zmm25, zmm19, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xe5,0x50,0x15,0x4a,0x80] + vunpckhpd zmm25, zmm19, qword ptr [rdx - 1024]{1to8} + +// CHECK: vunpckhpd zmm25, zmm19, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0xe5,0x50,0x15,0x8a,0xf8,0xfb,0xff,0xff] + vunpckhpd zmm25, zmm19, qword ptr [rdx - 1032]{1to8} + +// CHECK: vunpckhps zmm5, zmm14, zmm16 +// CHECK: encoding: [0x62,0xb1,0x0c,0x48,0x15,0xe8] + vunpckhps zmm5, zmm14, zmm16 + +// CHECK: vunpckhps zmm5 {k6}, zmm14, zmm16 +// CHECK: encoding: [0x62,0xb1,0x0c,0x4e,0x15,0xe8] + vunpckhps zmm5 {k6}, zmm14, zmm16 + +// CHECK: vunpckhps zmm5 {k6} {z}, zmm14, zmm16 +// CHECK: encoding: [0x62,0xb1,0x0c,0xce,0x15,0xe8] + vunpckhps zmm5 {k6} {z}, zmm14, zmm16 + +// CHECK: vunpckhps zmm5, zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x15,0x29] + vunpckhps zmm5, zmm14, zmmword ptr [rcx] + +// CHECK: vunpckhps zmm5, zmm14, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x0c,0x48,0x15,0xac,0xf0,0x23,0x01,0x00,0x00] + vunpckhps zmm5, zmm14, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vunpckhps zmm5, zmm14, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x15,0x29] + vunpckhps zmm5, zmm14, dword ptr [rcx]{1to16} + +// CHECK: vunpckhps zmm5, zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x15,0x6a,0x7f] + vunpckhps zmm5, zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vunpckhps zmm5, zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x15,0xaa,0x00,0x20,0x00,0x00] + vunpckhps zmm5, zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vunpckhps zmm5, zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x15,0x6a,0x80] + vunpckhps zmm5, zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vunpckhps zmm5, zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x15,0xaa,0xc0,0xdf,0xff,0xff] + vunpckhps zmm5, zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vunpckhps zmm5, zmm14, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x15,0x6a,0x7f] + vunpckhps zmm5, zmm14, dword ptr [rdx + 508]{1to16} + +// CHECK: vunpckhps zmm5, zmm14, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x15,0xaa,0x00,0x02,0x00,0x00] + vunpckhps zmm5, zmm14, dword ptr [rdx + 512]{1to16} + +// CHECK: vunpckhps zmm5, zmm14, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x15,0x6a,0x80] + vunpckhps zmm5, zmm14, dword ptr [rdx - 512]{1to16} + +// CHECK: vunpckhps zmm5, zmm14, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x15,0xaa,0xfc,0xfd,0xff,0xff] + vunpckhps zmm5, zmm14, dword ptr [rdx - 516]{1to16} + +// CHECK: vunpcklpd zmm18, zmm29, zmm21 +// CHECK: encoding: [0x62,0xa1,0x95,0x40,0x14,0xd5] + vunpcklpd zmm18, zmm29, zmm21 + +// CHECK: vunpcklpd zmm18 {k6}, zmm29, zmm21 +// CHECK: encoding: [0x62,0xa1,0x95,0x46,0x14,0xd5] + vunpcklpd zmm18 {k6}, zmm29, zmm21 + +// CHECK: vunpcklpd zmm18 {k6} {z}, zmm29, zmm21 +// CHECK: encoding: [0x62,0xa1,0x95,0xc6,0x14,0xd5] + vunpcklpd zmm18 {k6} {z}, zmm29, zmm21 + +// CHECK: vunpcklpd zmm18, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x14,0x11] + vunpcklpd zmm18, zmm29, zmmword ptr [rcx] + +// CHECK: vunpcklpd zmm18, zmm29, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x95,0x40,0x14,0x94,0xf0,0x23,0x01,0x00,0x00] + vunpcklpd zmm18, zmm29, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vunpcklpd zmm18, zmm29, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0x95,0x50,0x14,0x11] + vunpcklpd zmm18, zmm29, qword ptr [rcx]{1to8} + +// CHECK: vunpcklpd zmm18, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x14,0x52,0x7f] + vunpcklpd zmm18, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vunpcklpd zmm18, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x14,0x92,0x00,0x20,0x00,0x00] + vunpcklpd zmm18, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vunpcklpd zmm18, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x14,0x52,0x80] + vunpcklpd zmm18, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vunpcklpd zmm18, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x14,0x92,0xc0,0xdf,0xff,0xff] + vunpcklpd zmm18, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vunpcklpd zmm18, zmm29, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0x95,0x50,0x14,0x52,0x7f] + vunpcklpd zmm18, zmm29, qword ptr [rdx + 1016]{1to8} + +// CHECK: vunpcklpd zmm18, zmm29, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0x95,0x50,0x14,0x92,0x00,0x04,0x00,0x00] + vunpcklpd zmm18, zmm29, qword ptr [rdx + 1024]{1to8} + +// CHECK: vunpcklpd zmm18, zmm29, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0x95,0x50,0x14,0x52,0x80] + vunpcklpd zmm18, zmm29, qword ptr [rdx - 1024]{1to8} + +// CHECK: vunpcklpd zmm18, zmm29, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0x95,0x50,0x14,0x92,0xf8,0xfb,0xff,0xff] + vunpcklpd zmm18, zmm29, qword ptr [rdx - 1032]{1to8} + +// CHECK: vunpcklps zmm1, zmm3, zmm2 +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x14,0xca] + vunpcklps zmm1, zmm3, zmm2 + +// CHECK: vunpcklps zmm1 {k3}, zmm3, zmm2 +// CHECK: encoding: [0x62,0xf1,0x64,0x4b,0x14,0xca] + vunpcklps zmm1 {k3}, zmm3, zmm2 + +// CHECK: vunpcklps zmm1 {k3} {z}, zmm3, zmm2 +// CHECK: encoding: [0x62,0xf1,0x64,0xcb,0x14,0xca] + vunpcklps zmm1 {k3} {z}, zmm3, zmm2 + +// CHECK: vunpcklps zmm1, zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x14,0x09] + vunpcklps zmm1, zmm3, zmmword ptr [rcx] + +// CHECK: vunpcklps zmm1, zmm3, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x64,0x48,0x14,0x8c,0xf0,0x23,0x01,0x00,0x00] + vunpcklps zmm1, zmm3, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vunpcklps zmm1, zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x14,0x09] + vunpcklps zmm1, zmm3, dword ptr [rcx]{1to16} + +// CHECK: vunpcklps zmm1, zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x14,0x4a,0x7f] + vunpcklps zmm1, zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vunpcklps zmm1, zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x14,0x8a,0x00,0x20,0x00,0x00] + vunpcklps zmm1, zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vunpcklps zmm1, zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x14,0x4a,0x80] + vunpcklps zmm1, zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vunpcklps zmm1, zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0x14,0x8a,0xc0,0xdf,0xff,0xff] + vunpcklps zmm1, zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vunpcklps zmm1, zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x14,0x4a,0x7f] + vunpcklps zmm1, zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vunpcklps zmm1, zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x14,0x8a,0x00,0x02,0x00,0x00] + vunpcklps zmm1, zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vunpcklps zmm1, zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x14,0x4a,0x80] + vunpcklps zmm1, zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vunpcklps zmm1, zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0x14,0x8a,0xfc,0xfd,0xff,0xff] + vunpcklps zmm1, zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vpternlogd zmm12, zmm14, zmm20, 171 +// CHECK: encoding: [0x62,0x33,0x0d,0x48,0x25,0xe4,0xab] + vpternlogd zmm12, zmm14, zmm20, 171 + +// CHECK: vpternlogd zmm12 {k7}, zmm14, zmm20, 171 +// CHECK: encoding: [0x62,0x33,0x0d,0x4f,0x25,0xe4,0xab] + vpternlogd zmm12 {k7}, zmm14, zmm20, 171 + +// CHECK: vpternlogd zmm12 {k7} {z}, zmm14, zmm20, 171 +// CHECK: encoding: [0x62,0x33,0x0d,0xcf,0x25,0xe4,0xab] + vpternlogd zmm12 {k7} {z}, zmm14, zmm20, 171 + +// CHECK: vpternlogd zmm12, zmm14, zmm20, 123 +// CHECK: encoding: [0x62,0x33,0x0d,0x48,0x25,0xe4,0x7b] + vpternlogd zmm12, zmm14, zmm20, 123 + +// CHECK: vpternlogd zmm12, zmm14, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x48,0x25,0x21,0x7b] + vpternlogd zmm12, zmm14, zmmword ptr [rcx], 123 + +// CHECK: vpternlogd zmm12, zmm14, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0x0d,0x48,0x25,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpternlogd zmm12, zmm14, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpternlogd zmm12, zmm14, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x58,0x25,0x21,0x7b] + vpternlogd zmm12, zmm14, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpternlogd zmm12, zmm14, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x48,0x25,0x62,0x7f,0x7b] + vpternlogd zmm12, zmm14, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpternlogd zmm12, zmm14, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x48,0x25,0xa2,0x00,0x20,0x00,0x00,0x7b] + vpternlogd zmm12, zmm14, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpternlogd zmm12, zmm14, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x48,0x25,0x62,0x80,0x7b] + vpternlogd zmm12, zmm14, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpternlogd zmm12, zmm14, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x48,0x25,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + vpternlogd zmm12, zmm14, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpternlogd zmm12, zmm14, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x58,0x25,0x62,0x7f,0x7b] + vpternlogd zmm12, zmm14, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpternlogd zmm12, zmm14, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x58,0x25,0xa2,0x00,0x02,0x00,0x00,0x7b] + vpternlogd zmm12, zmm14, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpternlogd zmm12, zmm14, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x58,0x25,0x62,0x80,0x7b] + vpternlogd zmm12, zmm14, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpternlogd zmm12, zmm14, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x0d,0x58,0x25,0xa2,0xfc,0xfd,0xff,0xff,0x7b] + vpternlogd zmm12, zmm14, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpternlogq zmm15, zmm2, zmm21, 171 +// CHECK: encoding: [0x62,0x33,0xed,0x48,0x25,0xfd,0xab] + vpternlogq zmm15, zmm2, zmm21, 171 + +// CHECK: vpternlogq zmm15 {k3}, zmm2, zmm21, 171 +// CHECK: encoding: [0x62,0x33,0xed,0x4b,0x25,0xfd,0xab] + vpternlogq zmm15 {k3}, zmm2, zmm21, 171 + +// CHECK: vpternlogq zmm15 {k3} {z}, zmm2, zmm21, 171 +// CHECK: encoding: [0x62,0x33,0xed,0xcb,0x25,0xfd,0xab] + vpternlogq zmm15 {k3} {z}, zmm2, zmm21, 171 + +// CHECK: vpternlogq zmm15, zmm2, zmm21, 123 +// CHECK: encoding: [0x62,0x33,0xed,0x48,0x25,0xfd,0x7b] + vpternlogq zmm15, zmm2, zmm21, 123 + +// CHECK: vpternlogq zmm15, zmm2, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0xed,0x48,0x25,0x39,0x7b] + vpternlogq zmm15, zmm2, zmmword ptr [rcx], 123 + +// CHECK: vpternlogq zmm15, zmm2, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0xed,0x48,0x25,0xbc,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpternlogq zmm15, zmm2, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpternlogq zmm15, zmm2, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xed,0x58,0x25,0x39,0x7b] + vpternlogq zmm15, zmm2, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpternlogq zmm15, zmm2, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0xed,0x48,0x25,0x7a,0x7f,0x7b] + vpternlogq zmm15, zmm2, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpternlogq zmm15, zmm2, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0xed,0x48,0x25,0xba,0x00,0x20,0x00,0x00,0x7b] + vpternlogq zmm15, zmm2, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpternlogq zmm15, zmm2, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0xed,0x48,0x25,0x7a,0x80,0x7b] + vpternlogq zmm15, zmm2, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpternlogq zmm15, zmm2, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0xed,0x48,0x25,0xba,0xc0,0xdf,0xff,0xff,0x7b] + vpternlogq zmm15, zmm2, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpternlogq zmm15, zmm2, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xed,0x58,0x25,0x7a,0x7f,0x7b] + vpternlogq zmm15, zmm2, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpternlogq zmm15, zmm2, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xed,0x58,0x25,0xba,0x00,0x04,0x00,0x00,0x7b] + vpternlogq zmm15, zmm2, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpternlogq zmm15, zmm2, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xed,0x58,0x25,0x7a,0x80,0x7b] + vpternlogq zmm15, zmm2, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpternlogq zmm15, zmm2, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xed,0x58,0x25,0xba,0xf8,0xfb,0xff,0xff,0x7b] + vpternlogq zmm15, zmm2, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpmovqb xmm3, zmm2 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x32,0xd3] + vpmovqb xmm3, zmm2 + +// CHECK: vpmovqb xmm3 {k1}, zmm2 +// CHECK: encoding: [0x62,0xf2,0x7e,0x49,0x32,0xd3] + vpmovqb xmm3 {k1}, zmm2 + +// CHECK: vpmovqb xmm3 {k1} {z}, zmm2 +// CHECK: encoding: [0x62,0xf2,0x7e,0xc9,0x32,0xd3] + vpmovqb xmm3 {k1} {z}, zmm2 + +// CHECK: vpmovsqb xmm30, zmm29 +// CHECK: encoding: [0x62,0x02,0x7e,0x48,0x22,0xee] + vpmovsqb xmm30, zmm29 + +// CHECK: vpmovsqb xmm30 {k5}, zmm29 +// CHECK: encoding: [0x62,0x02,0x7e,0x4d,0x22,0xee] + vpmovsqb xmm30 {k5}, zmm29 + +// CHECK: vpmovsqb xmm30 {k5} {z}, zmm29 +// CHECK: encoding: [0x62,0x02,0x7e,0xcd,0x22,0xee] + vpmovsqb xmm30 {k5} {z}, zmm29 + +// CHECK: vpmovusqb xmm24, zmm28 +// CHECK: encoding: [0x62,0x02,0x7e,0x48,0x12,0xe0] + vpmovusqb xmm24, zmm28 + +// CHECK: vpmovusqb xmm24 {k7}, zmm28 +// CHECK: encoding: [0x62,0x02,0x7e,0x4f,0x12,0xe0] + vpmovusqb xmm24 {k7}, zmm28 + +// CHECK: vpmovusqb xmm24 {k7} {z}, zmm28 +// CHECK: encoding: [0x62,0x02,0x7e,0xcf,0x12,0xe0] + vpmovusqb xmm24 {k7} {z}, zmm28 + +// CHECK: vpmovqw xmm6, zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x34,0xd6] + vpmovqw xmm6, zmm18 + +// CHECK: vpmovqw xmm6 {k1}, zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x49,0x34,0xd6] + vpmovqw xmm6 {k1}, zmm18 + +// CHECK: vpmovqw xmm6 {k1} {z}, zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0xc9,0x34,0xd6] + vpmovqw xmm6 {k1} {z}, zmm18 + +// CHECK: vpmovsqw xmm27, zmm19 +// CHECK: encoding: [0x62,0x82,0x7e,0x48,0x24,0xdb] + vpmovsqw xmm27, zmm19 + +// CHECK: vpmovsqw xmm27 {k6}, zmm19 +// CHECK: encoding: [0x62,0x82,0x7e,0x4e,0x24,0xdb] + vpmovsqw xmm27 {k6}, zmm19 + +// CHECK: vpmovsqw xmm27 {k6} {z}, zmm19 +// CHECK: encoding: [0x62,0x82,0x7e,0xce,0x24,0xdb] + vpmovsqw xmm27 {k6} {z}, zmm19 + +// CHECK: vpmovusqw xmm28, zmm10 +// CHECK: encoding: [0x62,0x12,0x7e,0x48,0x14,0xd4] + vpmovusqw xmm28, zmm10 + +// CHECK: vpmovusqw xmm28 {k7}, zmm10 +// CHECK: encoding: [0x62,0x12,0x7e,0x4f,0x14,0xd4] + vpmovusqw xmm28 {k7}, zmm10 + +// CHECK: vpmovusqw xmm28 {k7} {z}, zmm10 +// CHECK: encoding: [0x62,0x12,0x7e,0xcf,0x14,0xd4] + vpmovusqw xmm28 {k7} {z}, zmm10 + +// CHECK: vpmovqd ymm6, zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x35,0xce] + vpmovqd ymm6, zmm25 + +// CHECK: vpmovqd ymm6 {k5}, zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0x4d,0x35,0xce] + vpmovqd ymm6 {k5}, zmm25 + +// CHECK: vpmovqd ymm6 {k5} {z}, zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0xcd,0x35,0xce] + vpmovqd ymm6 {k5} {z}, zmm25 + +// CHECK: vpmovsqd ymm15, zmm2 +// CHECK: encoding: [0x62,0xd2,0x7e,0x48,0x25,0xd7] + vpmovsqd ymm15, zmm2 + +// CHECK: vpmovsqd ymm15 {k2}, zmm2 +// CHECK: encoding: [0x62,0xd2,0x7e,0x4a,0x25,0xd7] + vpmovsqd ymm15 {k2}, zmm2 + +// CHECK: vpmovsqd ymm15 {k2} {z}, zmm2 +// CHECK: encoding: [0x62,0xd2,0x7e,0xca,0x25,0xd7] + vpmovsqd ymm15 {k2} {z}, zmm2 + +// CHECK: vpmovusqd ymm8, zmm4 +// CHECK: encoding: [0x62,0xd2,0x7e,0x48,0x15,0xe0] + vpmovusqd ymm8, zmm4 + +// CHECK: vpmovusqd ymm8 {k4}, zmm4 +// CHECK: encoding: [0x62,0xd2,0x7e,0x4c,0x15,0xe0] + vpmovusqd ymm8 {k4}, zmm4 + +// CHECK: vpmovusqd ymm8 {k4} {z}, zmm4 +// CHECK: encoding: [0x62,0xd2,0x7e,0xcc,0x15,0xe0] + vpmovusqd ymm8 {k4} {z}, zmm4 + +// CHECK: vpmovdb xmm2, zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x31,0xea] + vpmovdb xmm2, zmm5 + +// CHECK: vpmovdb xmm2 {k5}, zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4d,0x31,0xea] + vpmovdb xmm2 {k5}, zmm5 + +// CHECK: vpmovdb xmm2 {k5} {z}, zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0xcd,0x31,0xea] + vpmovdb xmm2 {k5} {z}, zmm5 + +// CHECK: vpmovsdb xmm21, zmm2 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x21,0xd5] + vpmovsdb xmm21, zmm2 + +// CHECK: vpmovsdb xmm21 {k4}, zmm2 +// CHECK: encoding: [0x62,0xb2,0x7e,0x4c,0x21,0xd5] + vpmovsdb xmm21 {k4}, zmm2 + +// CHECK: vpmovsdb xmm21 {k4} {z}, zmm2 +// CHECK: encoding: [0x62,0xb2,0x7e,0xcc,0x21,0xd5] + vpmovsdb xmm21 {k4} {z}, zmm2 + +// CHECK: vpmovusdb xmm20, zmm2 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x11,0xd4] + vpmovusdb xmm20, zmm2 + +// CHECK: vpmovusdb xmm20 {k3}, zmm2 +// CHECK: encoding: [0x62,0xb2,0x7e,0x4b,0x11,0xd4] + vpmovusdb xmm20 {k3}, zmm2 + +// CHECK: vpmovusdb xmm20 {k3} {z}, zmm2 +// CHECK: encoding: [0x62,0xb2,0x7e,0xcb,0x11,0xd4] + vpmovusdb xmm20 {k3} {z}, zmm2 + +// CHECK: vpmovdw ymm22, zmm29 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x33,0xee] + vpmovdw ymm22, zmm29 + +// CHECK: vpmovdw ymm22 {k5}, zmm29 +// CHECK: encoding: [0x62,0x22,0x7e,0x4d,0x33,0xee] + vpmovdw ymm22 {k5}, zmm29 + +// CHECK: vpmovdw ymm22 {k5} {z}, zmm29 +// CHECK: encoding: [0x62,0x22,0x7e,0xcd,0x33,0xee] + vpmovdw ymm22 {k5} {z}, zmm29 + +// CHECK: vpmovsdw ymm25, zmm14 +// CHECK: encoding: [0x62,0x12,0x7e,0x48,0x23,0xf1] + vpmovsdw ymm25, zmm14 + +// CHECK: vpmovsdw ymm25 {k4}, zmm14 +// CHECK: encoding: [0x62,0x12,0x7e,0x4c,0x23,0xf1] + vpmovsdw ymm25 {k4}, zmm14 + +// CHECK: vpmovsdw ymm25 {k4} {z}, zmm14 +// CHECK: encoding: [0x62,0x12,0x7e,0xcc,0x23,0xf1] + vpmovsdw ymm25 {k4} {z}, zmm14 + +// CHECK: vpmovusdw ymm8, zmm7 +// CHECK: encoding: [0x62,0xd2,0x7e,0x48,0x13,0xf8] + vpmovusdw ymm8, zmm7 + +// CHECK: vpmovusdw ymm8 {k1}, zmm7 +// CHECK: encoding: [0x62,0xd2,0x7e,0x49,0x13,0xf8] + vpmovusdw ymm8 {k1}, zmm7 + +// CHECK: vpmovusdw ymm8 {k1} {z}, zmm7 +// CHECK: encoding: [0x62,0xd2,0x7e,0xc9,0x13,0xf8] + vpmovusdw ymm8 {k1} {z}, zmm7 + +// CHECK: vshuff32x4 zmm6, zmm24, zmm3, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x23,0xf3,0xab] + vshuff32x4 zmm6, zmm24, zmm3, 171 + +// CHECK: vshuff32x4 zmm6 {k2}, zmm24, zmm3, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0x42,0x23,0xf3,0xab] + vshuff32x4 zmm6 {k2}, zmm24, zmm3, 171 + +// CHECK: vshuff32x4 zmm6 {k2} {z}, zmm24, zmm3, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0xc2,0x23,0xf3,0xab] + vshuff32x4 zmm6 {k2} {z}, zmm24, zmm3, 171 + +// CHECK: vshuff32x4 zmm6, zmm24, zmm3, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x23,0xf3,0x7b] + vshuff32x4 zmm6, zmm24, zmm3, 123 + +// CHECK: vshuff32x4 zmm6, zmm24, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x23,0x31,0x7b] + vshuff32x4 zmm6, zmm24, zmmword ptr [rcx], 123 + +// CHECK: vshuff32x4 zmm6, zmm24, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0x3d,0x40,0x23,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vshuff32x4 zmm6, zmm24, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vshuff32x4 zmm6, zmm24, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x23,0x31,0x7b] + vshuff32x4 zmm6, zmm24, dword ptr [rcx]{1to16}, 123 + +// CHECK: vshuff32x4 zmm6, zmm24, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x23,0x72,0x7f,0x7b] + vshuff32x4 zmm6, zmm24, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshuff32x4 zmm6, zmm24, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x23,0xb2,0x00,0x20,0x00,0x00,0x7b] + vshuff32x4 zmm6, zmm24, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshuff32x4 zmm6, zmm24, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x23,0x72,0x80,0x7b] + vshuff32x4 zmm6, zmm24, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshuff32x4 zmm6, zmm24, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x23,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vshuff32x4 zmm6, zmm24, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshuff32x4 zmm6, zmm24, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x23,0x72,0x7f,0x7b] + vshuff32x4 zmm6, zmm24, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vshuff32x4 zmm6, zmm24, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x23,0xb2,0x00,0x02,0x00,0x00,0x7b] + vshuff32x4 zmm6, zmm24, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vshuff32x4 zmm6, zmm24, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x23,0x72,0x80,0x7b] + vshuff32x4 zmm6, zmm24, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vshuff32x4 zmm6, zmm24, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x23,0xb2,0xfc,0xfd,0xff,0xff,0x7b] + vshuff32x4 zmm6, zmm24, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vshuff64x2 zmm15, zmm25, zmm11, 171 +// CHECK: encoding: [0x62,0x53,0xb5,0x40,0x23,0xfb,0xab] + vshuff64x2 zmm15, zmm25, zmm11, 171 + +// CHECK: vshuff64x2 zmm15 {k2}, zmm25, zmm11, 171 +// CHECK: encoding: [0x62,0x53,0xb5,0x42,0x23,0xfb,0xab] + vshuff64x2 zmm15 {k2}, zmm25, zmm11, 171 + +// CHECK: vshuff64x2 zmm15 {k2} {z}, zmm25, zmm11, 171 +// CHECK: encoding: [0x62,0x53,0xb5,0xc2,0x23,0xfb,0xab] + vshuff64x2 zmm15 {k2} {z}, zmm25, zmm11, 171 + +// CHECK: vshuff64x2 zmm15, zmm25, zmm11, 123 +// CHECK: encoding: [0x62,0x53,0xb5,0x40,0x23,0xfb,0x7b] + vshuff64x2 zmm15, zmm25, zmm11, 123 + +// CHECK: vshuff64x2 zmm15, zmm25, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x40,0x23,0x39,0x7b] + vshuff64x2 zmm15, zmm25, zmmword ptr [rcx], 123 + +// CHECK: vshuff64x2 zmm15, zmm25, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0xb5,0x40,0x23,0xbc,0xf0,0x23,0x01,0x00,0x00,0x7b] + vshuff64x2 zmm15, zmm25, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vshuff64x2 zmm15, zmm25, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x50,0x23,0x39,0x7b] + vshuff64x2 zmm15, zmm25, qword ptr [rcx]{1to8}, 123 + +// CHECK: vshuff64x2 zmm15, zmm25, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x40,0x23,0x7a,0x7f,0x7b] + vshuff64x2 zmm15, zmm25, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshuff64x2 zmm15, zmm25, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x40,0x23,0xba,0x00,0x20,0x00,0x00,0x7b] + vshuff64x2 zmm15, zmm25, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshuff64x2 zmm15, zmm25, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x40,0x23,0x7a,0x80,0x7b] + vshuff64x2 zmm15, zmm25, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshuff64x2 zmm15, zmm25, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x40,0x23,0xba,0xc0,0xdf,0xff,0xff,0x7b] + vshuff64x2 zmm15, zmm25, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshuff64x2 zmm15, zmm25, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x50,0x23,0x7a,0x7f,0x7b] + vshuff64x2 zmm15, zmm25, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vshuff64x2 zmm15, zmm25, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x50,0x23,0xba,0x00,0x04,0x00,0x00,0x7b] + vshuff64x2 zmm15, zmm25, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vshuff64x2 zmm15, zmm25, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x50,0x23,0x7a,0x80,0x7b] + vshuff64x2 zmm15, zmm25, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vshuff64x2 zmm15, zmm25, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xb5,0x50,0x23,0xba,0xf8,0xfb,0xff,0xff,0x7b] + vshuff64x2 zmm15, zmm25, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vshufi32x4 zmm1, zmm28, zmm25, 171 +// CHECK: encoding: [0x62,0x93,0x1d,0x40,0x43,0xc9,0xab] + vshufi32x4 zmm1, zmm28, zmm25, 171 + +// CHECK: vshufi32x4 zmm1 {k4}, zmm28, zmm25, 171 +// CHECK: encoding: [0x62,0x93,0x1d,0x44,0x43,0xc9,0xab] + vshufi32x4 zmm1 {k4}, zmm28, zmm25, 171 + +// CHECK: vshufi32x4 zmm1 {k4} {z}, zmm28, zmm25, 171 +// CHECK: encoding: [0x62,0x93,0x1d,0xc4,0x43,0xc9,0xab] + vshufi32x4 zmm1 {k4} {z}, zmm28, zmm25, 171 + +// CHECK: vshufi32x4 zmm1, zmm28, zmm25, 123 +// CHECK: encoding: [0x62,0x93,0x1d,0x40,0x43,0xc9,0x7b] + vshufi32x4 zmm1, zmm28, zmm25, 123 + +// CHECK: vshufi32x4 zmm1, zmm28, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x40,0x43,0x09,0x7b] + vshufi32x4 zmm1, zmm28, zmmword ptr [rcx], 123 + +// CHECK: vshufi32x4 zmm1, zmm28, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0x1d,0x40,0x43,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vshufi32x4 zmm1, zmm28, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vshufi32x4 zmm1, zmm28, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x50,0x43,0x09,0x7b] + vshufi32x4 zmm1, zmm28, dword ptr [rcx]{1to16}, 123 + +// CHECK: vshufi32x4 zmm1, zmm28, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x40,0x43,0x4a,0x7f,0x7b] + vshufi32x4 zmm1, zmm28, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshufi32x4 zmm1, zmm28, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x40,0x43,0x8a,0x00,0x20,0x00,0x00,0x7b] + vshufi32x4 zmm1, zmm28, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshufi32x4 zmm1, zmm28, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x40,0x43,0x4a,0x80,0x7b] + vshufi32x4 zmm1, zmm28, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshufi32x4 zmm1, zmm28, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x40,0x43,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vshufi32x4 zmm1, zmm28, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshufi32x4 zmm1, zmm28, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x50,0x43,0x4a,0x7f,0x7b] + vshufi32x4 zmm1, zmm28, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vshufi32x4 zmm1, zmm28, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x50,0x43,0x8a,0x00,0x02,0x00,0x00,0x7b] + vshufi32x4 zmm1, zmm28, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vshufi32x4 zmm1, zmm28, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x50,0x43,0x4a,0x80,0x7b] + vshufi32x4 zmm1, zmm28, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vshufi32x4 zmm1, zmm28, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x1d,0x50,0x43,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + vshufi32x4 zmm1, zmm28, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vshufi64x2 zmm3, zmm16, zmm19, 171 +// CHECK: encoding: [0x62,0xb3,0xfd,0x40,0x43,0xdb,0xab] + vshufi64x2 zmm3, zmm16, zmm19, 171 + +// CHECK: vshufi64x2 zmm3 {k7}, zmm16, zmm19, 171 +// CHECK: encoding: [0x62,0xb3,0xfd,0x47,0x43,0xdb,0xab] + vshufi64x2 zmm3 {k7}, zmm16, zmm19, 171 + +// CHECK: vshufi64x2 zmm3 {k7} {z}, zmm16, zmm19, 171 +// CHECK: encoding: [0x62,0xb3,0xfd,0xc7,0x43,0xdb,0xab] + vshufi64x2 zmm3 {k7} {z}, zmm16, zmm19, 171 + +// CHECK: vshufi64x2 zmm3, zmm16, zmm19, 123 +// CHECK: encoding: [0x62,0xb3,0xfd,0x40,0x43,0xdb,0x7b] + vshufi64x2 zmm3, zmm16, zmm19, 123 + +// CHECK: vshufi64x2 zmm3, zmm16, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x40,0x43,0x19,0x7b] + vshufi64x2 zmm3, zmm16, zmmword ptr [rcx], 123 + +// CHECK: vshufi64x2 zmm3, zmm16, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb3,0xfd,0x40,0x43,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vshufi64x2 zmm3, zmm16, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vshufi64x2 zmm3, zmm16, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x50,0x43,0x19,0x7b] + vshufi64x2 zmm3, zmm16, qword ptr [rcx]{1to8}, 123 + +// CHECK: vshufi64x2 zmm3, zmm16, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x40,0x43,0x5a,0x7f,0x7b] + vshufi64x2 zmm3, zmm16, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshufi64x2 zmm3, zmm16, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x40,0x43,0x9a,0x00,0x20,0x00,0x00,0x7b] + vshufi64x2 zmm3, zmm16, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshufi64x2 zmm3, zmm16, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x40,0x43,0x5a,0x80,0x7b] + vshufi64x2 zmm3, zmm16, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshufi64x2 zmm3, zmm16, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x40,0x43,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vshufi64x2 zmm3, zmm16, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshufi64x2 zmm3, zmm16, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x50,0x43,0x5a,0x7f,0x7b] + vshufi64x2 zmm3, zmm16, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vshufi64x2 zmm3, zmm16, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x50,0x43,0x9a,0x00,0x04,0x00,0x00,0x7b] + vshufi64x2 zmm3, zmm16, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vshufi64x2 zmm3, zmm16, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x50,0x43,0x5a,0x80,0x7b] + vshufi64x2 zmm3, zmm16, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vshufi64x2 zmm3, zmm16, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x50,0x43,0x9a,0xf8,0xfb,0xff,0xff,0x7b] + vshufi64x2 zmm3, zmm16, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpermq zmm21, zmm23, zmm22 +// CHECK: encoding: [0x62,0xa2,0xc5,0x40,0x36,0xee] + vpermq zmm21, zmm23, zmm22 + +// CHECK: vpermq zmm21 {k1}, zmm23, zmm22 +// CHECK: encoding: [0x62,0xa2,0xc5,0x41,0x36,0xee] + vpermq zmm21 {k1}, zmm23, zmm22 + +// CHECK: vpermq zmm21 {k1} {z}, zmm23, zmm22 +// CHECK: encoding: [0x62,0xa2,0xc5,0xc1,0x36,0xee] + vpermq zmm21 {k1} {z}, zmm23, zmm22 + +// CHECK: vpermq zmm21, zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0x29] + vpermq zmm21, zmm23, zmmword ptr [rcx] + +// CHECK: vpermq zmm21, zmm23, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xc5,0x40,0x36,0xac,0xf0,0x23,0x01,0x00,0x00] + vpermq zmm21, zmm23, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermq zmm21, zmm23, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0x29] + vpermq zmm21, zmm23, qword ptr [rcx]{1to8} + +// CHECK: vpermq zmm21, zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0x6a,0x7f] + vpermq zmm21, zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vpermq zmm21, zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0xaa,0x00,0x20,0x00,0x00] + vpermq zmm21, zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vpermq zmm21, zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0x6a,0x80] + vpermq zmm21, zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vpermq zmm21, zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0xaa,0xc0,0xdf,0xff,0xff] + vpermq zmm21, zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vpermq zmm21, zmm23, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0x6a,0x7f] + vpermq zmm21, zmm23, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermq zmm21, zmm23, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0xaa,0x00,0x04,0x00,0x00] + vpermq zmm21, zmm23, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermq zmm21, zmm23, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0x6a,0x80] + vpermq zmm21, zmm23, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermq zmm21, zmm23, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0xaa,0xf8,0xfb,0xff,0xff] + vpermq zmm21, zmm23, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermpd zmm26, zmm29, zmm18 +// CHECK: encoding: [0x62,0x22,0x95,0x40,0x16,0xd2] + vpermpd zmm26, zmm29, zmm18 + +// CHECK: vpermpd zmm26 {k6}, zmm29, zmm18 +// CHECK: encoding: [0x62,0x22,0x95,0x46,0x16,0xd2] + vpermpd zmm26 {k6}, zmm29, zmm18 + +// CHECK: vpermpd zmm26 {k6} {z}, zmm29, zmm18 +// CHECK: encoding: [0x62,0x22,0x95,0xc6,0x16,0xd2] + vpermpd zmm26 {k6} {z}, zmm29, zmm18 + +// CHECK: vpermpd zmm26, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x11] + vpermpd zmm26, zmm29, zmmword ptr [rcx] + +// CHECK: vpermpd zmm26, zmm29, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x95,0x40,0x16,0x94,0xf0,0x23,0x01,0x00,0x00] + vpermpd zmm26, zmm29, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermpd zmm26, zmm29, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x11] + vpermpd zmm26, zmm29, qword ptr [rcx]{1to8} + +// CHECK: vpermpd zmm26, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x52,0x7f] + vpermpd zmm26, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vpermpd zmm26, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x92,0x00,0x20,0x00,0x00] + vpermpd zmm26, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vpermpd zmm26, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x52,0x80] + vpermpd zmm26, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vpermpd zmm26, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x92,0xc0,0xdf,0xff,0xff] + vpermpd zmm26, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vpermpd zmm26, zmm29, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x52,0x7f] + vpermpd zmm26, zmm29, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermpd zmm26, zmm29, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x92,0x00,0x04,0x00,0x00] + vpermpd zmm26, zmm29, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermpd zmm26, zmm29, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x52,0x80] + vpermpd zmm26, zmm29, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermpd zmm26, zmm29, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x92,0xf8,0xfb,0xff,0xff] + vpermpd zmm26, zmm29, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermt2d zmm13, zmm6, zmm6 +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0x7e,0xee] + vpermt2d zmm13, zmm6, zmm6 + +// CHECK: vpermt2d zmm13 {k6}, zmm6, zmm6 +// CHECK: encoding: [0x62,0x72,0x4d,0x4e,0x7e,0xee] + vpermt2d zmm13 {k6}, zmm6, zmm6 + +// CHECK: vpermt2d zmm13 {k6} {z}, zmm6, zmm6 +// CHECK: encoding: [0x62,0x72,0x4d,0xce,0x7e,0xee] + vpermt2d zmm13 {k6} {z}, zmm6, zmm6 + +// CHECK: vpermt2d zmm13, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0x7e,0x29] + vpermt2d zmm13, zmm6, zmmword ptr [rcx] + +// CHECK: vpermt2d zmm13, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x4d,0x48,0x7e,0xac,0xf0,0x23,0x01,0x00,0x00] + vpermt2d zmm13, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermt2d zmm13, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0x7e,0x29] + vpermt2d zmm13, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vpermt2d zmm13, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0x7e,0x6a,0x7f] + vpermt2d zmm13, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vpermt2d zmm13, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0x7e,0xaa,0x00,0x20,0x00,0x00] + vpermt2d zmm13, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vpermt2d zmm13, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0x7e,0x6a,0x80] + vpermt2d zmm13, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vpermt2d zmm13, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x4d,0x48,0x7e,0xaa,0xc0,0xdf,0xff,0xff] + vpermt2d zmm13, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vpermt2d zmm13, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0x7e,0x6a,0x7f] + vpermt2d zmm13, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermt2d zmm13, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0x7e,0xaa,0x00,0x02,0x00,0x00] + vpermt2d zmm13, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermt2d zmm13, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0x7e,0x6a,0x80] + vpermt2d zmm13, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermt2d zmm13, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x4d,0x58,0x7e,0xaa,0xfc,0xfd,0xff,0xff] + vpermt2d zmm13, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermt2q zmm21, zmm12, zmm16 +// CHECK: encoding: [0x62,0xa2,0x9d,0x48,0x7e,0xe8] + vpermt2q zmm21, zmm12, zmm16 + +// CHECK: vpermt2q zmm21 {k2}, zmm12, zmm16 +// CHECK: encoding: [0x62,0xa2,0x9d,0x4a,0x7e,0xe8] + vpermt2q zmm21 {k2}, zmm12, zmm16 + +// CHECK: vpermt2q zmm21 {k2} {z}, zmm12, zmm16 +// CHECK: encoding: [0x62,0xa2,0x9d,0xca,0x7e,0xe8] + vpermt2q zmm21 {k2} {z}, zmm12, zmm16 + +// CHECK: vpermt2q zmm21, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x7e,0x29] + vpermt2q zmm21, zmm12, zmmword ptr [rcx] + +// CHECK: vpermt2q zmm21, zmm12, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x9d,0x48,0x7e,0xac,0xf0,0x23,0x01,0x00,0x00] + vpermt2q zmm21, zmm12, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermt2q zmm21, zmm12, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x7e,0x29] + vpermt2q zmm21, zmm12, qword ptr [rcx]{1to8} + +// CHECK: vpermt2q zmm21, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x7e,0x6a,0x7f] + vpermt2q zmm21, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vpermt2q zmm21, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x7e,0xaa,0x00,0x20,0x00,0x00] + vpermt2q zmm21, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vpermt2q zmm21, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x7e,0x6a,0x80] + vpermt2q zmm21, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vpermt2q zmm21, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x9d,0x48,0x7e,0xaa,0xc0,0xdf,0xff,0xff] + vpermt2q zmm21, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vpermt2q zmm21, zmm12, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x7e,0x6a,0x7f] + vpermt2q zmm21, zmm12, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermt2q zmm21, zmm12, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x7e,0xaa,0x00,0x04,0x00,0x00] + vpermt2q zmm21, zmm12, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermt2q zmm21, zmm12, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x7e,0x6a,0x80] + vpermt2q zmm21, zmm12, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermt2q zmm21, zmm12, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x58,0x7e,0xaa,0xf8,0xfb,0xff,0xff] + vpermt2q zmm21, zmm12, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermt2ps zmm11, zmm28, zmm2 +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x7f,0xda] + vpermt2ps zmm11, zmm28, zmm2 + +// CHECK: vpermt2ps zmm11 {k1}, zmm28, zmm2 +// CHECK: encoding: [0x62,0x72,0x1d,0x41,0x7f,0xda] + vpermt2ps zmm11 {k1}, zmm28, zmm2 + +// CHECK: vpermt2ps zmm11 {k1} {z}, zmm28, zmm2 +// CHECK: encoding: [0x62,0x72,0x1d,0xc1,0x7f,0xda] + vpermt2ps zmm11 {k1} {z}, zmm28, zmm2 + +// CHECK: vpermt2ps zmm11, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x7f,0x19] + vpermt2ps zmm11, zmm28, zmmword ptr [rcx] + +// CHECK: vpermt2ps zmm11, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x1d,0x40,0x7f,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpermt2ps zmm11, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermt2ps zmm11, zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x7f,0x19] + vpermt2ps zmm11, zmm28, dword ptr [rcx]{1to16} + +// CHECK: vpermt2ps zmm11, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x7f,0x5a,0x7f] + vpermt2ps zmm11, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vpermt2ps zmm11, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x7f,0x9a,0x00,0x20,0x00,0x00] + vpermt2ps zmm11, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vpermt2ps zmm11, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x7f,0x5a,0x80] + vpermt2ps zmm11, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vpermt2ps zmm11, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x7f,0x9a,0xc0,0xdf,0xff,0xff] + vpermt2ps zmm11, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vpermt2ps zmm11, zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x7f,0x5a,0x7f] + vpermt2ps zmm11, zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermt2ps zmm11, zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x7f,0x9a,0x00,0x02,0x00,0x00] + vpermt2ps zmm11, zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermt2ps zmm11, zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x7f,0x5a,0x80] + vpermt2ps zmm11, zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermt2ps zmm11, zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x7f,0x9a,0xfc,0xfd,0xff,0xff] + vpermt2ps zmm11, zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermt2pd zmm3, zmm27, zmm11 +// CHECK: encoding: [0x62,0xd2,0xa5,0x40,0x7f,0xdb] + vpermt2pd zmm3, zmm27, zmm11 + +// CHECK: vpermt2pd zmm3 {k2}, zmm27, zmm11 +// CHECK: encoding: [0x62,0xd2,0xa5,0x42,0x7f,0xdb] + vpermt2pd zmm3 {k2}, zmm27, zmm11 + +// CHECK: vpermt2pd zmm3 {k2} {z}, zmm27, zmm11 +// CHECK: encoding: [0x62,0xd2,0xa5,0xc2,0x7f,0xdb] + vpermt2pd zmm3 {k2} {z}, zmm27, zmm11 + +// CHECK: vpermt2pd zmm3, zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xa5,0x40,0x7f,0x19] + vpermt2pd zmm3, zmm27, zmmword ptr [rcx] + +// CHECK: vpermt2pd zmm3, zmm27, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0xa5,0x40,0x7f,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpermt2pd zmm3, zmm27, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermt2pd zmm3, zmm27, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xa5,0x50,0x7f,0x19] + vpermt2pd zmm3, zmm27, qword ptr [rcx]{1to8} + +// CHECK: vpermt2pd zmm3, zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xa5,0x40,0x7f,0x5a,0x7f] + vpermt2pd zmm3, zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vpermt2pd zmm3, zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xa5,0x40,0x7f,0x9a,0x00,0x20,0x00,0x00] + vpermt2pd zmm3, zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vpermt2pd zmm3, zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xa5,0x40,0x7f,0x5a,0x80] + vpermt2pd zmm3, zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vpermt2pd zmm3, zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xa5,0x40,0x7f,0x9a,0xc0,0xdf,0xff,0xff] + vpermt2pd zmm3, zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vpermt2pd zmm3, zmm27, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xa5,0x50,0x7f,0x5a,0x7f] + vpermt2pd zmm3, zmm27, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermt2pd zmm3, zmm27, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xa5,0x50,0x7f,0x9a,0x00,0x04,0x00,0x00] + vpermt2pd zmm3, zmm27, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermt2pd zmm3, zmm27, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xa5,0x50,0x7f,0x5a,0x80] + vpermt2pd zmm3, zmm27, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermt2pd zmm3, zmm27, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xa5,0x50,0x7f,0x9a,0xf8,0xfb,0xff,0xff] + vpermt2pd zmm3, zmm27, qword ptr [rdx - 1032]{1to8} + +// CHECK: valignq zmm28, zmm4, zmm23, 171 +// CHECK: encoding: [0x62,0x23,0xdd,0x48,0x03,0xe7,0xab] + valignq zmm28, zmm4, zmm23, 171 + +// CHECK: valignq zmm28 {k3}, zmm4, zmm23, 171 +// CHECK: encoding: [0x62,0x23,0xdd,0x4b,0x03,0xe7,0xab] + valignq zmm28 {k3}, zmm4, zmm23, 171 + +// CHECK: valignq zmm28 {k3} {z}, zmm4, zmm23, 171 +// CHECK: encoding: [0x62,0x23,0xdd,0xcb,0x03,0xe7,0xab] + valignq zmm28 {k3} {z}, zmm4, zmm23, 171 + +// CHECK: valignq zmm28, zmm4, zmm23, 123 +// CHECK: encoding: [0x62,0x23,0xdd,0x48,0x03,0xe7,0x7b] + valignq zmm28, zmm4, zmm23, 123 + +// CHECK: valignq zmm28, zmm4, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x48,0x03,0x21,0x7b] + valignq zmm28, zmm4, zmmword ptr [rcx], 123 + +// CHECK: valignq zmm28, zmm4, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x23,0xdd,0x48,0x03,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + valignq zmm28, zmm4, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: valignq zmm28, zmm4, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x58,0x03,0x21,0x7b] + valignq zmm28, zmm4, qword ptr [rcx]{1to8}, 123 + +// CHECK: valignq zmm28, zmm4, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x48,0x03,0x62,0x7f,0x7b] + valignq zmm28, zmm4, zmmword ptr [rdx + 8128], 123 + +// CHECK: valignq zmm28, zmm4, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x48,0x03,0xa2,0x00,0x20,0x00,0x00,0x7b] + valignq zmm28, zmm4, zmmword ptr [rdx + 8192], 123 + +// CHECK: valignq zmm28, zmm4, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x48,0x03,0x62,0x80,0x7b] + valignq zmm28, zmm4, zmmword ptr [rdx - 8192], 123 + +// CHECK: valignq zmm28, zmm4, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x48,0x03,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + valignq zmm28, zmm4, zmmword ptr [rdx - 8256], 123 + +// CHECK: valignq zmm28, zmm4, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x58,0x03,0x62,0x7f,0x7b] + valignq zmm28, zmm4, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: valignq zmm28, zmm4, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x58,0x03,0xa2,0x00,0x04,0x00,0x00,0x7b] + valignq zmm28, zmm4, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: valignq zmm28, zmm4, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x58,0x03,0x62,0x80,0x7b] + valignq zmm28, zmm4, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: valignq zmm28, zmm4, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xdd,0x58,0x03,0xa2,0xf8,0xfb,0xff,0xff,0x7b] + valignq zmm28, zmm4, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vcvtsd2usi eax, xmm30 +// CHECK: encoding: [0x62,0x91,0x7f,0x08,0x79,0xc6] + vcvtsd2usi eax, xmm30 + +// CHECK: vcvtsd2usi eax, xmm30, {rn-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x18,0x79,0xc6] + vcvtsd2usi eax, xmm30, {rn-sae} + +// CHECK: vcvtsd2usi eax, xmm30, {ru-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x58,0x79,0xc6] + vcvtsd2usi eax, xmm30, {ru-sae} + +// CHECK: vcvtsd2usi eax, xmm30, {rd-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x38,0x79,0xc6] + vcvtsd2usi eax, xmm30, {rd-sae} + +// CHECK: vcvtsd2usi eax, xmm30, {rz-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x78,0x79,0xc6] + vcvtsd2usi eax, xmm30, {rz-sae} + +// CHECK: vcvtsd2usi eax, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x01] + vcvtsd2usi eax, qword ptr [rcx] + +// CHECK: vcvtsd2usi eax, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x79,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvtsd2usi eax, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsd2usi eax, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x42,0x7f] + vcvtsd2usi eax, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi eax, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x82,0x00,0x04,0x00,0x00] + vcvtsd2usi eax, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi eax, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x42,0x80] + vcvtsd2usi eax, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi eax, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x82,0xf8,0xfb,0xff,0xff] + vcvtsd2usi eax, qword ptr [rdx - 1032] + +// CHECK: vcvtsd2usi ebp, xmm30 +// CHECK: encoding: [0x62,0x91,0x7f,0x08,0x79,0xee] + vcvtsd2usi ebp, xmm30 + +// CHECK: vcvtsd2usi ebp, xmm30, {rn-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x18,0x79,0xee] + vcvtsd2usi ebp, xmm30, {rn-sae} + +// CHECK: vcvtsd2usi ebp, xmm30, {ru-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x58,0x79,0xee] + vcvtsd2usi ebp, xmm30, {ru-sae} + +// CHECK: vcvtsd2usi ebp, xmm30, {rd-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x38,0x79,0xee] + vcvtsd2usi ebp, xmm30, {rd-sae} + +// CHECK: vcvtsd2usi ebp, xmm30, {rz-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x78,0x79,0xee] + vcvtsd2usi ebp, xmm30, {rz-sae} + +// CHECK: vcvtsd2usi ebp, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x29] + vcvtsd2usi ebp, qword ptr [rcx] + +// CHECK: vcvtsd2usi ebp, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x79,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtsd2usi ebp, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsd2usi ebp, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x6a,0x7f] + vcvtsd2usi ebp, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi ebp, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0xaa,0x00,0x04,0x00,0x00] + vcvtsd2usi ebp, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi ebp, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x6a,0x80] + vcvtsd2usi ebp, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi ebp, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0xaa,0xf8,0xfb,0xff,0xff] + vcvtsd2usi ebp, qword ptr [rdx - 1032] + +// CHECK: vcvtsd2usi r13d, xmm30 +// CHECK: encoding: [0x62,0x11,0x7f,0x08,0x79,0xee] + vcvtsd2usi r13d, xmm30 + +// CHECK: vcvtsd2usi r13d, xmm30, {rn-sae} +// CHECK: encoding: [0x62,0x11,0x7f,0x18,0x79,0xee] + vcvtsd2usi r13d, xmm30, {rn-sae} + +// CHECK: vcvtsd2usi r13d, xmm30, {ru-sae} +// CHECK: encoding: [0x62,0x11,0x7f,0x58,0x79,0xee] + vcvtsd2usi r13d, xmm30, {ru-sae} + +// CHECK: vcvtsd2usi r13d, xmm30, {rd-sae} +// CHECK: encoding: [0x62,0x11,0x7f,0x38,0x79,0xee] + vcvtsd2usi r13d, xmm30, {rd-sae} + +// CHECK: vcvtsd2usi r13d, xmm30, {rz-sae} +// CHECK: encoding: [0x62,0x11,0x7f,0x78,0x79,0xee] + vcvtsd2usi r13d, xmm30, {rz-sae} + +// CHECK: vcvtsd2usi r13d, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0x29] + vcvtsd2usi r13d, qword ptr [rcx] + +// CHECK: vcvtsd2usi r13d, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7f,0x08,0x79,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtsd2usi r13d, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsd2usi r13d, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0x6a,0x7f] + vcvtsd2usi r13d, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi r13d, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0xaa,0x00,0x04,0x00,0x00] + vcvtsd2usi r13d, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi r13d, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0x6a,0x80] + vcvtsd2usi r13d, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi r13d, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0xaa,0xf8,0xfb,0xff,0xff] + vcvtsd2usi r13d, qword ptr [rdx - 1032] + +// CHECK: vcvtsd2usi rax, xmm18 +// CHECK: encoding: [0x62,0xb1,0xff,0x08,0x79,0xc2] + vcvtsd2usi rax, xmm18 + +// CHECK: vcvtsd2usi rax, xmm18, {rn-sae} +// CHECK: encoding: [0x62,0xb1,0xff,0x18,0x79,0xc2] + vcvtsd2usi rax, xmm18, {rn-sae} + +// CHECK: vcvtsd2usi rax, xmm18, {ru-sae} +// CHECK: encoding: [0x62,0xb1,0xff,0x58,0x79,0xc2] + vcvtsd2usi rax, xmm18, {ru-sae} + +// CHECK: vcvtsd2usi rax, xmm18, {rd-sae} +// CHECK: encoding: [0x62,0xb1,0xff,0x38,0x79,0xc2] + vcvtsd2usi rax, xmm18, {rd-sae} + +// CHECK: vcvtsd2usi rax, xmm18, {rz-sae} +// CHECK: encoding: [0x62,0xb1,0xff,0x78,0x79,0xc2] + vcvtsd2usi rax, xmm18, {rz-sae} + +// CHECK: vcvtsd2usi rax, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x01] + vcvtsd2usi rax, qword ptr [rcx] + +// CHECK: vcvtsd2usi rax, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xff,0x08,0x79,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvtsd2usi rax, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsd2usi rax, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x42,0x7f] + vcvtsd2usi rax, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi rax, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x82,0x00,0x04,0x00,0x00] + vcvtsd2usi rax, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi rax, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x42,0x80] + vcvtsd2usi rax, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi rax, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x82,0xf8,0xfb,0xff,0xff] + vcvtsd2usi rax, qword ptr [rdx - 1032] + +// CHECK: vcvtsd2usi r8, xmm18 +// CHECK: encoding: [0x62,0x31,0xff,0x08,0x79,0xc2] + vcvtsd2usi r8, xmm18 + +// CHECK: vcvtsd2usi r8, xmm18, {rn-sae} +// CHECK: encoding: [0x62,0x31,0xff,0x18,0x79,0xc2] + vcvtsd2usi r8, xmm18, {rn-sae} + +// CHECK: vcvtsd2usi r8, xmm18, {ru-sae} +// CHECK: encoding: [0x62,0x31,0xff,0x58,0x79,0xc2] + vcvtsd2usi r8, xmm18, {ru-sae} + +// CHECK: vcvtsd2usi r8, xmm18, {rd-sae} +// CHECK: encoding: [0x62,0x31,0xff,0x38,0x79,0xc2] + vcvtsd2usi r8, xmm18, {rd-sae} + +// CHECK: vcvtsd2usi r8, xmm18, {rz-sae} +// CHECK: encoding: [0x62,0x31,0xff,0x78,0x79,0xc2] + vcvtsd2usi r8, xmm18, {rz-sae} + +// CHECK: vcvtsd2usi r8, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x01] + vcvtsd2usi r8, qword ptr [rcx] + +// CHECK: vcvtsd2usi r8, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xff,0x08,0x79,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvtsd2usi r8, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtsd2usi r8, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x42,0x7f] + vcvtsd2usi r8, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi r8, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x82,0x00,0x04,0x00,0x00] + vcvtsd2usi r8, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi r8, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x42,0x80] + vcvtsd2usi r8, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi r8, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x82,0xf8,0xfb,0xff,0xff] + vcvtsd2usi r8, qword ptr [rdx - 1032] + +// CHECK: vcvtss2usi eax, xmm28 +// CHECK: encoding: [0x62,0x91,0x7e,0x08,0x79,0xc4] + vcvtss2usi eax, xmm28 + +// CHECK: vcvtss2usi eax, xmm28, {rn-sae} +// CHECK: encoding: [0x62,0x91,0x7e,0x18,0x79,0xc4] + vcvtss2usi eax, xmm28, {rn-sae} + +// CHECK: vcvtss2usi eax, xmm28, {ru-sae} +// CHECK: encoding: [0x62,0x91,0x7e,0x58,0x79,0xc4] + vcvtss2usi eax, xmm28, {ru-sae} + +// CHECK: vcvtss2usi eax, xmm28, {rd-sae} +// CHECK: encoding: [0x62,0x91,0x7e,0x38,0x79,0xc4] + vcvtss2usi eax, xmm28, {rd-sae} + +// CHECK: vcvtss2usi eax, xmm28, {rz-sae} +// CHECK: encoding: [0x62,0x91,0x7e,0x78,0x79,0xc4] + vcvtss2usi eax, xmm28, {rz-sae} + +// CHECK: vcvtss2usi eax, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x01] + vcvtss2usi eax, dword ptr [rcx] + +// CHECK: vcvtss2usi eax, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x79,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvtss2usi eax, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtss2usi eax, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x42,0x7f] + vcvtss2usi eax, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi eax, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x82,0x00,0x02,0x00,0x00] + vcvtss2usi eax, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi eax, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x42,0x80] + vcvtss2usi eax, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi eax, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x82,0xfc,0xfd,0xff,0xff] + vcvtss2usi eax, dword ptr [rdx - 516] + +// CHECK: vcvtss2usi ebp, xmm28 +// CHECK: encoding: [0x62,0x91,0x7e,0x08,0x79,0xec] + vcvtss2usi ebp, xmm28 + +// CHECK: vcvtss2usi ebp, xmm28, {rn-sae} +// CHECK: encoding: [0x62,0x91,0x7e,0x18,0x79,0xec] + vcvtss2usi ebp, xmm28, {rn-sae} + +// CHECK: vcvtss2usi ebp, xmm28, {ru-sae} +// CHECK: encoding: [0x62,0x91,0x7e,0x58,0x79,0xec] + vcvtss2usi ebp, xmm28, {ru-sae} + +// CHECK: vcvtss2usi ebp, xmm28, {rd-sae} +// CHECK: encoding: [0x62,0x91,0x7e,0x38,0x79,0xec] + vcvtss2usi ebp, xmm28, {rd-sae} + +// CHECK: vcvtss2usi ebp, xmm28, {rz-sae} +// CHECK: encoding: [0x62,0x91,0x7e,0x78,0x79,0xec] + vcvtss2usi ebp, xmm28, {rz-sae} + +// CHECK: vcvtss2usi ebp, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x29] + vcvtss2usi ebp, dword ptr [rcx] + +// CHECK: vcvtss2usi ebp, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x79,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtss2usi ebp, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtss2usi ebp, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x6a,0x7f] + vcvtss2usi ebp, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi ebp, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0xaa,0x00,0x02,0x00,0x00] + vcvtss2usi ebp, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi ebp, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x6a,0x80] + vcvtss2usi ebp, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi ebp, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0xaa,0xfc,0xfd,0xff,0xff] + vcvtss2usi ebp, dword ptr [rdx - 516] + +// CHECK: vcvtss2usi r13d, xmm28 +// CHECK: encoding: [0x62,0x11,0x7e,0x08,0x79,0xec] + vcvtss2usi r13d, xmm28 + +// CHECK: vcvtss2usi r13d, xmm28, {rn-sae} +// CHECK: encoding: [0x62,0x11,0x7e,0x18,0x79,0xec] + vcvtss2usi r13d, xmm28, {rn-sae} + +// CHECK: vcvtss2usi r13d, xmm28, {ru-sae} +// CHECK: encoding: [0x62,0x11,0x7e,0x58,0x79,0xec] + vcvtss2usi r13d, xmm28, {ru-sae} + +// CHECK: vcvtss2usi r13d, xmm28, {rd-sae} +// CHECK: encoding: [0x62,0x11,0x7e,0x38,0x79,0xec] + vcvtss2usi r13d, xmm28, {rd-sae} + +// CHECK: vcvtss2usi r13d, xmm28, {rz-sae} +// CHECK: encoding: [0x62,0x11,0x7e,0x78,0x79,0xec] + vcvtss2usi r13d, xmm28, {rz-sae} + +// CHECK: vcvtss2usi r13d, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0x29] + vcvtss2usi r13d, dword ptr [rcx] + +// CHECK: vcvtss2usi r13d, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7e,0x08,0x79,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtss2usi r13d, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtss2usi r13d, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0x6a,0x7f] + vcvtss2usi r13d, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi r13d, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0xaa,0x00,0x02,0x00,0x00] + vcvtss2usi r13d, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi r13d, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0x6a,0x80] + vcvtss2usi r13d, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi r13d, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0xaa,0xfc,0xfd,0xff,0xff] + vcvtss2usi r13d, dword ptr [rdx - 516] + +// CHECK: vcvtss2usi rax, xmm23 +// CHECK: encoding: [0x62,0xb1,0xfe,0x08,0x79,0xc7] + vcvtss2usi rax, xmm23 + +// CHECK: vcvtss2usi rax, xmm23, {rn-sae} +// CHECK: encoding: [0x62,0xb1,0xfe,0x18,0x79,0xc7] + vcvtss2usi rax, xmm23, {rn-sae} + +// CHECK: vcvtss2usi rax, xmm23, {ru-sae} +// CHECK: encoding: [0x62,0xb1,0xfe,0x58,0x79,0xc7] + vcvtss2usi rax, xmm23, {ru-sae} + +// CHECK: vcvtss2usi rax, xmm23, {rd-sae} +// CHECK: encoding: [0x62,0xb1,0xfe,0x38,0x79,0xc7] + vcvtss2usi rax, xmm23, {rd-sae} + +// CHECK: vcvtss2usi rax, xmm23, {rz-sae} +// CHECK: encoding: [0x62,0xb1,0xfe,0x78,0x79,0xc7] + vcvtss2usi rax, xmm23, {rz-sae} + +// CHECK: vcvtss2usi rax, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x01] + vcvtss2usi rax, dword ptr [rcx] + +// CHECK: vcvtss2usi rax, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xfe,0x08,0x79,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvtss2usi rax, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtss2usi rax, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x42,0x7f] + vcvtss2usi rax, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi rax, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x82,0x00,0x02,0x00,0x00] + vcvtss2usi rax, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi rax, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x42,0x80] + vcvtss2usi rax, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi rax, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x82,0xfc,0xfd,0xff,0xff] + vcvtss2usi rax, dword ptr [rdx - 516] + +// CHECK: vcvtss2usi r8, xmm23 +// CHECK: encoding: [0x62,0x31,0xfe,0x08,0x79,0xc7] + vcvtss2usi r8, xmm23 + +// CHECK: vcvtss2usi r8, xmm23, {rn-sae} +// CHECK: encoding: [0x62,0x31,0xfe,0x18,0x79,0xc7] + vcvtss2usi r8, xmm23, {rn-sae} + +// CHECK: vcvtss2usi r8, xmm23, {ru-sae} +// CHECK: encoding: [0x62,0x31,0xfe,0x58,0x79,0xc7] + vcvtss2usi r8, xmm23, {ru-sae} + +// CHECK: vcvtss2usi r8, xmm23, {rd-sae} +// CHECK: encoding: [0x62,0x31,0xfe,0x38,0x79,0xc7] + vcvtss2usi r8, xmm23, {rd-sae} + +// CHECK: vcvtss2usi r8, xmm23, {rz-sae} +// CHECK: encoding: [0x62,0x31,0xfe,0x78,0x79,0xc7] + vcvtss2usi r8, xmm23, {rz-sae} + +// CHECK: vcvtss2usi r8, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x01] + vcvtss2usi r8, dword ptr [rcx] + +// CHECK: vcvtss2usi r8, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xfe,0x08,0x79,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvtss2usi r8, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtss2usi r8, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x42,0x7f] + vcvtss2usi r8, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi r8, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x82,0x00,0x02,0x00,0x00] + vcvtss2usi r8, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi r8, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x42,0x80] + vcvtss2usi r8, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi r8, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x82,0xfc,0xfd,0xff,0xff] + vcvtss2usi r8, dword ptr [rdx - 516] + +// CHECK: vcvtusi2sd xmm19, xmm1, eax +// CHECK: encoding: [0x62,0xe1,0x77,0x08,0x7b,0xd8] + vcvtusi2sd xmm19, xmm1, eax + +// CHECK: vcvtusi2sd xmm19, xmm1, ebp +// CHECK: encoding: [0x62,0xe1,0x77,0x08,0x7b,0xdd] + vcvtusi2sd xmm19, xmm1, ebp + +// CHECK: vcvtusi2sd xmm19, xmm1, r13d +// CHECK: encoding: [0x62,0xc1,0x77,0x08,0x7b,0xdd] + vcvtusi2sd xmm19, xmm1, r13d + +// CHECK: vcvtusi2sd xmm19, xmm1, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x77,0x08,0x7b,0x19] + vcvtusi2sd xmm19, xmm1, dword ptr [rcx] + +// CHECK: vcvtusi2sd xmm19, xmm1, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0x77,0x08,0x7b,0x9c,0xf0,0x23,0x01,0x00,0x00] + vcvtusi2sd xmm19, xmm1, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtusi2sd xmm19, xmm1, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe1,0x77,0x08,0x7b,0x5a,0x7f] + vcvtusi2sd xmm19, xmm1, dword ptr [rdx + 508] + +// CHECK: vcvtusi2sd xmm19, xmm1, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe1,0x77,0x08,0x7b,0x9a,0x00,0x02,0x00,0x00] + vcvtusi2sd xmm19, xmm1, dword ptr [rdx + 512] + +// CHECK: vcvtusi2sd xmm19, xmm1, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe1,0x77,0x08,0x7b,0x5a,0x80] + vcvtusi2sd xmm19, xmm1, dword ptr [rdx - 512] + +// CHECK: vcvtusi2sd xmm19, xmm1, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe1,0x77,0x08,0x7b,0x9a,0xfc,0xfd,0xff,0xff] + vcvtusi2sd xmm19, xmm1, dword ptr [rdx - 516] + +// CHECK: vcvtusi2sd xmm14, xmm26, rax +// CHECK: encoding: [0x62,0x71,0xaf,0x00,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, rax + +// CHECK: vcvtusi2sd xmm14, xmm26, {rn-sae}, rax +// CHECK: encoding: [0x62,0x71,0xaf,0x10,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, {rn-sae}, rax + +// CHECK: vcvtusi2sd xmm14, xmm26, {ru-sae}, rax +// CHECK: encoding: [0x62,0x71,0xaf,0x50,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, {ru-sae}, rax + +// CHECK: vcvtusi2sd xmm14, xmm26, {rd-sae}, rax +// CHECK: encoding: [0x62,0x71,0xaf,0x30,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, {rd-sae}, rax + +// CHECK: vcvtusi2sd xmm14, xmm26, {rz-sae}, rax +// CHECK: encoding: [0x62,0x71,0xaf,0x70,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, {rz-sae}, rax + +// CHECK: vcvtusi2sd xmm14, xmm26, r8 +// CHECK: encoding: [0x62,0x51,0xaf,0x00,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, r8 + +// CHECK: vcvtusi2sd xmm14, xmm26, {rn-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xaf,0x10,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, {rn-sae}, r8 + +// CHECK: vcvtusi2sd xmm14, xmm26, {ru-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xaf,0x50,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, {ru-sae}, r8 + +// CHECK: vcvtusi2sd xmm14, xmm26, {rd-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xaf,0x30,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, {rd-sae}, r8 + +// CHECK: vcvtusi2sd xmm14, xmm26, {rz-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xaf,0x70,0x7b,0xf0] + vcvtusi2sd xmm14, xmm26, {rz-sae}, r8 + +// CHECK: vcvtusi2sd xmm14, xmm26, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xaf,0x00,0x7b,0x31] + vcvtusi2sd xmm14, xmm26, qword ptr [rcx] + +// CHECK: vcvtusi2sd xmm14, xmm26, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xaf,0x00,0x7b,0xb4,0xf0,0x23,0x01,0x00,0x00] + vcvtusi2sd xmm14, xmm26, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtusi2sd xmm14, xmm26, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0xaf,0x00,0x7b,0x72,0x7f] + vcvtusi2sd xmm14, xmm26, qword ptr [rdx + 1016] + +// CHECK: vcvtusi2sd xmm14, xmm26, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0xaf,0x00,0x7b,0xb2,0x00,0x04,0x00,0x00] + vcvtusi2sd xmm14, xmm26, qword ptr [rdx + 1024] + +// CHECK: vcvtusi2sd xmm14, xmm26, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0xaf,0x00,0x7b,0x72,0x80] + vcvtusi2sd xmm14, xmm26, qword ptr [rdx - 1024] + +// CHECK: vcvtusi2sd xmm14, xmm26, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0xaf,0x00,0x7b,0xb2,0xf8,0xfb,0xff,0xff] + vcvtusi2sd xmm14, xmm26, qword ptr [rdx - 1032] + +// CHECK: vcvtusi2ss xmm5, xmm26, eax +// CHECK: encoding: [0x62,0xf1,0x2e,0x00,0x7b,0xe8] + vcvtusi2ss xmm5, xmm26, eax + +// CHECK: vcvtusi2ss xmm5, xmm26, {rn-sae}, eax +// CHECK: encoding: [0x62,0xf1,0x2e,0x10,0x7b,0xe8] + vcvtusi2ss xmm5, xmm26, {rn-sae}, eax + +// CHECK: vcvtusi2ss xmm5, xmm26, {ru-sae}, eax +// CHECK: encoding: [0x62,0xf1,0x2e,0x50,0x7b,0xe8] + vcvtusi2ss xmm5, xmm26, {ru-sae}, eax + +// CHECK: vcvtusi2ss xmm5, xmm26, {rd-sae}, eax +// CHECK: encoding: [0x62,0xf1,0x2e,0x30,0x7b,0xe8] + vcvtusi2ss xmm5, xmm26, {rd-sae}, eax + +// CHECK: vcvtusi2ss xmm5, xmm26, {rz-sae}, eax +// CHECK: encoding: [0x62,0xf1,0x2e,0x70,0x7b,0xe8] + vcvtusi2ss xmm5, xmm26, {rz-sae}, eax + +// CHECK: vcvtusi2ss xmm5, xmm26, ebp +// CHECK: encoding: [0x62,0xf1,0x2e,0x00,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, ebp + +// CHECK: vcvtusi2ss xmm5, xmm26, {rn-sae}, ebp +// CHECK: encoding: [0x62,0xf1,0x2e,0x10,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, {rn-sae}, ebp + +// CHECK: vcvtusi2ss xmm5, xmm26, {ru-sae}, ebp +// CHECK: encoding: [0x62,0xf1,0x2e,0x50,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, {ru-sae}, ebp + +// CHECK: vcvtusi2ss xmm5, xmm26, {rd-sae}, ebp +// CHECK: encoding: [0x62,0xf1,0x2e,0x30,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, {rd-sae}, ebp + +// CHECK: vcvtusi2ss xmm5, xmm26, {rz-sae}, ebp +// CHECK: encoding: [0x62,0xf1,0x2e,0x70,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, {rz-sae}, ebp + +// CHECK: vcvtusi2ss xmm5, xmm26, r13d +// CHECK: encoding: [0x62,0xd1,0x2e,0x00,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, r13d + +// CHECK: vcvtusi2ss xmm5, xmm26, {rn-sae}, r13d +// CHECK: encoding: [0x62,0xd1,0x2e,0x10,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, {rn-sae}, r13d + +// CHECK: vcvtusi2ss xmm5, xmm26, {ru-sae}, r13d +// CHECK: encoding: [0x62,0xd1,0x2e,0x50,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, {ru-sae}, r13d + +// CHECK: vcvtusi2ss xmm5, xmm26, {rd-sae}, r13d +// CHECK: encoding: [0x62,0xd1,0x2e,0x30,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, {rd-sae}, r13d + +// CHECK: vcvtusi2ss xmm5, xmm26, {rz-sae}, r13d +// CHECK: encoding: [0x62,0xd1,0x2e,0x70,0x7b,0xed] + vcvtusi2ss xmm5, xmm26, {rz-sae}, r13d + +// CHECK: vcvtusi2ss xmm5, xmm26, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x2e,0x00,0x7b,0x29] + vcvtusi2ss xmm5, xmm26, dword ptr [rcx] + +// CHECK: vcvtusi2ss xmm5, xmm26, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x2e,0x00,0x7b,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvtusi2ss xmm5, xmm26, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtusi2ss xmm5, xmm26, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x2e,0x00,0x7b,0x6a,0x7f] + vcvtusi2ss xmm5, xmm26, dword ptr [rdx + 508] + +// CHECK: vcvtusi2ss xmm5, xmm26, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x2e,0x00,0x7b,0xaa,0x00,0x02,0x00,0x00] + vcvtusi2ss xmm5, xmm26, dword ptr [rdx + 512] + +// CHECK: vcvtusi2ss xmm5, xmm26, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x2e,0x00,0x7b,0x6a,0x80] + vcvtusi2ss xmm5, xmm26, dword ptr [rdx - 512] + +// CHECK: vcvtusi2ss xmm5, xmm26, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x2e,0x00,0x7b,0xaa,0xfc,0xfd,0xff,0xff] + vcvtusi2ss xmm5, xmm26, dword ptr [rdx - 516] + +// CHECK: vcvtusi2ss xmm14, xmm22, rax +// CHECK: encoding: [0x62,0x71,0xce,0x00,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, rax + +// CHECK: vcvtusi2ss xmm14, xmm22, {rn-sae}, rax +// CHECK: encoding: [0x62,0x71,0xce,0x10,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, {rn-sae}, rax + +// CHECK: vcvtusi2ss xmm14, xmm22, {ru-sae}, rax +// CHECK: encoding: [0x62,0x71,0xce,0x50,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, {ru-sae}, rax + +// CHECK: vcvtusi2ss xmm14, xmm22, {rd-sae}, rax +// CHECK: encoding: [0x62,0x71,0xce,0x30,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, {rd-sae}, rax + +// CHECK: vcvtusi2ss xmm14, xmm22, {rz-sae}, rax +// CHECK: encoding: [0x62,0x71,0xce,0x70,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, {rz-sae}, rax + +// CHECK: vcvtusi2ss xmm14, xmm22, r8 +// CHECK: encoding: [0x62,0x51,0xce,0x00,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, r8 + +// CHECK: vcvtusi2ss xmm14, xmm22, {rn-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xce,0x10,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, {rn-sae}, r8 + +// CHECK: vcvtusi2ss xmm14, xmm22, {ru-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xce,0x50,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, {ru-sae}, r8 + +// CHECK: vcvtusi2ss xmm14, xmm22, {rd-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xce,0x30,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, {rd-sae}, r8 + +// CHECK: vcvtusi2ss xmm14, xmm22, {rz-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xce,0x70,0x7b,0xf0] + vcvtusi2ss xmm14, xmm22, {rz-sae}, r8 + +// CHECK: vcvtusi2ss xmm14, xmm22, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xce,0x00,0x7b,0x31] + vcvtusi2ss xmm14, xmm22, qword ptr [rcx] + +// CHECK: vcvtusi2ss xmm14, xmm22, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xce,0x00,0x7b,0xb4,0xf0,0x23,0x01,0x00,0x00] + vcvtusi2ss xmm14, xmm22, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvtusi2ss xmm14, xmm22, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0xce,0x00,0x7b,0x72,0x7f] + vcvtusi2ss xmm14, xmm22, qword ptr [rdx + 1016] + +// CHECK: vcvtusi2ss xmm14, xmm22, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0xce,0x00,0x7b,0xb2,0x00,0x04,0x00,0x00] + vcvtusi2ss xmm14, xmm22, qword ptr [rdx + 1024] + +// CHECK: vcvtusi2ss xmm14, xmm22, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0xce,0x00,0x7b,0x72,0x80] + vcvtusi2ss xmm14, xmm22, qword ptr [rdx - 1024] + +// CHECK: vcvtusi2ss xmm14, xmm22, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0xce,0x00,0x7b,0xb2,0xf8,0xfb,0xff,0xff] + vcvtusi2ss xmm14, xmm22, qword ptr [rdx - 1032] + +// CHECK: vscalefpd zmm26, zmm26, zmm28 +// CHECK: encoding: [0x62,0x02,0xad,0x40,0x2c,0xd4] + vscalefpd zmm26, zmm26, zmm28 + +// CHECK: vscalefpd zmm26 {k5}, zmm26, zmm28 +// CHECK: encoding: [0x62,0x02,0xad,0x45,0x2c,0xd4] + vscalefpd zmm26 {k5}, zmm26, zmm28 + +// CHECK: vscalefpd zmm26 {k5} {z}, zmm26, zmm28 +// CHECK: encoding: [0x62,0x02,0xad,0xc5,0x2c,0xd4] + vscalefpd zmm26 {k5} {z}, zmm26, zmm28 + +// CHECK: vscalefpd zmm26, zmm26, zmm28, {rn-sae} +// CHECK: encoding: [0x62,0x02,0xad,0x10,0x2c,0xd4] + vscalefpd zmm26, zmm26, zmm28, {rn-sae} + +// CHECK: vscalefpd zmm26, zmm26, zmm28, {ru-sae} +// CHECK: encoding: [0x62,0x02,0xad,0x50,0x2c,0xd4] + vscalefpd zmm26, zmm26, zmm28, {ru-sae} + +// CHECK: vscalefpd zmm26, zmm26, zmm28, {rd-sae} +// CHECK: encoding: [0x62,0x02,0xad,0x30,0x2c,0xd4] + vscalefpd zmm26, zmm26, zmm28, {rd-sae} + +// CHECK: vscalefpd zmm26, zmm26, zmm28, {rz-sae} +// CHECK: encoding: [0x62,0x02,0xad,0x70,0x2c,0xd4] + vscalefpd zmm26, zmm26, zmm28, {rz-sae} + +// CHECK: vscalefpd zmm26, zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x2c,0x11] + vscalefpd zmm26, zmm26, zmmword ptr [rcx] + +// CHECK: vscalefpd zmm26, zmm26, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xad,0x40,0x2c,0x94,0xf0,0x23,0x01,0x00,0x00] + vscalefpd zmm26, zmm26, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vscalefpd zmm26, zmm26, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x2c,0x11] + vscalefpd zmm26, zmm26, qword ptr [rcx]{1to8} + +// CHECK: vscalefpd zmm26, zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x2c,0x52,0x7f] + vscalefpd zmm26, zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vscalefpd zmm26, zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x2c,0x92,0x00,0x20,0x00,0x00] + vscalefpd zmm26, zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vscalefpd zmm26, zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x2c,0x52,0x80] + vscalefpd zmm26, zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vscalefpd zmm26, zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x2c,0x92,0xc0,0xdf,0xff,0xff] + vscalefpd zmm26, zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vscalefpd zmm26, zmm26, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x2c,0x52,0x7f] + vscalefpd zmm26, zmm26, qword ptr [rdx + 1016]{1to8} + +// CHECK: vscalefpd zmm26, zmm26, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x2c,0x92,0x00,0x04,0x00,0x00] + vscalefpd zmm26, zmm26, qword ptr [rdx + 1024]{1to8} + +// CHECK: vscalefpd zmm26, zmm26, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x2c,0x52,0x80] + vscalefpd zmm26, zmm26, qword ptr [rdx - 1024]{1to8} + +// CHECK: vscalefpd zmm26, zmm26, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x2c,0x92,0xf8,0xfb,0xff,0xff] + vscalefpd zmm26, zmm26, qword ptr [rdx - 1032]{1to8} + +// CHECK: vscalefps zmm19, zmm6, zmm18 +// CHECK: encoding: [0x62,0xa2,0x4d,0x48,0x2c,0xda] + vscalefps zmm19, zmm6, zmm18 + +// CHECK: vscalefps zmm19 {k6}, zmm6, zmm18 +// CHECK: encoding: [0x62,0xa2,0x4d,0x4e,0x2c,0xda] + vscalefps zmm19 {k6}, zmm6, zmm18 + +// CHECK: vscalefps zmm19 {k6} {z}, zmm6, zmm18 +// CHECK: encoding: [0x62,0xa2,0x4d,0xce,0x2c,0xda] + vscalefps zmm19 {k6} {z}, zmm6, zmm18 + +// CHECK: vscalefps zmm19, zmm6, zmm18, {rn-sae} +// CHECK: encoding: [0x62,0xa2,0x4d,0x18,0x2c,0xda] + vscalefps zmm19, zmm6, zmm18, {rn-sae} + +// CHECK: vscalefps zmm19, zmm6, zmm18, {ru-sae} +// CHECK: encoding: [0x62,0xa2,0x4d,0x58,0x2c,0xda] + vscalefps zmm19, zmm6, zmm18, {ru-sae} + +// CHECK: vscalefps zmm19, zmm6, zmm18, {rd-sae} +// CHECK: encoding: [0x62,0xa2,0x4d,0x38,0x2c,0xda] + vscalefps zmm19, zmm6, zmm18, {rd-sae} + +// CHECK: vscalefps zmm19, zmm6, zmm18, {rz-sae} +// CHECK: encoding: [0x62,0xa2,0x4d,0x78,0x2c,0xda] + vscalefps zmm19, zmm6, zmm18, {rz-sae} + +// CHECK: vscalefps zmm19, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x2c,0x19] + vscalefps zmm19, zmm6, zmmword ptr [rcx] + +// CHECK: vscalefps zmm19, zmm6, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x4d,0x48,0x2c,0x9c,0xf0,0x23,0x01,0x00,0x00] + vscalefps zmm19, zmm6, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vscalefps zmm19, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x2c,0x19] + vscalefps zmm19, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vscalefps zmm19, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x2c,0x5a,0x7f] + vscalefps zmm19, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vscalefps zmm19, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x2c,0x9a,0x00,0x20,0x00,0x00] + vscalefps zmm19, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vscalefps zmm19, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x2c,0x5a,0x80] + vscalefps zmm19, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vscalefps zmm19, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x2c,0x9a,0xc0,0xdf,0xff,0xff] + vscalefps zmm19, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vscalefps zmm19, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x2c,0x5a,0x7f] + vscalefps zmm19, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vscalefps zmm19, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x2c,0x9a,0x00,0x02,0x00,0x00] + vscalefps zmm19, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vscalefps zmm19, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x2c,0x5a,0x80] + vscalefps zmm19, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vscalefps zmm19, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x2c,0x9a,0xfc,0xfd,0xff,0xff] + vscalefps zmm19, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vscalefsd xmm21, xmm22, xmm21 +// CHECK: encoding: [0x62,0xa2,0xcd,0x00,0x2d,0xed] + vscalefsd xmm21, xmm22, xmm21 + +// CHECK: vscalefsd xmm21 {k2}, xmm22, xmm21 +// CHECK: encoding: [0x62,0xa2,0xcd,0x02,0x2d,0xed] + vscalefsd xmm21 {k2}, xmm22, xmm21 + +// CHECK: vscalefsd xmm21 {k2} {z}, xmm22, xmm21 +// CHECK: encoding: [0x62,0xa2,0xcd,0x82,0x2d,0xed] + vscalefsd xmm21 {k2} {z}, xmm22, xmm21 + +// CHECK: vscalefsd xmm21, xmm22, xmm21, {rn-sae} +// CHECK: encoding: [0x62,0xa2,0xcd,0x10,0x2d,0xed] + vscalefsd xmm21, xmm22, xmm21, {rn-sae} + +// CHECK: vscalefsd xmm21, xmm22, xmm21, {ru-sae} +// CHECK: encoding: [0x62,0xa2,0xcd,0x50,0x2d,0xed] + vscalefsd xmm21, xmm22, xmm21, {ru-sae} + +// CHECK: vscalefsd xmm21, xmm22, xmm21, {rd-sae} +// CHECK: encoding: [0x62,0xa2,0xcd,0x30,0x2d,0xed] + vscalefsd xmm21, xmm22, xmm21, {rd-sae} + +// CHECK: vscalefsd xmm21, xmm22, xmm21, {rz-sae} +// CHECK: encoding: [0x62,0xa2,0xcd,0x70,0x2d,0xed] + vscalefsd xmm21, xmm22, xmm21, {rz-sae} + +// CHECK: vscalefsd xmm21, xmm22, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x2d,0x29] + vscalefsd xmm21, xmm22, qword ptr [rcx] + +// CHECK: vscalefsd xmm21, xmm22, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xcd,0x00,0x2d,0xac,0xf0,0x23,0x01,0x00,0x00] + vscalefsd xmm21, xmm22, qword ptr [rax + 8*r14 + 291] + +// CHECK: vscalefsd xmm21, xmm22, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x2d,0x6a,0x7f] + vscalefsd xmm21, xmm22, qword ptr [rdx + 1016] + +// CHECK: vscalefsd xmm21, xmm22, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x2d,0xaa,0x00,0x04,0x00,0x00] + vscalefsd xmm21, xmm22, qword ptr [rdx + 1024] + +// CHECK: vscalefsd xmm21, xmm22, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x2d,0x6a,0x80] + vscalefsd xmm21, xmm22, qword ptr [rdx - 1024] + +// CHECK: vscalefsd xmm21, xmm22, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x2d,0xaa,0xf8,0xfb,0xff,0xff] + vscalefsd xmm21, xmm22, qword ptr [rdx - 1032] + +// CHECK: vscalefss xmm13, xmm15, xmm23 +// CHECK: encoding: [0x62,0x32,0x05,0x08,0x2d,0xef] + vscalefss xmm13, xmm15, xmm23 + +// CHECK: vscalefss xmm13 {k3}, xmm15, xmm23 +// CHECK: encoding: [0x62,0x32,0x05,0x0b,0x2d,0xef] + vscalefss xmm13 {k3}, xmm15, xmm23 + +// CHECK: vscalefss xmm13 {k3} {z}, xmm15, xmm23 +// CHECK: encoding: [0x62,0x32,0x05,0x8b,0x2d,0xef] + vscalefss xmm13 {k3} {z}, xmm15, xmm23 + +// CHECK: vscalefss xmm13, xmm15, xmm23, {rn-sae} +// CHECK: encoding: [0x62,0x32,0x05,0x18,0x2d,0xef] + vscalefss xmm13, xmm15, xmm23, {rn-sae} + +// CHECK: vscalefss xmm13, xmm15, xmm23, {ru-sae} +// CHECK: encoding: [0x62,0x32,0x05,0x58,0x2d,0xef] + vscalefss xmm13, xmm15, xmm23, {ru-sae} + +// CHECK: vscalefss xmm13, xmm15, xmm23, {rd-sae} +// CHECK: encoding: [0x62,0x32,0x05,0x38,0x2d,0xef] + vscalefss xmm13, xmm15, xmm23, {rd-sae} + +// CHECK: vscalefss xmm13, xmm15, xmm23, {rz-sae} +// CHECK: encoding: [0x62,0x32,0x05,0x78,0x2d,0xef] + vscalefss xmm13, xmm15, xmm23, {rz-sae} + +// CHECK: vscalefss xmm13, xmm15, dword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x05,0x08,0x2d,0x29] + vscalefss xmm13, xmm15, dword ptr [rcx] + +// CHECK: vscalefss xmm13, xmm15, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x05,0x08,0x2d,0xac,0xf0,0x23,0x01,0x00,0x00] + vscalefss xmm13, xmm15, dword ptr [rax + 8*r14 + 291] + +// CHECK: vscalefss xmm13, xmm15, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x72,0x05,0x08,0x2d,0x6a,0x7f] + vscalefss xmm13, xmm15, dword ptr [rdx + 508] + +// CHECK: vscalefss xmm13, xmm15, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x72,0x05,0x08,0x2d,0xaa,0x00,0x02,0x00,0x00] + vscalefss xmm13, xmm15, dword ptr [rdx + 512] + +// CHECK: vscalefss xmm13, xmm15, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x72,0x05,0x08,0x2d,0x6a,0x80] + vscalefss xmm13, xmm15, dword ptr [rdx - 512] + +// CHECK: vscalefss xmm13, xmm15, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x72,0x05,0x08,0x2d,0xaa,0xfc,0xfd,0xff,0xff] + vscalefss xmm13, xmm15, dword ptr [rdx - 516] + +// CHECK: vfixupimmps zmm15, zmm26, zmm2, 171 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x54,0xfa,0xab] + vfixupimmps zmm15, zmm26, zmm2, 171 + +// CHECK: vfixupimmps zmm15 {k4}, zmm26, zmm2, 171 +// CHECK: encoding: [0x62,0x73,0x2d,0x44,0x54,0xfa,0xab] + vfixupimmps zmm15 {k4}, zmm26, zmm2, 171 + +// CHECK: vfixupimmps zmm15 {k4} {z}, zmm26, zmm2, 171 +// CHECK: encoding: [0x62,0x73,0x2d,0xc4,0x54,0xfa,0xab] + vfixupimmps zmm15 {k4} {z}, zmm26, zmm2, 171 + +// CHECK: vfixupimmps zmm15, zmm26, zmm2, {sae}, 171 +// CHECK: encoding: [0x62,0x73,0x2d,0x10,0x54,0xfa,0xab] + vfixupimmps zmm15, zmm26, zmm2, {sae}, 171 + +// CHECK: vfixupimmps zmm15, zmm26, zmm2, 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x54,0xfa,0x7b] + vfixupimmps zmm15, zmm26, zmm2, 123 + +// CHECK: vfixupimmps zmm15, zmm26, zmm2, {sae}, 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x10,0x54,0xfa,0x7b] + vfixupimmps zmm15, zmm26, zmm2, {sae}, 123 + +// CHECK: vfixupimmps zmm15, zmm26, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x54,0x39,0x7b] + vfixupimmps zmm15, zmm26, zmmword ptr [rcx], 123 + +// CHECK: vfixupimmps zmm15, zmm26, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0x2d,0x40,0x54,0xbc,0xf0,0x23,0x01,0x00,0x00,0x7b] + vfixupimmps zmm15, zmm26, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vfixupimmps zmm15, zmm26, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x50,0x54,0x39,0x7b] + vfixupimmps zmm15, zmm26, dword ptr [rcx]{1to16}, 123 + +// CHECK: vfixupimmps zmm15, zmm26, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x54,0x7a,0x7f,0x7b] + vfixupimmps zmm15, zmm26, zmmword ptr [rdx + 8128], 123 + +// CHECK: vfixupimmps zmm15, zmm26, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x54,0xba,0x00,0x20,0x00,0x00,0x7b] + vfixupimmps zmm15, zmm26, zmmword ptr [rdx + 8192], 123 + +// CHECK: vfixupimmps zmm15, zmm26, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x54,0x7a,0x80,0x7b] + vfixupimmps zmm15, zmm26, zmmword ptr [rdx - 8192], 123 + +// CHECK: vfixupimmps zmm15, zmm26, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x40,0x54,0xba,0xc0,0xdf,0xff,0xff,0x7b] + vfixupimmps zmm15, zmm26, zmmword ptr [rdx - 8256], 123 + +// CHECK: vfixupimmps zmm15, zmm26, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x50,0x54,0x7a,0x7f,0x7b] + vfixupimmps zmm15, zmm26, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vfixupimmps zmm15, zmm26, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x50,0x54,0xba,0x00,0x02,0x00,0x00,0x7b] + vfixupimmps zmm15, zmm26, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vfixupimmps zmm15, zmm26, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x50,0x54,0x7a,0x80,0x7b] + vfixupimmps zmm15, zmm26, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vfixupimmps zmm15, zmm26, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x2d,0x50,0x54,0xba,0xfc,0xfd,0xff,0xff,0x7b] + vfixupimmps zmm15, zmm26, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vfixupimmpd zmm9, zmm21, zmm19, 171 +// CHECK: encoding: [0x62,0x33,0xd5,0x40,0x54,0xcb,0xab] + vfixupimmpd zmm9, zmm21, zmm19, 171 + +// CHECK: vfixupimmpd zmm9 {k2}, zmm21, zmm19, 171 +// CHECK: encoding: [0x62,0x33,0xd5,0x42,0x54,0xcb,0xab] + vfixupimmpd zmm9 {k2}, zmm21, zmm19, 171 + +// CHECK: vfixupimmpd zmm9 {k2} {z}, zmm21, zmm19, 171 +// CHECK: encoding: [0x62,0x33,0xd5,0xc2,0x54,0xcb,0xab] + vfixupimmpd zmm9 {k2} {z}, zmm21, zmm19, 171 + +// CHECK: vfixupimmpd zmm9, zmm21, zmm19, {sae}, 171 +// CHECK: encoding: [0x62,0x33,0xd5,0x10,0x54,0xcb,0xab] + vfixupimmpd zmm9, zmm21, zmm19, {sae}, 171 + +// CHECK: vfixupimmpd zmm9, zmm21, zmm19, 123 +// CHECK: encoding: [0x62,0x33,0xd5,0x40,0x54,0xcb,0x7b] + vfixupimmpd zmm9, zmm21, zmm19, 123 + +// CHECK: vfixupimmpd zmm9, zmm21, zmm19, {sae}, 123 +// CHECK: encoding: [0x62,0x33,0xd5,0x10,0x54,0xcb,0x7b] + vfixupimmpd zmm9, zmm21, zmm19, {sae}, 123 + +// CHECK: vfixupimmpd zmm9, zmm21, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x40,0x54,0x09,0x7b] + vfixupimmpd zmm9, zmm21, zmmword ptr [rcx], 123 + +// CHECK: vfixupimmpd zmm9, zmm21, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0xd5,0x40,0x54,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vfixupimmpd zmm9, zmm21, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vfixupimmpd zmm9, zmm21, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x50,0x54,0x09,0x7b] + vfixupimmpd zmm9, zmm21, qword ptr [rcx]{1to8}, 123 + +// CHECK: vfixupimmpd zmm9, zmm21, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x40,0x54,0x4a,0x7f,0x7b] + vfixupimmpd zmm9, zmm21, zmmword ptr [rdx + 8128], 123 + +// CHECK: vfixupimmpd zmm9, zmm21, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x40,0x54,0x8a,0x00,0x20,0x00,0x00,0x7b] + vfixupimmpd zmm9, zmm21, zmmword ptr [rdx + 8192], 123 + +// CHECK: vfixupimmpd zmm9, zmm21, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x40,0x54,0x4a,0x80,0x7b] + vfixupimmpd zmm9, zmm21, zmmword ptr [rdx - 8192], 123 + +// CHECK: vfixupimmpd zmm9, zmm21, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x40,0x54,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vfixupimmpd zmm9, zmm21, zmmword ptr [rdx - 8256], 123 + +// CHECK: vfixupimmpd zmm9, zmm21, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x50,0x54,0x4a,0x7f,0x7b] + vfixupimmpd zmm9, zmm21, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vfixupimmpd zmm9, zmm21, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x50,0x54,0x8a,0x00,0x04,0x00,0x00,0x7b] + vfixupimmpd zmm9, zmm21, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vfixupimmpd zmm9, zmm21, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x50,0x54,0x4a,0x80,0x7b] + vfixupimmpd zmm9, zmm21, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vfixupimmpd zmm9, zmm21, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x50,0x54,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + vfixupimmpd zmm9, zmm21, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vfixupimmss xmm15, xmm18, xmm28, 171 +// CHECK: encoding: [0x62,0x13,0x6d,0x00,0x55,0xfc,0xab] + vfixupimmss xmm15, xmm18, xmm28, 171 + +// CHECK: vfixupimmss xmm15 {k5}, xmm18, xmm28, 171 +// CHECK: encoding: [0x62,0x13,0x6d,0x05,0x55,0xfc,0xab] + vfixupimmss xmm15 {k5}, xmm18, xmm28, 171 + +// CHECK: vfixupimmss xmm15 {k5} {z}, xmm18, xmm28, 171 +// CHECK: encoding: [0x62,0x13,0x6d,0x85,0x55,0xfc,0xab] + vfixupimmss xmm15 {k5} {z}, xmm18, xmm28, 171 + +// CHECK: vfixupimmss xmm15, xmm18, xmm28, {sae}, 171 +// CHECK: encoding: [0x62,0x13,0x6d,0x10,0x55,0xfc,0xab] + vfixupimmss xmm15, xmm18, xmm28, {sae}, 171 + +// CHECK: vfixupimmss xmm15, xmm18, xmm28, 123 +// CHECK: encoding: [0x62,0x13,0x6d,0x00,0x55,0xfc,0x7b] + vfixupimmss xmm15, xmm18, xmm28, 123 + +// CHECK: vfixupimmss xmm15, xmm18, xmm28, {sae}, 123 +// CHECK: encoding: [0x62,0x13,0x6d,0x10,0x55,0xfc,0x7b] + vfixupimmss xmm15, xmm18, xmm28, {sae}, 123 + +// CHECK: vfixupimmss xmm15, xmm18, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x00,0x55,0x39,0x7b] + vfixupimmss xmm15, xmm18, dword ptr [rcx], 123 + +// CHECK: vfixupimmss xmm15, xmm18, dword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0x6d,0x00,0x55,0xbc,0xf0,0x23,0x01,0x00,0x00,0x7b] + vfixupimmss xmm15, xmm18, dword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vfixupimmss xmm15, xmm18, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x00,0x55,0x7a,0x7f,0x7b] + vfixupimmss xmm15, xmm18, dword ptr [rdx + 508], 123 + +// CHECK: vfixupimmss xmm15, xmm18, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x00,0x55,0xba,0x00,0x02,0x00,0x00,0x7b] + vfixupimmss xmm15, xmm18, dword ptr [rdx + 512], 123 + +// CHECK: vfixupimmss xmm15, xmm18, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x00,0x55,0x7a,0x80,0x7b] + vfixupimmss xmm15, xmm18, dword ptr [rdx - 512], 123 + +// CHECK: vfixupimmss xmm15, xmm18, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0x73,0x6d,0x00,0x55,0xba,0xfc,0xfd,0xff,0xff,0x7b] + vfixupimmss xmm15, xmm18, dword ptr [rdx - 516], 123 + +// CHECK: vfixupimmsd xmm13, xmm26, xmm5, 171 +// CHECK: encoding: [0x62,0x73,0xad,0x00,0x55,0xed,0xab] + vfixupimmsd xmm13, xmm26, xmm5, 171 + +// CHECK: vfixupimmsd xmm13 {k6}, xmm26, xmm5, 171 +// CHECK: encoding: [0x62,0x73,0xad,0x06,0x55,0xed,0xab] + vfixupimmsd xmm13 {k6}, xmm26, xmm5, 171 + +// CHECK: vfixupimmsd xmm13 {k6} {z}, xmm26, xmm5, 171 +// CHECK: encoding: [0x62,0x73,0xad,0x86,0x55,0xed,0xab] + vfixupimmsd xmm13 {k6} {z}, xmm26, xmm5, 171 + +// CHECK: vfixupimmsd xmm13, xmm26, xmm5, {sae}, 171 +// CHECK: encoding: [0x62,0x73,0xad,0x10,0x55,0xed,0xab] + vfixupimmsd xmm13, xmm26, xmm5, {sae}, 171 + +// CHECK: vfixupimmsd xmm13, xmm26, xmm5, 123 +// CHECK: encoding: [0x62,0x73,0xad,0x00,0x55,0xed,0x7b] + vfixupimmsd xmm13, xmm26, xmm5, 123 + +// CHECK: vfixupimmsd xmm13, xmm26, xmm5, {sae}, 123 +// CHECK: encoding: [0x62,0x73,0xad,0x10,0x55,0xed,0x7b] + vfixupimmsd xmm13, xmm26, xmm5, {sae}, 123 + +// CHECK: vfixupimmsd xmm13, xmm26, qword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0xad,0x00,0x55,0x29,0x7b] + vfixupimmsd xmm13, xmm26, qword ptr [rcx], 123 + +// CHECK: vfixupimmsd xmm13, xmm26, qword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0xad,0x00,0x55,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vfixupimmsd xmm13, xmm26, qword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vfixupimmsd xmm13, xmm26, qword ptr [rdx + 1016], 123 +// CHECK: encoding: [0x62,0x73,0xad,0x00,0x55,0x6a,0x7f,0x7b] + vfixupimmsd xmm13, xmm26, qword ptr [rdx + 1016], 123 + +// CHECK: vfixupimmsd xmm13, xmm26, qword ptr [rdx + 1024], 123 +// CHECK: encoding: [0x62,0x73,0xad,0x00,0x55,0xaa,0x00,0x04,0x00,0x00,0x7b] + vfixupimmsd xmm13, xmm26, qword ptr [rdx + 1024], 123 + +// CHECK: vfixupimmsd xmm13, xmm26, qword ptr [rdx - 1024], 123 +// CHECK: encoding: [0x62,0x73,0xad,0x00,0x55,0x6a,0x80,0x7b] + vfixupimmsd xmm13, xmm26, qword ptr [rdx - 1024], 123 + +// CHECK: vfixupimmsd xmm13, xmm26, qword ptr [rdx - 1032], 123 +// CHECK: encoding: [0x62,0x73,0xad,0x00,0x55,0xaa,0xf8,0xfb,0xff,0xff,0x7b] + vfixupimmsd xmm13, xmm26, qword ptr [rdx - 1032], 123 + +// CHECK: vpslld zmm29, zmm24, 171 +// CHECK: encoding: [0x62,0x91,0x15,0x40,0x72,0xf0,0xab] + vpslld zmm29, zmm24, 171 + +// CHECK: vpslld zmm29 {k6}, zmm24, 171 +// CHECK: encoding: [0x62,0x91,0x15,0x46,0x72,0xf0,0xab] + vpslld zmm29 {k6}, zmm24, 171 + +// CHECK: vpslld zmm29 {k6} {z}, zmm24, 171 +// CHECK: encoding: [0x62,0x91,0x15,0xc6,0x72,0xf0,0xab] + vpslld zmm29 {k6} {z}, zmm24, 171 + +// CHECK: vpslld zmm29, zmm24, 123 +// CHECK: encoding: [0x62,0x91,0x15,0x40,0x72,0xf0,0x7b] + vpslld zmm29, zmm24, 123 + +// CHECK: vpslld zmm29, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0x72,0x31,0x7b] + vpslld zmm29, zmmword ptr [rcx], 123 + +// CHECK: vpslld zmm29, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x15,0x40,0x72,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpslld zmm29, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpslld zmm29, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0x72,0x31,0x7b] + vpslld zmm29, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpslld zmm29, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0x72,0x72,0x7f,0x7b] + vpslld zmm29, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpslld zmm29, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0x72,0xb2,0x00,0x20,0x00,0x00,0x7b] + vpslld zmm29, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpslld zmm29, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0x72,0x72,0x80,0x7b] + vpslld zmm29, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpslld zmm29, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0x72,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vpslld zmm29, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpslld zmm29, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0x72,0x72,0x7f,0x7b] + vpslld zmm29, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpslld zmm29, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0x72,0xb2,0x00,0x02,0x00,0x00,0x7b] + vpslld zmm29, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpslld zmm29, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0x72,0x72,0x80,0x7b] + vpslld zmm29, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpslld zmm29, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0x72,0xb2,0xfc,0xfd,0xff,0xff,0x7b] + vpslld zmm29, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpsllq zmm6, zmm11, 171 +// CHECK: encoding: [0x62,0xd1,0xcd,0x48,0x73,0xf3,0xab] + vpsllq zmm6, zmm11, 171 + +// CHECK: vpsllq zmm6 {k2}, zmm11, 171 +// CHECK: encoding: [0x62,0xd1,0xcd,0x4a,0x73,0xf3,0xab] + vpsllq zmm6 {k2}, zmm11, 171 + +// CHECK: vpsllq zmm6 {k2} {z}, zmm11, 171 +// CHECK: encoding: [0x62,0xd1,0xcd,0xca,0x73,0xf3,0xab] + vpsllq zmm6 {k2} {z}, zmm11, 171 + +// CHECK: vpsllq zmm6, zmm11, 123 +// CHECK: encoding: [0x62,0xd1,0xcd,0x48,0x73,0xf3,0x7b] + vpsllq zmm6, zmm11, 123 + +// CHECK: vpsllq zmm6, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0x31,0x7b] + vpsllq zmm6, zmmword ptr [rcx], 123 + +// CHECK: vpsllq zmm6, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0xcd,0x48,0x73,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpsllq zmm6, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpsllq zmm6, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0x31,0x7b] + vpsllq zmm6, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpsllq zmm6, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0x72,0x7f,0x7b] + vpsllq zmm6, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsllq zmm6, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0xb2,0x00,0x20,0x00,0x00,0x7b] + vpsllq zmm6, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsllq zmm6, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0x72,0x80,0x7b] + vpsllq zmm6, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsllq zmm6, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vpsllq zmm6, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsllq zmm6, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0x72,0x7f,0x7b] + vpsllq zmm6, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpsllq zmm6, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0xb2,0x00,0x04,0x00,0x00,0x7b] + vpsllq zmm6, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpsllq zmm6, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0x72,0x80,0x7b] + vpsllq zmm6, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpsllq zmm6, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0xb2,0xf8,0xfb,0xff,0xff,0x7b] + vpsllq zmm6, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpsrad zmm27, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0xe5,0xab] + vpsrad zmm27, zmm5, 171 + +// CHECK: vpsrad zmm27 {k5}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x25,0x45,0x72,0xe5,0xab] + vpsrad zmm27 {k5}, zmm5, 171 + +// CHECK: vpsrad zmm27 {k5} {z}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x25,0xc5,0x72,0xe5,0xab] + vpsrad zmm27 {k5} {z}, zmm5, 171 + +// CHECK: vpsrad zmm27, zmm5, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0xe5,0x7b] + vpsrad zmm27, zmm5, 123 + +// CHECK: vpsrad zmm27, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0x21,0x7b] + vpsrad zmm27, zmmword ptr [rcx], 123 + +// CHECK: vpsrad zmm27, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x25,0x40,0x72,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpsrad zmm27, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpsrad zmm27, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0x21,0x7b] + vpsrad zmm27, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpsrad zmm27, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0x62,0x7f,0x7b] + vpsrad zmm27, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsrad zmm27, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0xa2,0x00,0x20,0x00,0x00,0x7b] + vpsrad zmm27, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsrad zmm27, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0x62,0x80,0x7b] + vpsrad zmm27, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsrad zmm27, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + vpsrad zmm27, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsrad zmm27, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0x62,0x7f,0x7b] + vpsrad zmm27, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpsrad zmm27, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0xa2,0x00,0x02,0x00,0x00,0x7b] + vpsrad zmm27, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpsrad zmm27, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0x62,0x80,0x7b] + vpsrad zmm27, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpsrad zmm27, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0xa2,0xfc,0xfd,0xff,0xff,0x7b] + vpsrad zmm27, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpsraq zmm29, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x95,0x40,0x72,0xe5,0xab] + vpsraq zmm29, zmm5, 171 + +// CHECK: vpsraq zmm29 {k4}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x95,0x44,0x72,0xe5,0xab] + vpsraq zmm29 {k4}, zmm5, 171 + +// CHECK: vpsraq zmm29 {k4} {z}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x95,0xc4,0x72,0xe5,0xab] + vpsraq zmm29 {k4} {z}, zmm5, 171 + +// CHECK: vpsraq zmm29, zmm5, 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x40,0x72,0xe5,0x7b] + vpsraq zmm29, zmm5, 123 + +// CHECK: vpsraq zmm29, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x40,0x72,0x21,0x7b] + vpsraq zmm29, zmmword ptr [rcx], 123 + +// CHECK: vpsraq zmm29, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x95,0x40,0x72,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpsraq zmm29, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vpsraq zmm29, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x50,0x72,0x21,0x7b] + vpsraq zmm29, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpsraq zmm29, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x40,0x72,0x62,0x7f,0x7b] + vpsraq zmm29, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsraq zmm29, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x40,0x72,0xa2,0x00,0x20,0x00,0x00,0x7b] + vpsraq zmm29, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsraq zmm29, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x40,0x72,0x62,0x80,0x7b] + vpsraq zmm29, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsraq zmm29, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x40,0x72,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + vpsraq zmm29, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsraq zmm29, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x50,0x72,0x62,0x7f,0x7b] + vpsraq zmm29, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpsraq zmm29, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x50,0x72,0xa2,0x00,0x04,0x00,0x00,0x7b] + vpsraq zmm29, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpsraq zmm29, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x50,0x72,0x62,0x80,0x7b] + vpsraq zmm29, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpsraq zmm29, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x95,0x50,0x72,0xa2,0xf8,0xfb,0xff,0xff,0x7b] + vpsraq zmm29, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vprolvd zmm6, zmm29, zmm16 +// CHECK: encoding: [0x62,0xb2,0x15,0x40,0x15,0xf0] + vprolvd zmm6, zmm29, zmm16 + +// CHECK: vprolvd zmm6 {k2}, zmm29, zmm16 +// CHECK: encoding: [0x62,0xb2,0x15,0x42,0x15,0xf0] + vprolvd zmm6 {k2}, zmm29, zmm16 + +// CHECK: vprolvd zmm6 {k2} {z}, zmm29, zmm16 +// CHECK: encoding: [0x62,0xb2,0x15,0xc2,0x15,0xf0] + vprolvd zmm6 {k2} {z}, zmm29, zmm16 + +// CHECK: vprolvd zmm6, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x15,0x40,0x15,0x31] + vprolvd zmm6, zmm29, zmmword ptr [rcx] + +// CHECK: vprolvd zmm6, zmm29, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb2,0x15,0x40,0x15,0xb4,0xf0,0x23,0x01,0x00,0x00] + vprolvd zmm6, zmm29, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vprolvd zmm6, zmm29, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x50,0x15,0x31] + vprolvd zmm6, zmm29, dword ptr [rcx]{1to16} + +// CHECK: vprolvd zmm6, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x15,0x40,0x15,0x72,0x7f] + vprolvd zmm6, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vprolvd zmm6, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x15,0x40,0x15,0xb2,0x00,0x20,0x00,0x00] + vprolvd zmm6, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vprolvd zmm6, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x15,0x40,0x15,0x72,0x80] + vprolvd zmm6, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vprolvd zmm6, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x15,0x40,0x15,0xb2,0xc0,0xdf,0xff,0xff] + vprolvd zmm6, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vprolvd zmm6, zmm29, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x50,0x15,0x72,0x7f] + vprolvd zmm6, zmm29, dword ptr [rdx + 508]{1to16} + +// CHECK: vprolvd zmm6, zmm29, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x50,0x15,0xb2,0x00,0x02,0x00,0x00] + vprolvd zmm6, zmm29, dword ptr [rdx + 512]{1to16} + +// CHECK: vprolvd zmm6, zmm29, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x50,0x15,0x72,0x80] + vprolvd zmm6, zmm29, dword ptr [rdx - 512]{1to16} + +// CHECK: vprolvd zmm6, zmm29, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x15,0x50,0x15,0xb2,0xfc,0xfd,0xff,0xff] + vprolvd zmm6, zmm29, dword ptr [rdx - 516]{1to16} + +// CHECK: vprold zmm10, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x2d,0x48,0x72,0xcd,0xab] + vprold zmm10, zmm5, 171 + +// CHECK: vprold zmm10 {k7}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x2d,0x4f,0x72,0xcd,0xab] + vprold zmm10 {k7}, zmm5, 171 + +// CHECK: vprold zmm10 {k7} {z}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x2d,0xcf,0x72,0xcd,0xab] + vprold zmm10 {k7} {z}, zmm5, 171 + +// CHECK: vprold zmm10, zmm5, 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x48,0x72,0xcd,0x7b] + vprold zmm10, zmm5, 123 + +// CHECK: vprold zmm10, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x48,0x72,0x09,0x7b] + vprold zmm10, zmmword ptr [rcx], 123 + +// CHECK: vprold zmm10, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x2d,0x48,0x72,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vprold zmm10, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vprold zmm10, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x58,0x72,0x09,0x7b] + vprold zmm10, dword ptr [rcx]{1to16}, 123 + +// CHECK: vprold zmm10, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x48,0x72,0x4a,0x7f,0x7b] + vprold zmm10, zmmword ptr [rdx + 8128], 123 + +// CHECK: vprold zmm10, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x48,0x72,0x8a,0x00,0x20,0x00,0x00,0x7b] + vprold zmm10, zmmword ptr [rdx + 8192], 123 + +// CHECK: vprold zmm10, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x48,0x72,0x4a,0x80,0x7b] + vprold zmm10, zmmword ptr [rdx - 8192], 123 + +// CHECK: vprold zmm10, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x48,0x72,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vprold zmm10, zmmword ptr [rdx - 8256], 123 + +// CHECK: vprold zmm10, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x58,0x72,0x4a,0x7f,0x7b] + vprold zmm10, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vprold zmm10, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x58,0x72,0x8a,0x00,0x02,0x00,0x00,0x7b] + vprold zmm10, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vprold zmm10, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x58,0x72,0x4a,0x80,0x7b] + vprold zmm10, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vprold zmm10, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x2d,0x58,0x72,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + vprold zmm10, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vprolvq zmm27, zmm4, zmm6 +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0x15,0xde] + vprolvq zmm27, zmm4, zmm6 + +// CHECK: vprolvq zmm27 {k5}, zmm4, zmm6 +// CHECK: encoding: [0x62,0x62,0xdd,0x4d,0x15,0xde] + vprolvq zmm27 {k5}, zmm4, zmm6 + +// CHECK: vprolvq zmm27 {k5} {z}, zmm4, zmm6 +// CHECK: encoding: [0x62,0x62,0xdd,0xcd,0x15,0xde] + vprolvq zmm27 {k5} {z}, zmm4, zmm6 + +// CHECK: vprolvq zmm27, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0x15,0x19] + vprolvq zmm27, zmm4, zmmword ptr [rcx] + +// CHECK: vprolvq zmm27, zmm4, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0xdd,0x48,0x15,0x9c,0xf0,0x23,0x01,0x00,0x00] + vprolvq zmm27, zmm4, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vprolvq zmm27, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0x15,0x19] + vprolvq zmm27, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vprolvq zmm27, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0x15,0x5a,0x7f] + vprolvq zmm27, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vprolvq zmm27, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0x15,0x9a,0x00,0x20,0x00,0x00] + vprolvq zmm27, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vprolvq zmm27, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0x15,0x5a,0x80] + vprolvq zmm27, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vprolvq zmm27, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xdd,0x48,0x15,0x9a,0xc0,0xdf,0xff,0xff] + vprolvq zmm27, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vprolvq zmm27, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0x15,0x5a,0x7f] + vprolvq zmm27, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vprolvq zmm27, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0x15,0x9a,0x00,0x04,0x00,0x00] + vprolvq zmm27, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vprolvq zmm27, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0x15,0x5a,0x80] + vprolvq zmm27, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vprolvq zmm27, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x58,0x15,0x9a,0xf8,0xfb,0xff,0xff] + vprolvq zmm27, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vprolq zmm19, zmm18, 171 +// CHECK: encoding: [0x62,0xb1,0xe5,0x40,0x72,0xca,0xab] + vprolq zmm19, zmm18, 171 + +// CHECK: vprolq zmm19 {k3}, zmm18, 171 +// CHECK: encoding: [0x62,0xb1,0xe5,0x43,0x72,0xca,0xab] + vprolq zmm19 {k3}, zmm18, 171 + +// CHECK: vprolq zmm19 {k3} {z}, zmm18, 171 +// CHECK: encoding: [0x62,0xb1,0xe5,0xc3,0x72,0xca,0xab] + vprolq zmm19 {k3} {z}, zmm18, 171 + +// CHECK: vprolq zmm19, zmm18, 123 +// CHECK: encoding: [0x62,0xb1,0xe5,0x40,0x72,0xca,0x7b] + vprolq zmm19, zmm18, 123 + +// CHECK: vprolq zmm19, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x40,0x72,0x09,0x7b] + vprolq zmm19, zmmword ptr [rcx], 123 + +// CHECK: vprolq zmm19, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0xe5,0x40,0x72,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vprolq zmm19, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vprolq zmm19, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x50,0x72,0x09,0x7b] + vprolq zmm19, qword ptr [rcx]{1to8}, 123 + +// CHECK: vprolq zmm19, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x40,0x72,0x4a,0x7f,0x7b] + vprolq zmm19, zmmword ptr [rdx + 8128], 123 + +// CHECK: vprolq zmm19, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x40,0x72,0x8a,0x00,0x20,0x00,0x00,0x7b] + vprolq zmm19, zmmword ptr [rdx + 8192], 123 + +// CHECK: vprolq zmm19, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x40,0x72,0x4a,0x80,0x7b] + vprolq zmm19, zmmword ptr [rdx - 8192], 123 + +// CHECK: vprolq zmm19, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x40,0x72,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vprolq zmm19, zmmword ptr [rdx - 8256], 123 + +// CHECK: vprolq zmm19, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x50,0x72,0x4a,0x7f,0x7b] + vprolq zmm19, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vprolq zmm19, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x50,0x72,0x8a,0x00,0x04,0x00,0x00,0x7b] + vprolq zmm19, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vprolq zmm19, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x50,0x72,0x4a,0x80,0x7b] + vprolq zmm19, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vprolq zmm19, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x50,0x72,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + vprolq zmm19, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vprorvd zmm11, zmm20, zmm28 +// CHECK: encoding: [0x62,0x12,0x5d,0x40,0x14,0xdc] + vprorvd zmm11, zmm20, zmm28 + +// CHECK: vprorvd zmm11 {k2}, zmm20, zmm28 +// CHECK: encoding: [0x62,0x12,0x5d,0x42,0x14,0xdc] + vprorvd zmm11 {k2}, zmm20, zmm28 + +// CHECK: vprorvd zmm11 {k2} {z}, zmm20, zmm28 +// CHECK: encoding: [0x62,0x12,0x5d,0xc2,0x14,0xdc] + vprorvd zmm11 {k2} {z}, zmm20, zmm28 + +// CHECK: vprorvd zmm11, zmm20, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x14,0x19] + vprorvd zmm11, zmm20, zmmword ptr [rcx] + +// CHECK: vprorvd zmm11, zmm20, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x5d,0x40,0x14,0x9c,0xf0,0x23,0x01,0x00,0x00] + vprorvd zmm11, zmm20, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vprorvd zmm11, zmm20, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x14,0x19] + vprorvd zmm11, zmm20, dword ptr [rcx]{1to16} + +// CHECK: vprorvd zmm11, zmm20, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x14,0x5a,0x7f] + vprorvd zmm11, zmm20, zmmword ptr [rdx + 8128] + +// CHECK: vprorvd zmm11, zmm20, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x14,0x9a,0x00,0x20,0x00,0x00] + vprorvd zmm11, zmm20, zmmword ptr [rdx + 8192] + +// CHECK: vprorvd zmm11, zmm20, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x14,0x5a,0x80] + vprorvd zmm11, zmm20, zmmword ptr [rdx - 8192] + +// CHECK: vprorvd zmm11, zmm20, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x5d,0x40,0x14,0x9a,0xc0,0xdf,0xff,0xff] + vprorvd zmm11, zmm20, zmmword ptr [rdx - 8256] + +// CHECK: vprorvd zmm11, zmm20, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x14,0x5a,0x7f] + vprorvd zmm11, zmm20, dword ptr [rdx + 508]{1to16} + +// CHECK: vprorvd zmm11, zmm20, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x14,0x9a,0x00,0x02,0x00,0x00] + vprorvd zmm11, zmm20, dword ptr [rdx + 512]{1to16} + +// CHECK: vprorvd zmm11, zmm20, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x14,0x5a,0x80] + vprorvd zmm11, zmm20, dword ptr [rdx - 512]{1to16} + +// CHECK: vprorvd zmm11, zmm20, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x50,0x14,0x9a,0xfc,0xfd,0xff,0xff] + vprorvd zmm11, zmm20, dword ptr [rdx - 516]{1to16} + +// CHECK: vprord zmm9, zmm10, 171 +// CHECK: encoding: [0x62,0xd1,0x35,0x48,0x72,0xc2,0xab] + vprord zmm9, zmm10, 171 + +// CHECK: vprord zmm9 {k7}, zmm10, 171 +// CHECK: encoding: [0x62,0xd1,0x35,0x4f,0x72,0xc2,0xab] + vprord zmm9 {k7}, zmm10, 171 + +// CHECK: vprord zmm9 {k7} {z}, zmm10, 171 +// CHECK: encoding: [0x62,0xd1,0x35,0xcf,0x72,0xc2,0xab] + vprord zmm9 {k7} {z}, zmm10, 171 + +// CHECK: vprord zmm9, zmm10, 123 +// CHECK: encoding: [0x62,0xd1,0x35,0x48,0x72,0xc2,0x7b] + vprord zmm9, zmm10, 123 + +// CHECK: vprord zmm9, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x48,0x72,0x01,0x7b] + vprord zmm9, zmmword ptr [rcx], 123 + +// CHECK: vprord zmm9, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0x35,0x48,0x72,0x84,0xf0,0x23,0x01,0x00,0x00,0x7b] + vprord zmm9, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vprord zmm9, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x58,0x72,0x01,0x7b] + vprord zmm9, dword ptr [rcx]{1to16}, 123 + +// CHECK: vprord zmm9, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x48,0x72,0x42,0x7f,0x7b] + vprord zmm9, zmmword ptr [rdx + 8128], 123 + +// CHECK: vprord zmm9, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x48,0x72,0x82,0x00,0x20,0x00,0x00,0x7b] + vprord zmm9, zmmword ptr [rdx + 8192], 123 + +// CHECK: vprord zmm9, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x48,0x72,0x42,0x80,0x7b] + vprord zmm9, zmmword ptr [rdx - 8192], 123 + +// CHECK: vprord zmm9, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x48,0x72,0x82,0xc0,0xdf,0xff,0xff,0x7b] + vprord zmm9, zmmword ptr [rdx - 8256], 123 + +// CHECK: vprord zmm9, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x58,0x72,0x42,0x7f,0x7b] + vprord zmm9, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vprord zmm9, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x58,0x72,0x82,0x00,0x02,0x00,0x00,0x7b] + vprord zmm9, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vprord zmm9, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x58,0x72,0x42,0x80,0x7b] + vprord zmm9, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vprord zmm9, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x35,0x58,0x72,0x82,0xfc,0xfd,0xff,0xff,0x7b] + vprord zmm9, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vprorvq zmm14, zmm24, zmm1 +// CHECK: encoding: [0x62,0x72,0xbd,0x40,0x14,0xf1] + vprorvq zmm14, zmm24, zmm1 + +// CHECK: vprorvq zmm14 {k7}, zmm24, zmm1 +// CHECK: encoding: [0x62,0x72,0xbd,0x47,0x14,0xf1] + vprorvq zmm14 {k7}, zmm24, zmm1 + +// CHECK: vprorvq zmm14 {k7} {z}, zmm24, zmm1 +// CHECK: encoding: [0x62,0x72,0xbd,0xc7,0x14,0xf1] + vprorvq zmm14 {k7} {z}, zmm24, zmm1 + +// CHECK: vprorvq zmm14, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xbd,0x40,0x14,0x31] + vprorvq zmm14, zmm24, zmmword ptr [rcx] + +// CHECK: vprorvq zmm14, zmm24, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0xbd,0x40,0x14,0xb4,0xf0,0x23,0x01,0x00,0x00] + vprorvq zmm14, zmm24, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vprorvq zmm14, zmm24, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xbd,0x50,0x14,0x31] + vprorvq zmm14, zmm24, qword ptr [rcx]{1to8} + +// CHECK: vprorvq zmm14, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xbd,0x40,0x14,0x72,0x7f] + vprorvq zmm14, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vprorvq zmm14, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xbd,0x40,0x14,0xb2,0x00,0x20,0x00,0x00] + vprorvq zmm14, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vprorvq zmm14, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xbd,0x40,0x14,0x72,0x80] + vprorvq zmm14, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vprorvq zmm14, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xbd,0x40,0x14,0xb2,0xc0,0xdf,0xff,0xff] + vprorvq zmm14, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vprorvq zmm14, zmm24, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xbd,0x50,0x14,0x72,0x7f] + vprorvq zmm14, zmm24, qword ptr [rdx + 1016]{1to8} + +// CHECK: vprorvq zmm14, zmm24, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xbd,0x50,0x14,0xb2,0x00,0x04,0x00,0x00] + vprorvq zmm14, zmm24, qword ptr [rdx + 1024]{1to8} + +// CHECK: vprorvq zmm14, zmm24, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xbd,0x50,0x14,0x72,0x80] + vprorvq zmm14, zmm24, qword ptr [rdx - 1024]{1to8} + +// CHECK: vprorvq zmm14, zmm24, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xbd,0x50,0x14,0xb2,0xf8,0xfb,0xff,0xff] + vprorvq zmm14, zmm24, qword ptr [rdx - 1032]{1to8} + +// CHECK: vprorq zmm21, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xd5,0x40,0x72,0xc1,0xab] + vprorq zmm21, zmm25, 171 + +// CHECK: vprorq zmm21 {k6}, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xd5,0x46,0x72,0xc1,0xab] + vprorq zmm21 {k6}, zmm25, 171 + +// CHECK: vprorq zmm21 {k6} {z}, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xd5,0xc6,0x72,0xc1,0xab] + vprorq zmm21 {k6} {z}, zmm25, 171 + +// CHECK: vprorq zmm21, zmm25, 123 +// CHECK: encoding: [0x62,0x91,0xd5,0x40,0x72,0xc1,0x7b] + vprorq zmm21, zmm25, 123 + +// CHECK: vprorq zmm21, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x40,0x72,0x01,0x7b] + vprorq zmm21, zmmword ptr [rcx], 123 + +// CHECK: vprorq zmm21, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xb1,0xd5,0x40,0x72,0x84,0xf0,0x23,0x01,0x00,0x00,0x7b] + vprorq zmm21, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vprorq zmm21, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x50,0x72,0x01,0x7b] + vprorq zmm21, qword ptr [rcx]{1to8}, 123 + +// CHECK: vprorq zmm21, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x40,0x72,0x42,0x7f,0x7b] + vprorq zmm21, zmmword ptr [rdx + 8128], 123 + +// CHECK: vprorq zmm21, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x40,0x72,0x82,0x00,0x20,0x00,0x00,0x7b] + vprorq zmm21, zmmword ptr [rdx + 8192], 123 + +// CHECK: vprorq zmm21, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x40,0x72,0x42,0x80,0x7b] + vprorq zmm21, zmmword ptr [rdx - 8192], 123 + +// CHECK: vprorq zmm21, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x40,0x72,0x82,0xc0,0xdf,0xff,0xff,0x7b] + vprorq zmm21, zmmword ptr [rdx - 8256], 123 + +// CHECK: vprorq zmm21, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x50,0x72,0x42,0x7f,0x7b] + vprorq zmm21, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vprorq zmm21, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x50,0x72,0x82,0x00,0x04,0x00,0x00,0x7b] + vprorq zmm21, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vprorq zmm21, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x50,0x72,0x42,0x80,0x7b] + vprorq zmm21, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vprorq zmm21, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xd5,0x50,0x72,0x82,0xf8,0xfb,0xff,0xff,0x7b] + vprorq zmm21, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vrndscalepd zmm22, zmm7, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x09,0xf7,0xab] + vrndscalepd zmm22, zmm7, 171 + +// CHECK: vrndscalepd zmm22 {k1}, zmm7, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0x49,0x09,0xf7,0xab] + vrndscalepd zmm22 {k1}, zmm7, 171 + +// CHECK: vrndscalepd zmm22 {k1} {z}, zmm7, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0xc9,0x09,0xf7,0xab] + vrndscalepd zmm22 {k1} {z}, zmm7, 171 + +// CHECK: vrndscalepd zmm22, zmm7, {sae}, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0x18,0x09,0xf7,0xab] + vrndscalepd zmm22, zmm7, {sae}, 171 + +// CHECK: vrndscalepd zmm22, zmm7, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x09,0xf7,0x7b] + vrndscalepd zmm22, zmm7, 123 + +// CHECK: vrndscalepd zmm22, zmm7, {sae}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x18,0x09,0xf7,0x7b] + vrndscalepd zmm22, zmm7, {sae}, 123 + +// CHECK: vrndscalepd zmm22, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x09,0x31,0x7b] + vrndscalepd zmm22, zmmword ptr [rcx], 123 + +// CHECK: vrndscalepd zmm22, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0xa3,0xfd,0x48,0x09,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vrndscalepd zmm22, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vrndscalepd zmm22, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x09,0x31,0x7b] + vrndscalepd zmm22, qword ptr [rcx]{1to8}, 123 + +// CHECK: vrndscalepd zmm22, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x09,0x72,0x7f,0x7b] + vrndscalepd zmm22, zmmword ptr [rdx + 8128], 123 + +// CHECK: vrndscalepd zmm22, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x09,0xb2,0x00,0x20,0x00,0x00,0x7b] + vrndscalepd zmm22, zmmword ptr [rdx + 8192], 123 + +// CHECK: vrndscalepd zmm22, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x09,0x72,0x80,0x7b] + vrndscalepd zmm22, zmmword ptr [rdx - 8192], 123 + +// CHECK: vrndscalepd zmm22, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x09,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vrndscalepd zmm22, zmmword ptr [rdx - 8256], 123 + +// CHECK: vrndscalepd zmm22, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x09,0x72,0x7f,0x7b] + vrndscalepd zmm22, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vrndscalepd zmm22, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x09,0xb2,0x00,0x04,0x00,0x00,0x7b] + vrndscalepd zmm22, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vrndscalepd zmm22, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x09,0x72,0x80,0x7b] + vrndscalepd zmm22, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vrndscalepd zmm22, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x58,0x09,0xb2,0xf8,0xfb,0xff,0xff,0x7b] + vrndscalepd zmm22, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vrndscaleps zmm13, zmm7, 171 +// CHECK: encoding: [0x62,0x73,0x7d,0x48,0x08,0xef,0xab] + vrndscaleps zmm13, zmm7, 171 + +// CHECK: vrndscaleps zmm13 {k1}, zmm7, 171 +// CHECK: encoding: [0x62,0x73,0x7d,0x49,0x08,0xef,0xab] + vrndscaleps zmm13 {k1}, zmm7, 171 + +// CHECK: vrndscaleps zmm13 {k1} {z}, zmm7, 171 +// CHECK: encoding: [0x62,0x73,0x7d,0xc9,0x08,0xef,0xab] + vrndscaleps zmm13 {k1} {z}, zmm7, 171 + +// CHECK: vrndscaleps zmm13, zmm7, {sae}, 171 +// CHECK: encoding: [0x62,0x73,0x7d,0x18,0x08,0xef,0xab] + vrndscaleps zmm13, zmm7, {sae}, 171 + +// CHECK: vrndscaleps zmm13, zmm7, 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x48,0x08,0xef,0x7b] + vrndscaleps zmm13, zmm7, 123 + +// CHECK: vrndscaleps zmm13, zmm7, {sae}, 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x18,0x08,0xef,0x7b] + vrndscaleps zmm13, zmm7, {sae}, 123 + +// CHECK: vrndscaleps zmm13, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x48,0x08,0x29,0x7b] + vrndscaleps zmm13, zmmword ptr [rcx], 123 + +// CHECK: vrndscaleps zmm13, zmmword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0x7d,0x48,0x08,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vrndscaleps zmm13, zmmword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vrndscaleps zmm13, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x58,0x08,0x29,0x7b] + vrndscaleps zmm13, dword ptr [rcx]{1to16}, 123 + +// CHECK: vrndscaleps zmm13, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x48,0x08,0x6a,0x7f,0x7b] + vrndscaleps zmm13, zmmword ptr [rdx + 8128], 123 + +// CHECK: vrndscaleps zmm13, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x48,0x08,0xaa,0x00,0x20,0x00,0x00,0x7b] + vrndscaleps zmm13, zmmword ptr [rdx + 8192], 123 + +// CHECK: vrndscaleps zmm13, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x48,0x08,0x6a,0x80,0x7b] + vrndscaleps zmm13, zmmword ptr [rdx - 8192], 123 + +// CHECK: vrndscaleps zmm13, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x48,0x08,0xaa,0xc0,0xdf,0xff,0xff,0x7b] + vrndscaleps zmm13, zmmword ptr [rdx - 8256], 123 + +// CHECK: vrndscaleps zmm13, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x58,0x08,0x6a,0x7f,0x7b] + vrndscaleps zmm13, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vrndscaleps zmm13, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x58,0x08,0xaa,0x00,0x02,0x00,0x00,0x7b] + vrndscaleps zmm13, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vrndscaleps zmm13, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x58,0x08,0x6a,0x80,0x7b] + vrndscaleps zmm13, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vrndscaleps zmm13, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x58,0x08,0xaa,0xfc,0xfd,0xff,0xff,0x7b] + vrndscaleps zmm13, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vrndscalesd xmm25, xmm12, xmm15, 171 +// CHECK: encoding: [0x62,0x43,0x9d,0x08,0x0b,0xcf,0xab] + vrndscalesd xmm25, xmm12, xmm15, 171 + +// CHECK: vrndscalesd xmm25 {k6}, xmm12, xmm15, 171 +// CHECK: encoding: [0x62,0x43,0x9d,0x0e,0x0b,0xcf,0xab] + vrndscalesd xmm25 {k6}, xmm12, xmm15, 171 + +// CHECK: vrndscalesd xmm25 {k6} {z}, xmm12, xmm15, 171 +// CHECK: encoding: [0x62,0x43,0x9d,0x8e,0x0b,0xcf,0xab] + vrndscalesd xmm25 {k6} {z}, xmm12, xmm15, 171 + +// CHECK: vrndscalesd xmm25, xmm12, xmm15, {sae}, 171 +// CHECK: encoding: [0x62,0x43,0x9d,0x18,0x0b,0xcf,0xab] + vrndscalesd xmm25, xmm12, xmm15, {sae}, 171 + +// CHECK: vrndscalesd xmm25, xmm12, xmm15, 123 +// CHECK: encoding: [0x62,0x43,0x9d,0x08,0x0b,0xcf,0x7b] + vrndscalesd xmm25, xmm12, xmm15, 123 + +// CHECK: vrndscalesd xmm25, xmm12, xmm15, {sae}, 123 +// CHECK: encoding: [0x62,0x43,0x9d,0x18,0x0b,0xcf,0x7b] + vrndscalesd xmm25, xmm12, xmm15, {sae}, 123 + +// CHECK: vrndscalesd xmm25, xmm12, qword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x0b,0x09,0x7b] + vrndscalesd xmm25, xmm12, qword ptr [rcx], 123 + +// CHECK: vrndscalesd xmm25, xmm12, qword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x23,0x9d,0x08,0x0b,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vrndscalesd xmm25, xmm12, qword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vrndscalesd xmm25, xmm12, qword ptr [rdx + 1016], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x0b,0x4a,0x7f,0x7b] + vrndscalesd xmm25, xmm12, qword ptr [rdx + 1016], 123 + +// CHECK: vrndscalesd xmm25, xmm12, qword ptr [rdx + 1024], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x0b,0x8a,0x00,0x04,0x00,0x00,0x7b] + vrndscalesd xmm25, xmm12, qword ptr [rdx + 1024], 123 + +// CHECK: vrndscalesd xmm25, xmm12, qword ptr [rdx - 1024], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x0b,0x4a,0x80,0x7b] + vrndscalesd xmm25, xmm12, qword ptr [rdx - 1024], 123 + +// CHECK: vrndscalesd xmm25, xmm12, qword ptr [rdx - 1032], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x0b,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + vrndscalesd xmm25, xmm12, qword ptr [rdx - 1032], 123 + +// CHECK: vrndscaless xmm11, xmm11, xmm17, 171 +// CHECK: encoding: [0x62,0x33,0x25,0x08,0x0a,0xd9,0xab] + vrndscaless xmm11, xmm11, xmm17, 171 + +// CHECK: vrndscaless xmm11 {k3}, xmm11, xmm17, 171 +// CHECK: encoding: [0x62,0x33,0x25,0x0b,0x0a,0xd9,0xab] + vrndscaless xmm11 {k3}, xmm11, xmm17, 171 + +// CHECK: vrndscaless xmm11 {k3} {z}, xmm11, xmm17, 171 +// CHECK: encoding: [0x62,0x33,0x25,0x8b,0x0a,0xd9,0xab] + vrndscaless xmm11 {k3} {z}, xmm11, xmm17, 171 + +// CHECK: vrndscaless xmm11, xmm11, xmm17, {sae}, 171 +// CHECK: encoding: [0x62,0x33,0x25,0x18,0x0a,0xd9,0xab] + vrndscaless xmm11, xmm11, xmm17, {sae}, 171 + +// CHECK: vrndscaless xmm11, xmm11, xmm17, 123 +// CHECK: encoding: [0x62,0x33,0x25,0x08,0x0a,0xd9,0x7b] + vrndscaless xmm11, xmm11, xmm17, 123 + +// CHECK: vrndscaless xmm11, xmm11, xmm17, {sae}, 123 +// CHECK: encoding: [0x62,0x33,0x25,0x18,0x0a,0xd9,0x7b] + vrndscaless xmm11, xmm11, xmm17, {sae}, 123 + +// CHECK: vrndscaless xmm11, xmm11, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x25,0x08,0x0a,0x19,0x7b] + vrndscaless xmm11, xmm11, dword ptr [rcx], 123 + +// CHECK: vrndscaless xmm11, xmm11, dword ptr [rax + 8*r14 + 291], 123 +// CHECK: encoding: [0x62,0x33,0x25,0x08,0x0a,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vrndscaless xmm11, xmm11, dword ptr [rax + 8*r14 + 291], 123 + +// CHECK: vrndscaless xmm11, xmm11, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0x73,0x25,0x08,0x0a,0x5a,0x7f,0x7b] + vrndscaless xmm11, xmm11, dword ptr [rdx + 508], 123 + +// CHECK: vrndscaless xmm11, xmm11, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0x73,0x25,0x08,0x0a,0x9a,0x00,0x02,0x00,0x00,0x7b] + vrndscaless xmm11, xmm11, dword ptr [rdx + 512], 123 + +// CHECK: vrndscaless xmm11, xmm11, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0x73,0x25,0x08,0x0a,0x5a,0x80,0x7b] + vrndscaless xmm11, xmm11, dword ptr [rdx - 512], 123 + +// CHECK: vrndscaless xmm11, xmm11, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0x73,0x25,0x08,0x0a,0x9a,0xfc,0xfd,0xff,0xff,0x7b] + vrndscaless xmm11, xmm11, dword ptr [rdx - 516], 123 + +// CHECK: vpcompressq zmmword ptr [rcx], zmm11 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8b,0x19] + vpcompressq zmmword ptr [rcx], zmm11 + +// CHECK: vpcompressq zmmword ptr [rcx] {k7}, zmm11 +// CHECK: encoding: [0x62,0x72,0xfd,0x4f,0x8b,0x19] + vpcompressq zmmword ptr [rcx] {k7}, zmm11 + +// CHECK: vpcompressq zmmword ptr [rax + 8*r14 + 291], zmm11 +// CHECK: encoding: [0x62,0x32,0xfd,0x48,0x8b,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpcompressq zmmword ptr [rax + 8*r14 + 291], zmm11 + +// CHECK: vpcompressq zmmword ptr [rdx + 1016], zmm11 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8b,0x5a,0x7f] + vpcompressq zmmword ptr [rdx + 1016], zmm11 + +// CHECK: vpcompressq zmmword ptr [rdx + 1024], zmm11 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8b,0x9a,0x00,0x04,0x00,0x00] + vpcompressq zmmword ptr [rdx + 1024], zmm11 + +// CHECK: vpcompressq zmmword ptr [rdx - 1024], zmm11 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8b,0x5a,0x80] + vpcompressq zmmword ptr [rdx - 1024], zmm11 + +// CHECK: vpcompressq zmmword ptr [rdx - 1032], zmm11 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x8b,0x9a,0xf8,0xfb,0xff,0xff] + vpcompressq zmmword ptr [rdx - 1032], zmm11 + +// CHECK: vpcompressq zmm17, zmm19 +// CHECK: encoding: [0x62,0xa2,0xfd,0x48,0x8b,0xd9] + vpcompressq zmm17, zmm19 + +// CHECK: vpcompressq zmm17 {k2}, zmm19 +// CHECK: encoding: [0x62,0xa2,0xfd,0x4a,0x8b,0xd9] + vpcompressq zmm17 {k2}, zmm19 + +// CHECK: vpcompressq zmm17 {k2} {z}, zmm19 +// CHECK: encoding: [0x62,0xa2,0xfd,0xca,0x8b,0xd9] + vpcompressq zmm17 {k2} {z}, zmm19 + +// CHECK: kandw k2, k5, k6 +// CHECK: encoding: [0xc5,0xd4,0x41,0xd6] + kandw k2, k5, k6 + +// CHECK: kandnw k4, k6, k7 +// CHECK: encoding: [0xc5,0xcc,0x42,0xe7] + kandnw k4, k6, k7 + +// CHECK: korw k4, k6, k7 +// CHECK: encoding: [0xc5,0xcc,0x45,0xe7] + korw k4, k6, k7 + +// CHECK: kxnorw k3, k5, k5 +// CHECK: encoding: [0xc5,0xd4,0x46,0xdd] + kxnorw k3, k5, k5 + +// CHECK: kxorw k2, k6, k7 +// CHECK: encoding: [0xc5,0xcc,0x47,0xd7] + kxorw k2, k6, k7 + +// CHECK: knotw k3, k6 +// CHECK: encoding: [0xc5,0xf8,0x44,0xde] + knotw k3, k6 + +// CHECK: kortestw k2, k6 +// CHECK: encoding: [0xc5,0xf8,0x98,0xd6] + kortestw k2, k6 + +// CHECK: kshiftrw k4, k4, 171 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x30,0xe4,0xab] + kshiftrw k4, k4, 171 + +// CHECK: kshiftrw k4, k4, 123 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x30,0xe4,0x7b] + kshiftrw k4, k4, 123 + +// CHECK: kshiftlw k2, k5, 171 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x32,0xd5,0xab] + kshiftlw k2, k5, 171 + +// CHECK: kshiftlw k2, k5, 123 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x32,0xd5,0x7b] + kshiftlw k2, k5, 123 + +// CHECK: kmovw k4, k5 +// CHECK: encoding: [0xc5,0xf8,0x90,0xe5] + kmovw k4, k5 + +// CHECK: kmovw k4, word ptr [rcx] +// CHECK: encoding: [0xc5,0xf8,0x90,0x21] + kmovw k4, word ptr [rcx] + +// CHECK: kmovw k4, word ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0xc4,0xa1,0x78,0x90,0xa4,0xf0,0x23,0x01,0x00,0x00] + kmovw k4, word ptr [rax + 8*r14 + 291] + +// CHECK: kmovw word ptr [rcx], k4 +// CHECK: encoding: [0xc5,0xf8,0x91,0x21] + kmovw word ptr [rcx], k4 + +// CHECK: kmovw word ptr [rax + 8*r14 + 291], k4 +// CHECK: encoding: [0xc4,0xa1,0x78,0x91,0xa4,0xf0,0x23,0x01,0x00,0x00] + kmovw word ptr [rax + 8*r14 + 291], k4 + +// CHECK: kmovw k3, eax +// CHECK: encoding: [0xc5,0xf8,0x92,0xd8] + kmovw k3, eax + +// CHECK: kmovw k3, ebp +// CHECK: encoding: [0xc5,0xf8,0x92,0xdd] + kmovw k3, ebp + +// CHECK: kmovw k3, r13d +// CHECK: encoding: [0xc4,0xc1,0x78,0x92,0xdd] + kmovw k3, r13d + +// CHECK: kmovw eax, k2 +// CHECK: encoding: [0xc5,0xf8,0x93,0xc2] + kmovw eax, k2 + +// CHECK: kmovw ebp, k2 +// CHECK: encoding: [0xc5,0xf8,0x93,0xea] + kmovw ebp, k2 + +// CHECK: kmovw r13d, k2 +// CHECK: encoding: [0xc5,0x78,0x93,0xea] + kmovw r13d, k2 + +// CHECK: kunpckbw k5, k5, k6 +// CHECK: encoding: [0xc5,0xd5,0x4b,0xee] + kunpckbw k5, k5, k6 + +// CHECK: vcvtps2ph ymmword ptr [rcx], zmm19, 171 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x1d,0x19,0xab] + vcvtps2ph ymmword ptr [rcx], zmm19, 171 + +// CHECK: vcvtps2ph ymmword ptr [rcx] {k6}, zmm19, 171 +// CHECK: encoding: [0x62,0xe3,0x7d,0x4e,0x1d,0x19,0xab] + vcvtps2ph ymmword ptr [rcx] {k6}, zmm19, 171 + +// CHECK: vcvtps2ph ymmword ptr [rcx], zmm19, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x1d,0x19,0x7b] + vcvtps2ph ymmword ptr [rcx], zmm19, 123 + +// CHECK: vcvtps2ph ymmword ptr [rax + 8*r14 + 291], zmm19, 123 +// CHECK: encoding: [0x62,0xa3,0x7d,0x48,0x1d,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vcvtps2ph ymmword ptr [rax + 8*r14 + 291], zmm19, 123 + +// CHECK: vcvtps2ph ymmword ptr [rdx + 4064], zmm19, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x1d,0x5a,0x7f,0x7b] + vcvtps2ph ymmword ptr [rdx + 4064], zmm19, 123 + +// CHECK: vcvtps2ph ymmword ptr [rdx + 4096], zmm19, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x1d,0x9a,0x00,0x10,0x00,0x00,0x7b] + vcvtps2ph ymmword ptr [rdx + 4096], zmm19, 123 + +// CHECK: vcvtps2ph ymmword ptr [rdx - 4096], zmm19, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x1d,0x5a,0x80,0x7b] + vcvtps2ph ymmword ptr [rdx - 4096], zmm19, 123 + +// CHECK: vcvtps2ph ymmword ptr [rdx - 4128], zmm19, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x1d,0x9a,0xe0,0xef,0xff,0xff,0x7b] + vcvtps2ph ymmword ptr [rdx - 4128], zmm19, 123 + +// CHECK: vextractf32x4 xmmword ptr [rcx], zmm20, 171 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0x21,0xab] + vextractf32x4 xmmword ptr [rcx], zmm20, 171 + +// CHECK: vextractf32x4 xmmword ptr [rcx] {k7}, zmm20, 171 +// CHECK: encoding: [0x62,0xe3,0x7d,0x4f,0x19,0x21,0xab] + vextractf32x4 xmmword ptr [rcx] {k7}, zmm20, 171 + +// CHECK: vextractf32x4 xmmword ptr [rcx], zmm20, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0x21,0x7b] + vextractf32x4 xmmword ptr [rcx], zmm20, 123 + +// CHECK: vextractf32x4 xmmword ptr [rax + 8*r14 + 291], zmm20, 123 +// CHECK: encoding: [0x62,0xa3,0x7d,0x48,0x19,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vextractf32x4 xmmword ptr [rax + 8*r14 + 291], zmm20, 123 + +// CHECK: vextractf32x4 xmmword ptr [rdx + 2032], zmm20, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0x62,0x7f,0x7b] + vextractf32x4 xmmword ptr [rdx + 2032], zmm20, 123 + +// CHECK: vextractf32x4 xmmword ptr [rdx + 2048], zmm20, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0xa2,0x00,0x08,0x00,0x00,0x7b] + vextractf32x4 xmmword ptr [rdx + 2048], zmm20, 123 + +// CHECK: vextractf32x4 xmmword ptr [rdx - 2048], zmm20, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0x62,0x80,0x7b] + vextractf32x4 xmmword ptr [rdx - 2048], zmm20, 123 + +// CHECK: vextractf32x4 xmmword ptr [rdx - 2064], zmm20, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0xa2,0xf0,0xf7,0xff,0xff,0x7b] + vextractf32x4 xmmword ptr [rdx - 2064], zmm20, 123 + +// CHECK: vextractf64x4 ymmword ptr [rcx], zmm5, 171 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x1b,0x29,0xab] + vextractf64x4 ymmword ptr [rcx], zmm5, 171 + +// CHECK: vextractf64x4 ymmword ptr [rcx] {k4}, zmm5, 171 +// CHECK: encoding: [0x62,0xf3,0xfd,0x4c,0x1b,0x29,0xab] + vextractf64x4 ymmword ptr [rcx] {k4}, zmm5, 171 + +// CHECK: vextractf64x4 ymmword ptr [rcx], zmm5, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x1b,0x29,0x7b] + vextractf64x4 ymmword ptr [rcx], zmm5, 123 + +// CHECK: vextractf64x4 ymmword ptr [rax + 8*r14 + 291], zmm5, 123 +// CHECK: encoding: [0x62,0xb3,0xfd,0x48,0x1b,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vextractf64x4 ymmword ptr [rax + 8*r14 + 291], zmm5, 123 + +// CHECK: vextractf64x4 ymmword ptr [rdx + 4064], zmm5, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x1b,0x6a,0x7f,0x7b] + vextractf64x4 ymmword ptr [rdx + 4064], zmm5, 123 + +// CHECK: vextractf64x4 ymmword ptr [rdx + 4096], zmm5, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x1b,0xaa,0x00,0x10,0x00,0x00,0x7b] + vextractf64x4 ymmword ptr [rdx + 4096], zmm5, 123 + +// CHECK: vextractf64x4 ymmword ptr [rdx - 4096], zmm5, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x1b,0x6a,0x80,0x7b] + vextractf64x4 ymmword ptr [rdx - 4096], zmm5, 123 + +// CHECK: vextractf64x4 ymmword ptr [rdx - 4128], zmm5, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x1b,0xaa,0xe0,0xef,0xff,0xff,0x7b] + vextractf64x4 ymmword ptr [rdx - 4128], zmm5, 123 + +// CHECK: vextracti32x4 xmmword ptr [rcx], zmm29, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x39,0x29,0xab] + vextracti32x4 xmmword ptr [rcx], zmm29, 171 + +// CHECK: vextracti32x4 xmmword ptr [rcx] {k2}, zmm29, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0x4a,0x39,0x29,0xab] + vextracti32x4 xmmword ptr [rcx] {k2}, zmm29, 171 + +// CHECK: vextracti32x4 xmmword ptr [rcx], zmm29, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x39,0x29,0x7b] + vextracti32x4 xmmword ptr [rcx], zmm29, 123 + +// CHECK: vextracti32x4 xmmword ptr [rax + 8*r14 + 291], zmm29, 123 +// CHECK: encoding: [0x62,0x23,0x7d,0x48,0x39,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vextracti32x4 xmmword ptr [rax + 8*r14 + 291], zmm29, 123 + +// CHECK: vextracti32x4 xmmword ptr [rdx + 2032], zmm29, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x39,0x6a,0x7f,0x7b] + vextracti32x4 xmmword ptr [rdx + 2032], zmm29, 123 + +// CHECK: vextracti32x4 xmmword ptr [rdx + 2048], zmm29, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x39,0xaa,0x00,0x08,0x00,0x00,0x7b] + vextracti32x4 xmmword ptr [rdx + 2048], zmm29, 123 + +// CHECK: vextracti32x4 xmmword ptr [rdx - 2048], zmm29, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x39,0x6a,0x80,0x7b] + vextracti32x4 xmmword ptr [rdx - 2048], zmm29, 123 + +// CHECK: vextracti32x4 xmmword ptr [rdx - 2064], zmm29, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x39,0xaa,0xf0,0xf7,0xff,0xff,0x7b] + vextracti32x4 xmmword ptr [rdx - 2064], zmm29, 123 + +// CHECK: vextracti64x4 ymmword ptr [rcx], zmm30, 171 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x3b,0x31,0xab] + vextracti64x4 ymmword ptr [rcx], zmm30, 171 + +// CHECK: vextracti64x4 ymmword ptr [rcx] {k4}, zmm30, 171 +// CHECK: encoding: [0x62,0x63,0xfd,0x4c,0x3b,0x31,0xab] + vextracti64x4 ymmword ptr [rcx] {k4}, zmm30, 171 + +// CHECK: vextracti64x4 ymmword ptr [rcx], zmm30, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x3b,0x31,0x7b] + vextracti64x4 ymmword ptr [rcx], zmm30, 123 + +// CHECK: vextracti64x4 ymmword ptr [rax + 8*r14 + 291], zmm30, 123 +// CHECK: encoding: [0x62,0x23,0xfd,0x48,0x3b,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vextracti64x4 ymmword ptr [rax + 8*r14 + 291], zmm30, 123 + +// CHECK: vextracti64x4 ymmword ptr [rdx + 4064], zmm30, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x3b,0x72,0x7f,0x7b] + vextracti64x4 ymmword ptr [rdx + 4064], zmm30, 123 + +// CHECK: vextracti64x4 ymmword ptr [rdx + 4096], zmm30, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x3b,0xb2,0x00,0x10,0x00,0x00,0x7b] + vextracti64x4 ymmword ptr [rdx + 4096], zmm30, 123 + +// CHECK: vextracti64x4 ymmword ptr [rdx - 4096], zmm30, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x3b,0x72,0x80,0x7b] + vextracti64x4 ymmword ptr [rdx - 4096], zmm30, 123 + +// CHECK: vextracti64x4 ymmword ptr [rdx - 4128], zmm30, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x3b,0xb2,0xe0,0xef,0xff,0xff,0x7b] + vextracti64x4 ymmword ptr [rdx - 4128], zmm30, 123 + +// CHECK: vmovapd zmmword ptr [rcx], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x29,0x11] + vmovapd zmmword ptr [rcx], zmm18 + +// CHECK: vmovapd zmmword ptr [rcx] {k6}, zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x4e,0x29,0x11] + vmovapd zmmword ptr [rcx] {k6}, zmm18 + +// CHECK: vmovapd zmmword ptr [rax + 8*r14 + 291], zmm18 +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x29,0x94,0xf0,0x23,0x01,0x00,0x00] + vmovapd zmmword ptr [rax + 8*r14 + 291], zmm18 + +// CHECK: vmovapd zmmword ptr [rdx + 8128], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x29,0x52,0x7f] + vmovapd zmmword ptr [rdx + 8128], zmm18 + +// CHECK: vmovapd zmmword ptr [rdx + 8192], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x29,0x92,0x00,0x20,0x00,0x00] + vmovapd zmmword ptr [rdx + 8192], zmm18 + +// CHECK: vmovapd zmmword ptr [rdx - 8192], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x29,0x52,0x80] + vmovapd zmmword ptr [rdx - 8192], zmm18 + +// CHECK: vmovapd zmmword ptr [rdx - 8256], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x29,0x92,0xc0,0xdf,0xff,0xff] + vmovapd zmmword ptr [rdx - 8256], zmm18 + +// CHECK: vmovaps zmmword ptr [rcx], zmm9 +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x29,0x09] + vmovaps zmmword ptr [rcx], zmm9 + +// CHECK: vmovaps zmmword ptr [rcx] {k3}, zmm9 +// CHECK: encoding: [0x62,0x71,0x7c,0x4b,0x29,0x09] + vmovaps zmmword ptr [rcx] {k3}, zmm9 + +// CHECK: vmovaps zmmword ptr [rax + 8*r14 + 291], zmm9 +// CHECK: encoding: [0x62,0x31,0x7c,0x48,0x29,0x8c,0xf0,0x23,0x01,0x00,0x00] + vmovaps zmmword ptr [rax + 8*r14 + 291], zmm9 + +// CHECK: vmovaps zmmword ptr [rdx + 8128], zmm9 +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x29,0x4a,0x7f] + vmovaps zmmword ptr [rdx + 8128], zmm9 + +// CHECK: vmovaps zmmword ptr [rdx + 8192], zmm9 +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x29,0x8a,0x00,0x20,0x00,0x00] + vmovaps zmmword ptr [rdx + 8192], zmm9 + +// CHECK: vmovaps zmmword ptr [rdx - 8192], zmm9 +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x29,0x4a,0x80] + vmovaps zmmword ptr [rdx - 8192], zmm9 + +// CHECK: vmovaps zmmword ptr [rdx - 8256], zmm9 +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x29,0x8a,0xc0,0xdf,0xff,0xff] + vmovaps zmmword ptr [rdx - 8256], zmm9 + +// CHECK: vmovdqa32 zmmword ptr [rcx], zmm18 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x7f,0x11] + vmovdqa32 zmmword ptr [rcx], zmm18 + +// CHECK: vmovdqa32 zmmword ptr [rcx] {k4}, zmm18 +// CHECK: encoding: [0x62,0xe1,0x7d,0x4c,0x7f,0x11] + vmovdqa32 zmmword ptr [rcx] {k4}, zmm18 + +// CHECK: vmovdqa32 zmmword ptr [rax + 8*r14 + 291], zmm18 +// CHECK: encoding: [0x62,0xa1,0x7d,0x48,0x7f,0x94,0xf0,0x23,0x01,0x00,0x00] + vmovdqa32 zmmword ptr [rax + 8*r14 + 291], zmm18 + +// CHECK: vmovdqa32 zmmword ptr [rdx + 8128], zmm18 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x7f,0x52,0x7f] + vmovdqa32 zmmword ptr [rdx + 8128], zmm18 + +// CHECK: vmovdqa32 zmmword ptr [rdx + 8192], zmm18 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x7f,0x92,0x00,0x20,0x00,0x00] + vmovdqa32 zmmword ptr [rdx + 8192], zmm18 + +// CHECK: vmovdqa32 zmmword ptr [rdx - 8192], zmm18 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x7f,0x52,0x80] + vmovdqa32 zmmword ptr [rdx - 8192], zmm18 + +// CHECK: vmovdqa32 zmmword ptr [rdx - 8256], zmm18 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x7f,0x92,0xc0,0xdf,0xff,0xff] + vmovdqa32 zmmword ptr [rdx - 8256], zmm18 + +// CHECK: vmovdqa64 zmmword ptr [rcx], zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x19] + vmovdqa64 zmmword ptr [rcx], zmm19 + +// CHECK: vmovdqa64 zmmword ptr [rcx] {k5}, zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x4d,0x7f,0x19] + vmovdqa64 zmmword ptr [rcx] {k5}, zmm19 + +// CHECK: vmovdqa64 zmmword ptr [rax + 8*r14 + 291], zmm19 +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x7f,0x9c,0xf0,0x23,0x01,0x00,0x00] + vmovdqa64 zmmword ptr [rax + 8*r14 + 291], zmm19 + +// CHECK: vmovdqa64 zmmword ptr [rdx + 8128], zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x5a,0x7f] + vmovdqa64 zmmword ptr [rdx + 8128], zmm19 + +// CHECK: vmovdqa64 zmmword ptr [rdx + 8192], zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x9a,0x00,0x20,0x00,0x00] + vmovdqa64 zmmword ptr [rdx + 8192], zmm19 + +// CHECK: vmovdqa64 zmmword ptr [rdx - 8192], zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x5a,0x80] + vmovdqa64 zmmword ptr [rdx - 8192], zmm19 + +// CHECK: vmovdqa64 zmmword ptr [rdx - 8256], zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x9a,0xc0,0xdf,0xff,0xff] + vmovdqa64 zmmword ptr [rdx - 8256], zmm19 + +// CHECK: vmovdqu32 zmmword ptr [rcx], zmm22 +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7f,0x31] + vmovdqu32 zmmword ptr [rcx], zmm22 + +// CHECK: vmovdqu32 zmmword ptr [rcx] {k1}, zmm22 +// CHECK: encoding: [0x62,0xe1,0x7e,0x49,0x7f,0x31] + vmovdqu32 zmmword ptr [rcx] {k1}, zmm22 + +// CHECK: vmovdqu32 zmmword ptr [rax + 8*r14 + 291], zmm22 +// CHECK: encoding: [0x62,0xa1,0x7e,0x48,0x7f,0xb4,0xf0,0x23,0x01,0x00,0x00] + vmovdqu32 zmmword ptr [rax + 8*r14 + 291], zmm22 + +// CHECK: vmovdqu32 zmmword ptr [rdx + 8128], zmm22 +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7f,0x72,0x7f] + vmovdqu32 zmmword ptr [rdx + 8128], zmm22 + +// CHECK: vmovdqu32 zmmword ptr [rdx + 8192], zmm22 +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7f,0xb2,0x00,0x20,0x00,0x00] + vmovdqu32 zmmword ptr [rdx + 8192], zmm22 + +// CHECK: vmovdqu32 zmmword ptr [rdx - 8192], zmm22 +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7f,0x72,0x80] + vmovdqu32 zmmword ptr [rdx - 8192], zmm22 + +// CHECK: vmovdqu32 zmmword ptr [rdx - 8256], zmm22 +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7f,0xb2,0xc0,0xdf,0xff,0xff] + vmovdqu32 zmmword ptr [rdx - 8256], zmm22 + +// CHECK: vmovdqu64 zmmword ptr [rcx], zmm24 +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x7f,0x01] + vmovdqu64 zmmword ptr [rcx], zmm24 + +// CHECK: vmovdqu64 zmmword ptr [rcx] {k5}, zmm24 +// CHECK: encoding: [0x62,0x61,0xfe,0x4d,0x7f,0x01] + vmovdqu64 zmmword ptr [rcx] {k5}, zmm24 + +// CHECK: vmovdqu64 zmmword ptr [rax + 8*r14 + 291], zmm24 +// CHECK: encoding: [0x62,0x21,0xfe,0x48,0x7f,0x84,0xf0,0x23,0x01,0x00,0x00] + vmovdqu64 zmmword ptr [rax + 8*r14 + 291], zmm24 + +// CHECK: vmovdqu64 zmmword ptr [rdx + 8128], zmm24 +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x7f,0x42,0x7f] + vmovdqu64 zmmword ptr [rdx + 8128], zmm24 + +// CHECK: vmovdqu64 zmmword ptr [rdx + 8192], zmm24 +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x7f,0x82,0x00,0x20,0x00,0x00] + vmovdqu64 zmmword ptr [rdx + 8192], zmm24 + +// CHECK: vmovdqu64 zmmword ptr [rdx - 8192], zmm24 +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x7f,0x42,0x80] + vmovdqu64 zmmword ptr [rdx - 8192], zmm24 + +// CHECK: vmovdqu64 zmmword ptr [rdx - 8256], zmm24 +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x7f,0x82,0xc0,0xdf,0xff,0xff] + vmovdqu64 zmmword ptr [rdx - 8256], zmm24 + +// CHECK: vmovupd zmmword ptr [rcx], zmm10 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x11] + vmovupd zmmword ptr [rcx], zmm10 + +// CHECK: vmovupd zmmword ptr [rcx] {k7}, zmm10 +// CHECK: encoding: [0x62,0x71,0xfd,0x4f,0x11,0x11] + vmovupd zmmword ptr [rcx] {k7}, zmm10 + +// CHECK: vmovupd zmmword ptr [rax + 8*r14 + 291], zmm10 +// CHECK: encoding: [0x62,0x31,0xfd,0x48,0x11,0x94,0xf0,0x23,0x01,0x00,0x00] + vmovupd zmmword ptr [rax + 8*r14 + 291], zmm10 + +// CHECK: vmovupd zmmword ptr [rdx + 8128], zmm10 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x52,0x7f] + vmovupd zmmword ptr [rdx + 8128], zmm10 + +// CHECK: vmovupd zmmword ptr [rdx + 8192], zmm10 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x92,0x00,0x20,0x00,0x00] + vmovupd zmmword ptr [rdx + 8192], zmm10 + +// CHECK: vmovupd zmmword ptr [rdx - 8192], zmm10 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x52,0x80] + vmovupd zmmword ptr [rdx - 8192], zmm10 + +// CHECK: vmovupd zmmword ptr [rdx - 8256], zmm10 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x92,0xc0,0xdf,0xff,0xff] + vmovupd zmmword ptr [rdx - 8256], zmm10 + +// CHECK: vmovups zmmword ptr [rcx], zmm24 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x11,0x01] + vmovups zmmword ptr [rcx], zmm24 + +// CHECK: vmovups zmmword ptr [rcx] {k7}, zmm24 +// CHECK: encoding: [0x62,0x61,0x7c,0x4f,0x11,0x01] + vmovups zmmword ptr [rcx] {k7}, zmm24 + +// CHECK: vmovups zmmword ptr [rax + 8*r14 + 291], zmm24 +// CHECK: encoding: [0x62,0x21,0x7c,0x48,0x11,0x84,0xf0,0x23,0x01,0x00,0x00] + vmovups zmmword ptr [rax + 8*r14 + 291], zmm24 + +// CHECK: vmovups zmmword ptr [rdx + 8128], zmm24 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x11,0x42,0x7f] + vmovups zmmword ptr [rdx + 8128], zmm24 + +// CHECK: vmovups zmmword ptr [rdx + 8192], zmm24 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x11,0x82,0x00,0x20,0x00,0x00] + vmovups zmmword ptr [rdx + 8192], zmm24 + +// CHECK: vmovups zmmword ptr [rdx - 8192], zmm24 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x11,0x42,0x80] + vmovups zmmword ptr [rdx - 8192], zmm24 + +// CHECK: vmovups zmmword ptr [rdx - 8256], zmm24 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x11,0x82,0xc0,0xdf,0xff,0xff] + vmovups zmmword ptr [rdx - 8256], zmm24 + +// CHECK: vpmovqb qword ptr [rcx], zmm3 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x32,0x19] + vpmovqb qword ptr [rcx], zmm3 + +// CHECK: vpmovqb qword ptr [rcx] {k7}, zmm3 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4f,0x32,0x19] + vpmovqb qword ptr [rcx] {k7}, zmm3 + +// CHECK: vpmovqb qword ptr [rax + 8*r14 + 291], zmm3 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x32,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpmovqb qword ptr [rax + 8*r14 + 291], zmm3 + +// CHECK: vpmovqb qword ptr [rdx + 1016], zmm3 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x32,0x5a,0x7f] + vpmovqb qword ptr [rdx + 1016], zmm3 + +// CHECK: vpmovqb qword ptr [rdx + 1024], zmm3 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x32,0x9a,0x00,0x04,0x00,0x00] + vpmovqb qword ptr [rdx + 1024], zmm3 + +// CHECK: vpmovqb qword ptr [rdx - 1024], zmm3 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x32,0x5a,0x80] + vpmovqb qword ptr [rdx - 1024], zmm3 + +// CHECK: vpmovqb qword ptr [rdx - 1032], zmm3 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x32,0x9a,0xf8,0xfb,0xff,0xff] + vpmovqb qword ptr [rdx - 1032], zmm3 + +// CHECK: vpmovsqb qword ptr [rcx], zmm16 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x01] + vpmovsqb qword ptr [rcx], zmm16 + +// CHECK: vpmovsqb qword ptr [rcx] {k2}, zmm16 +// CHECK: encoding: [0x62,0xe2,0x7e,0x4a,0x22,0x01] + vpmovsqb qword ptr [rcx] {k2}, zmm16 + +// CHECK: vpmovsqb qword ptr [rax + 8*r14 + 291], zmm16 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x22,0x84,0xf0,0x23,0x01,0x00,0x00] + vpmovsqb qword ptr [rax + 8*r14 + 291], zmm16 + +// CHECK: vpmovsqb qword ptr [rdx + 1016], zmm16 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x42,0x7f] + vpmovsqb qword ptr [rdx + 1016], zmm16 + +// CHECK: vpmovsqb qword ptr [rdx + 1024], zmm16 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x82,0x00,0x04,0x00,0x00] + vpmovsqb qword ptr [rdx + 1024], zmm16 + +// CHECK: vpmovsqb qword ptr [rdx - 1024], zmm16 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x42,0x80] + vpmovsqb qword ptr [rdx - 1024], zmm16 + +// CHECK: vpmovsqb qword ptr [rdx - 1032], zmm16 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x82,0xf8,0xfb,0xff,0xff] + vpmovsqb qword ptr [rdx - 1032], zmm16 + +// CHECK: vpmovusqb qword ptr [rcx], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x12,0x21] + vpmovusqb qword ptr [rcx], zmm28 + +// CHECK: vpmovusqb qword ptr [rcx] {k1}, zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x49,0x12,0x21] + vpmovusqb qword ptr [rcx] {k1}, zmm28 + +// CHECK: vpmovusqb qword ptr [rax + 8*r14 + 291], zmm28 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x12,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpmovusqb qword ptr [rax + 8*r14 + 291], zmm28 + +// CHECK: vpmovusqb qword ptr [rdx + 1016], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x12,0x62,0x7f] + vpmovusqb qword ptr [rdx + 1016], zmm28 + +// CHECK: vpmovusqb qword ptr [rdx + 1024], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x12,0xa2,0x00,0x04,0x00,0x00] + vpmovusqb qword ptr [rdx + 1024], zmm28 + +// CHECK: vpmovusqb qword ptr [rdx - 1024], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x12,0x62,0x80] + vpmovusqb qword ptr [rdx - 1024], zmm28 + +// CHECK: vpmovusqb qword ptr [rdx - 1032], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x12,0xa2,0xf8,0xfb,0xff,0xff] + vpmovusqb qword ptr [rdx - 1032], zmm28 + +// CHECK: vpmovqw xmmword ptr [rcx], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x34,0x39] + vpmovqw xmmword ptr [rcx], zmm7 + +// CHECK: vpmovqw xmmword ptr [rcx] {k6}, zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4e,0x34,0x39] + vpmovqw xmmword ptr [rcx] {k6}, zmm7 + +// CHECK: vpmovqw xmmword ptr [rax + 8*r14 + 291], zmm7 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x34,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpmovqw xmmword ptr [rax + 8*r14 + 291], zmm7 + +// CHECK: vpmovqw xmmword ptr [rdx + 2032], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x34,0x7a,0x7f] + vpmovqw xmmword ptr [rdx + 2032], zmm7 + +// CHECK: vpmovqw xmmword ptr [rdx + 2048], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x34,0xba,0x00,0x08,0x00,0x00] + vpmovqw xmmword ptr [rdx + 2048], zmm7 + +// CHECK: vpmovqw xmmword ptr [rdx - 2048], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x34,0x7a,0x80] + vpmovqw xmmword ptr [rdx - 2048], zmm7 + +// CHECK: vpmovqw xmmword ptr [rdx - 2064], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x34,0xba,0xf0,0xf7,0xff,0xff] + vpmovqw xmmword ptr [rdx - 2064], zmm7 + +// CHECK: vpmovsqw xmmword ptr [rcx], zmm1 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x24,0x09] + vpmovsqw xmmword ptr [rcx], zmm1 + +// CHECK: vpmovsqw xmmword ptr [rcx] {k5}, zmm1 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4d,0x24,0x09] + vpmovsqw xmmword ptr [rcx] {k5}, zmm1 + +// CHECK: vpmovsqw xmmword ptr [rax + 8*r14 + 291], zmm1 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x24,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpmovsqw xmmword ptr [rax + 8*r14 + 291], zmm1 + +// CHECK: vpmovsqw xmmword ptr [rdx + 2032], zmm1 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x24,0x4a,0x7f] + vpmovsqw xmmword ptr [rdx + 2032], zmm1 + +// CHECK: vpmovsqw xmmword ptr [rdx + 2048], zmm1 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x24,0x8a,0x00,0x08,0x00,0x00] + vpmovsqw xmmword ptr [rdx + 2048], zmm1 + +// CHECK: vpmovsqw xmmword ptr [rdx - 2048], zmm1 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x24,0x4a,0x80] + vpmovsqw xmmword ptr [rdx - 2048], zmm1 + +// CHECK: vpmovsqw xmmword ptr [rdx - 2064], zmm1 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x24,0x8a,0xf0,0xf7,0xff,0xff] + vpmovsqw xmmword ptr [rdx - 2064], zmm1 + +// CHECK: vpmovusqw xmmword ptr [rcx], zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x14,0x09] + vpmovusqw xmmword ptr [rcx], zmm25 + +// CHECK: vpmovusqw xmmword ptr [rcx] {k3}, zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0x4b,0x14,0x09] + vpmovusqw xmmword ptr [rcx] {k3}, zmm25 + +// CHECK: vpmovusqw xmmword ptr [rax + 8*r14 + 291], zmm25 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x14,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpmovusqw xmmword ptr [rax + 8*r14 + 291], zmm25 + +// CHECK: vpmovusqw xmmword ptr [rdx + 2032], zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x14,0x4a,0x7f] + vpmovusqw xmmword ptr [rdx + 2032], zmm25 + +// CHECK: vpmovusqw xmmword ptr [rdx + 2048], zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x14,0x8a,0x00,0x08,0x00,0x00] + vpmovusqw xmmword ptr [rdx + 2048], zmm25 + +// CHECK: vpmovusqw xmmword ptr [rdx - 2048], zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x14,0x4a,0x80] + vpmovusqw xmmword ptr [rdx - 2048], zmm25 + +// CHECK: vpmovusqw xmmword ptr [rdx - 2064], zmm25 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x14,0x8a,0xf0,0xf7,0xff,0xff] + vpmovusqw xmmword ptr [rdx - 2064], zmm25 + +// CHECK: vpmovqd ymmword ptr [rcx], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x35,0x21] + vpmovqd ymmword ptr [rcx], zmm28 + +// CHECK: vpmovqd ymmword ptr [rcx] {k5}, zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x4d,0x35,0x21] + vpmovqd ymmword ptr [rcx] {k5}, zmm28 + +// CHECK: vpmovqd ymmword ptr [rax + 8*r14 + 291], zmm28 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x35,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpmovqd ymmword ptr [rax + 8*r14 + 291], zmm28 + +// CHECK: vpmovqd ymmword ptr [rdx + 4064], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x35,0x62,0x7f] + vpmovqd ymmword ptr [rdx + 4064], zmm28 + +// CHECK: vpmovqd ymmword ptr [rdx + 4096], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x35,0xa2,0x00,0x10,0x00,0x00] + vpmovqd ymmword ptr [rdx + 4096], zmm28 + +// CHECK: vpmovqd ymmword ptr [rdx - 4096], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x35,0x62,0x80] + vpmovqd ymmword ptr [rdx - 4096], zmm28 + +// CHECK: vpmovqd ymmword ptr [rdx - 4128], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x35,0xa2,0xe0,0xef,0xff,0xff] + vpmovqd ymmword ptr [rdx - 4128], zmm28 + +// CHECK: vpmovsqd ymmword ptr [rcx], zmm9 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x25,0x09] + vpmovsqd ymmword ptr [rcx], zmm9 + +// CHECK: vpmovsqd ymmword ptr [rcx] {k7}, zmm9 +// CHECK: encoding: [0x62,0x72,0x7e,0x4f,0x25,0x09] + vpmovsqd ymmword ptr [rcx] {k7}, zmm9 + +// CHECK: vpmovsqd ymmword ptr [rax + 8*r14 + 291], zmm9 +// CHECK: encoding: [0x62,0x32,0x7e,0x48,0x25,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpmovsqd ymmword ptr [rax + 8*r14 + 291], zmm9 + +// CHECK: vpmovsqd ymmword ptr [rdx + 4064], zmm9 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x25,0x4a,0x7f] + vpmovsqd ymmword ptr [rdx + 4064], zmm9 + +// CHECK: vpmovsqd ymmword ptr [rdx + 4096], zmm9 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x25,0x8a,0x00,0x10,0x00,0x00] + vpmovsqd ymmword ptr [rdx + 4096], zmm9 + +// CHECK: vpmovsqd ymmword ptr [rdx - 4096], zmm9 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x25,0x4a,0x80] + vpmovsqd ymmword ptr [rdx - 4096], zmm9 + +// CHECK: vpmovsqd ymmword ptr [rdx - 4128], zmm9 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x25,0x8a,0xe0,0xef,0xff,0xff] + vpmovsqd ymmword ptr [rdx - 4128], zmm9 + +// CHECK: vpmovusqd ymmword ptr [rcx], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0x31] + vpmovusqd ymmword ptr [rcx], zmm22 + +// CHECK: vpmovusqd ymmword ptr [rcx] {k1}, zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x49,0x15,0x31] + vpmovusqd ymmword ptr [rcx] {k1}, zmm22 + +// CHECK: vpmovusqd ymmword ptr [rax + 8*r14 + 291], zmm22 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x15,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpmovusqd ymmword ptr [rax + 8*r14 + 291], zmm22 + +// CHECK: vpmovusqd ymmword ptr [rdx + 4064], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0x72,0x7f] + vpmovusqd ymmword ptr [rdx + 4064], zmm22 + +// CHECK: vpmovusqd ymmword ptr [rdx + 4096], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0xb2,0x00,0x10,0x00,0x00] + vpmovusqd ymmword ptr [rdx + 4096], zmm22 + +// CHECK: vpmovusqd ymmword ptr [rdx - 4096], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0x72,0x80] + vpmovusqd ymmword ptr [rdx - 4096], zmm22 + +// CHECK: vpmovusqd ymmword ptr [rdx - 4128], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0xb2,0xe0,0xef,0xff,0xff] + vpmovusqd ymmword ptr [rdx - 4128], zmm22 + +// CHECK: vpmovdb xmmword ptr [rcx], zmm12 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x31,0x21] + vpmovdb xmmword ptr [rcx], zmm12 + +// CHECK: vpmovdb xmmword ptr [rcx] {k3}, zmm12 +// CHECK: encoding: [0x62,0x72,0x7e,0x4b,0x31,0x21] + vpmovdb xmmword ptr [rcx] {k3}, zmm12 + +// CHECK: vpmovdb xmmword ptr [rax + 8*r14 + 291], zmm12 +// CHECK: encoding: [0x62,0x32,0x7e,0x48,0x31,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpmovdb xmmword ptr [rax + 8*r14 + 291], zmm12 + +// CHECK: vpmovdb xmmword ptr [rdx + 2032], zmm12 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x31,0x62,0x7f] + vpmovdb xmmword ptr [rdx + 2032], zmm12 + +// CHECK: vpmovdb xmmword ptr [rdx + 2048], zmm12 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x31,0xa2,0x00,0x08,0x00,0x00] + vpmovdb xmmword ptr [rdx + 2048], zmm12 + +// CHECK: vpmovdb xmmword ptr [rdx - 2048], zmm12 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x31,0x62,0x80] + vpmovdb xmmword ptr [rdx - 2048], zmm12 + +// CHECK: vpmovdb xmmword ptr [rdx - 2064], zmm12 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x31,0xa2,0xf0,0xf7,0xff,0xff] + vpmovdb xmmword ptr [rdx - 2064], zmm12 + +// CHECK: vpmovsdb xmmword ptr [rcx], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x21,0x31] + vpmovsdb xmmword ptr [rcx], zmm6 + +// CHECK: vpmovsdb xmmword ptr [rcx] {k1}, zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x49,0x21,0x31] + vpmovsdb xmmword ptr [rcx] {k1}, zmm6 + +// CHECK: vpmovsdb xmmword ptr [rax + 8*r14 + 291], zmm6 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x21,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpmovsdb xmmword ptr [rax + 8*r14 + 291], zmm6 + +// CHECK: vpmovsdb xmmword ptr [rdx + 2032], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x21,0x72,0x7f] + vpmovsdb xmmword ptr [rdx + 2032], zmm6 + +// CHECK: vpmovsdb xmmword ptr [rdx + 2048], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x21,0xb2,0x00,0x08,0x00,0x00] + vpmovsdb xmmword ptr [rdx + 2048], zmm6 + +// CHECK: vpmovsdb xmmword ptr [rdx - 2048], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x21,0x72,0x80] + vpmovsdb xmmword ptr [rdx - 2048], zmm6 + +// CHECK: vpmovsdb xmmword ptr [rdx - 2064], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x21,0xb2,0xf0,0xf7,0xff,0xff] + vpmovsdb xmmword ptr [rdx - 2064], zmm6 + +// CHECK: vpmovusdb xmmword ptr [rcx], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x11,0x39] + vpmovusdb xmmword ptr [rcx], zmm23 + +// CHECK: vpmovusdb xmmword ptr [rcx] {k3}, zmm23 +// CHECK: encoding: [0x62,0xe2,0x7e,0x4b,0x11,0x39] + vpmovusdb xmmword ptr [rcx] {k3}, zmm23 + +// CHECK: vpmovusdb xmmword ptr [rax + 8*r14 + 291], zmm23 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x11,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpmovusdb xmmword ptr [rax + 8*r14 + 291], zmm23 + +// CHECK: vpmovusdb xmmword ptr [rdx + 2032], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x11,0x7a,0x7f] + vpmovusdb xmmword ptr [rdx + 2032], zmm23 + +// CHECK: vpmovusdb xmmword ptr [rdx + 2048], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x11,0xba,0x00,0x08,0x00,0x00] + vpmovusdb xmmword ptr [rdx + 2048], zmm23 + +// CHECK: vpmovusdb xmmword ptr [rdx - 2048], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x11,0x7a,0x80] + vpmovusdb xmmword ptr [rdx - 2048], zmm23 + +// CHECK: vpmovusdb xmmword ptr [rdx - 2064], zmm23 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x11,0xba,0xf0,0xf7,0xff,0xff] + vpmovusdb xmmword ptr [rdx - 2064], zmm23 + +// CHECK: vpmovdw ymmword ptr [rcx], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0x39] + vpmovdw ymmword ptr [rcx], zmm7 + +// CHECK: vpmovdw ymmword ptr [rcx] {k7}, zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4f,0x33,0x39] + vpmovdw ymmword ptr [rcx] {k7}, zmm7 + +// CHECK: vpmovdw ymmword ptr [rax + 8*r14 + 291], zmm7 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x33,0xbc,0xf0,0x23,0x01,0x00,0x00] + vpmovdw ymmword ptr [rax + 8*r14 + 291], zmm7 + +// CHECK: vpmovdw ymmword ptr [rdx + 4064], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0x7a,0x7f] + vpmovdw ymmword ptr [rdx + 4064], zmm7 + +// CHECK: vpmovdw ymmword ptr [rdx + 4096], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0xba,0x00,0x10,0x00,0x00] + vpmovdw ymmword ptr [rdx + 4096], zmm7 + +// CHECK: vpmovdw ymmword ptr [rdx - 4096], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0x7a,0x80] + vpmovdw ymmword ptr [rdx - 4096], zmm7 + +// CHECK: vpmovdw ymmword ptr [rdx - 4128], zmm7 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0xba,0xe0,0xef,0xff,0xff] + vpmovdw ymmword ptr [rdx - 4128], zmm7 + +// CHECK: vpmovsdw ymmword ptr [rcx], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x23,0x31] + vpmovsdw ymmword ptr [rcx], zmm14 + +// CHECK: vpmovsdw ymmword ptr [rcx] {k6}, zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x4e,0x23,0x31] + vpmovsdw ymmword ptr [rcx] {k6}, zmm14 + +// CHECK: vpmovsdw ymmword ptr [rax + 8*r14 + 291], zmm14 +// CHECK: encoding: [0x62,0x32,0x7e,0x48,0x23,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpmovsdw ymmword ptr [rax + 8*r14 + 291], zmm14 + +// CHECK: vpmovsdw ymmword ptr [rdx + 4064], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x23,0x72,0x7f] + vpmovsdw ymmword ptr [rdx + 4064], zmm14 + +// CHECK: vpmovsdw ymmword ptr [rdx + 4096], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x23,0xb2,0x00,0x10,0x00,0x00] + vpmovsdw ymmword ptr [rdx + 4096], zmm14 + +// CHECK: vpmovsdw ymmword ptr [rdx - 4096], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x23,0x72,0x80] + vpmovsdw ymmword ptr [rdx - 4096], zmm14 + +// CHECK: vpmovsdw ymmword ptr [rdx - 4128], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x23,0xb2,0xe0,0xef,0xff,0xff] + vpmovsdw ymmword ptr [rdx - 4128], zmm14 + +// CHECK: vpmovusdw ymmword ptr [rcx], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0x29] + vpmovusdw ymmword ptr [rcx], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rcx] {k3}, zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4b,0x13,0x29] + vpmovusdw ymmword ptr [rcx] {k3}, zmm5 + +// CHECK: vpmovusdw ymmword ptr [rax + 8*r14 + 291], zmm5 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x13,0xac,0xf0,0x23,0x01,0x00,0x00] + vpmovusdw ymmword ptr [rax + 8*r14 + 291], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rdx + 4064], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0x6a,0x7f] + vpmovusdw ymmword ptr [rdx + 4064], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rdx + 4096], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0xaa,0x00,0x10,0x00,0x00] + vpmovusdw ymmword ptr [rdx + 4096], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rdx - 4096], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0x6a,0x80] + vpmovusdw ymmword ptr [rdx - 4096], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rdx - 4128], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0xaa,0xe0,0xef,0xff,0xff] + vpmovusdw ymmword ptr [rdx - 4128], zmm5 + +// CHECK: vcvttpd2udq ymm16, zmm20 +// CHECK: encoding: [0x62,0xa1,0xfc,0x48,0x78,0xc4] + vcvttpd2udq ymm16, zmm20 + +// CHECK: vcvttpd2udq ymm16 {k7}, zmm20 +// CHECK: encoding: [0x62,0xa1,0xfc,0x4f,0x78,0xc4] + vcvttpd2udq ymm16 {k7}, zmm20 + +// CHECK: vcvttpd2udq ymm16 {k7} {z}, zmm20 +// CHECK: encoding: [0x62,0xa1,0xfc,0xcf,0x78,0xc4] + vcvttpd2udq ymm16 {k7} {z}, zmm20 + +// CHECK: vcvttpd2udq ymm16, zmm20, {sae} +// CHECK: encoding: [0x62,0xa1,0xfc,0x18,0x78,0xc4] + vcvttpd2udq ymm16, zmm20, {sae} + +// CHECK: vcvttpd2udq ymm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0x01] + vcvttpd2udq ymm16, zmmword ptr [rcx] + +// CHECK: vcvttpd2udq ymm16, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa1,0xfc,0x48,0x78,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvttpd2udq ymm16, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttpd2udq ymm16, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0x01] + vcvttpd2udq ymm16, qword ptr [rcx]{1to8} + +// CHECK: vcvttpd2udq ymm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0x42,0x7f] + vcvttpd2udq ymm16, zmmword ptr [rdx + 8128] + +// CHECK: vcvttpd2udq ymm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0x82,0x00,0x20,0x00,0x00] + vcvttpd2udq ymm16, zmmword ptr [rdx + 8192] + +// CHECK: vcvttpd2udq ymm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0x42,0x80] + vcvttpd2udq ymm16, zmmword ptr [rdx - 8192] + +// CHECK: vcvttpd2udq ymm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0x82,0xc0,0xdf,0xff,0xff] + vcvttpd2udq ymm16, zmmword ptr [rdx - 8256] + +// CHECK: vcvttpd2udq ymm16, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0x42,0x7f] + vcvttpd2udq ymm16, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvttpd2udq ymm16, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0x82,0x00,0x04,0x00,0x00] + vcvttpd2udq ymm16, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvttpd2udq ymm16, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0x42,0x80] + vcvttpd2udq ymm16, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvttpd2udq ymm16, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0x82,0xf8,0xfb,0xff,0xff] + vcvttpd2udq ymm16, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvttps2udq zmm14, zmm28 +// CHECK: encoding: [0x62,0x11,0x7c,0x48,0x78,0xf4] + vcvttps2udq zmm14, zmm28 + +// CHECK: vcvttps2udq zmm14 {k1}, zmm28 +// CHECK: encoding: [0x62,0x11,0x7c,0x49,0x78,0xf4] + vcvttps2udq zmm14 {k1}, zmm28 + +// CHECK: vcvttps2udq zmm14 {k1} {z}, zmm28 +// CHECK: encoding: [0x62,0x11,0x7c,0xc9,0x78,0xf4] + vcvttps2udq zmm14 {k1} {z}, zmm28 + +// CHECK: vcvttps2udq zmm14, zmm28, {sae} +// CHECK: encoding: [0x62,0x11,0x7c,0x18,0x78,0xf4] + vcvttps2udq zmm14, zmm28, {sae} + +// CHECK: vcvttps2udq zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x78,0x31] + vcvttps2udq zmm14, zmmword ptr [rcx] + +// CHECK: vcvttps2udq zmm14, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7c,0x48,0x78,0xb4,0xf0,0x23,0x01,0x00,0x00] + vcvttps2udq zmm14, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttps2udq zmm14, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x78,0x31] + vcvttps2udq zmm14, dword ptr [rcx]{1to16} + +// CHECK: vcvttps2udq zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x78,0x72,0x7f] + vcvttps2udq zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vcvttps2udq zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x78,0xb2,0x00,0x20,0x00,0x00] + vcvttps2udq zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vcvttps2udq zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x78,0x72,0x80] + vcvttps2udq zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vcvttps2udq zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x78,0xb2,0xc0,0xdf,0xff,0xff] + vcvttps2udq zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vcvttps2udq zmm14, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x78,0x72,0x7f] + vcvttps2udq zmm14, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvttps2udq zmm14, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x78,0xb2,0x00,0x02,0x00,0x00] + vcvttps2udq zmm14, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvttps2udq zmm14, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x78,0x72,0x80] + vcvttps2udq zmm14, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvttps2udq zmm14, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x78,0xb2,0xfc,0xfd,0xff,0xff] + vcvttps2udq zmm14, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvttsd2usi eax, xmm21 +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x78,0xc5] + vcvttsd2usi eax, xmm21 + +// CHECK: vcvttsd2usi eax, xmm21, {sae} +// CHECK: encoding: [0x62,0xb1,0x7f,0x18,0x78,0xc5] + vcvttsd2usi eax, xmm21, {sae} + +// CHECK: vcvttsd2usi eax, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x01] + vcvttsd2usi eax, qword ptr [rcx] + +// CHECK: vcvttsd2usi eax, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x78,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvttsd2usi eax, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttsd2usi eax, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x42,0x7f] + vcvttsd2usi eax, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi eax, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x82,0x00,0x04,0x00,0x00] + vcvttsd2usi eax, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi eax, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x42,0x80] + vcvttsd2usi eax, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi eax, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x82,0xf8,0xfb,0xff,0xff] + vcvttsd2usi eax, qword ptr [rdx - 1032] + +// CHECK: vcvttsd2usi ebp, xmm21 +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x78,0xed] + vcvttsd2usi ebp, xmm21 + +// CHECK: vcvttsd2usi ebp, xmm21, {sae} +// CHECK: encoding: [0x62,0xb1,0x7f,0x18,0x78,0xed] + vcvttsd2usi ebp, xmm21, {sae} + +// CHECK: vcvttsd2usi ebp, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x29] + vcvttsd2usi ebp, qword ptr [rcx] + +// CHECK: vcvttsd2usi ebp, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x78,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvttsd2usi ebp, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttsd2usi ebp, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x6a,0x7f] + vcvttsd2usi ebp, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi ebp, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0xaa,0x00,0x04,0x00,0x00] + vcvttsd2usi ebp, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi ebp, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x6a,0x80] + vcvttsd2usi ebp, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi ebp, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0xaa,0xf8,0xfb,0xff,0xff] + vcvttsd2usi ebp, qword ptr [rdx - 1032] + +// CHECK: vcvttsd2usi r13d, xmm21 +// CHECK: encoding: [0x62,0x31,0x7f,0x08,0x78,0xed] + vcvttsd2usi r13d, xmm21 + +// CHECK: vcvttsd2usi r13d, xmm21, {sae} +// CHECK: encoding: [0x62,0x31,0x7f,0x18,0x78,0xed] + vcvttsd2usi r13d, xmm21, {sae} + +// CHECK: vcvttsd2usi r13d, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0x29] + vcvttsd2usi r13d, qword ptr [rcx] + +// CHECK: vcvttsd2usi r13d, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7f,0x08,0x78,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvttsd2usi r13d, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttsd2usi r13d, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0x6a,0x7f] + vcvttsd2usi r13d, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi r13d, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0xaa,0x00,0x04,0x00,0x00] + vcvttsd2usi r13d, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi r13d, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0x6a,0x80] + vcvttsd2usi r13d, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi r13d, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0xaa,0xf8,0xfb,0xff,0xff] + vcvttsd2usi r13d, qword ptr [rdx - 1032] + +// CHECK: vcvttsd2usi rax, xmm7 +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0xc7] + vcvttsd2usi rax, xmm7 + +// CHECK: vcvttsd2usi rax, xmm7, {sae} +// CHECK: encoding: [0x62,0xf1,0xff,0x18,0x78,0xc7] + vcvttsd2usi rax, xmm7, {sae} + +// CHECK: vcvttsd2usi rax, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x01] + vcvttsd2usi rax, qword ptr [rcx] + +// CHECK: vcvttsd2usi rax, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xff,0x08,0x78,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvttsd2usi rax, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttsd2usi rax, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x42,0x7f] + vcvttsd2usi rax, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi rax, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x82,0x00,0x04,0x00,0x00] + vcvttsd2usi rax, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi rax, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x42,0x80] + vcvttsd2usi rax, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi rax, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x82,0xf8,0xfb,0xff,0xff] + vcvttsd2usi rax, qword ptr [rdx - 1032] + +// CHECK: vcvttsd2usi r8, xmm7 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0xc7] + vcvttsd2usi r8, xmm7 + +// CHECK: vcvttsd2usi r8, xmm7, {sae} +// CHECK: encoding: [0x62,0x71,0xff,0x18,0x78,0xc7] + vcvttsd2usi r8, xmm7, {sae} + +// CHECK: vcvttsd2usi r8, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x01] + vcvttsd2usi r8, qword ptr [rcx] + +// CHECK: vcvttsd2usi r8, qword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xff,0x08,0x78,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvttsd2usi r8, qword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttsd2usi r8, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x42,0x7f] + vcvttsd2usi r8, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi r8, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x82,0x00,0x04,0x00,0x00] + vcvttsd2usi r8, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi r8, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x42,0x80] + vcvttsd2usi r8, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi r8, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x82,0xf8,0xfb,0xff,0xff] + vcvttsd2usi r8, qword ptr [rdx - 1032] + +// CHECK: vcvttss2usi eax, xmm18 +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x78,0xc2] + vcvttss2usi eax, xmm18 + +// CHECK: vcvttss2usi eax, xmm18, {sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x18,0x78,0xc2] + vcvttss2usi eax, xmm18, {sae} + +// CHECK: vcvttss2usi eax, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x01] + vcvttss2usi eax, dword ptr [rcx] + +// CHECK: vcvttss2usi eax, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x78,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvttss2usi eax, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttss2usi eax, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x42,0x7f] + vcvttss2usi eax, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi eax, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x82,0x00,0x02,0x00,0x00] + vcvttss2usi eax, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi eax, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x42,0x80] + vcvttss2usi eax, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi eax, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x82,0xfc,0xfd,0xff,0xff] + vcvttss2usi eax, dword ptr [rdx - 516] + +// CHECK: vcvttss2usi ebp, xmm18 +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x78,0xea] + vcvttss2usi ebp, xmm18 + +// CHECK: vcvttss2usi ebp, xmm18, {sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x18,0x78,0xea] + vcvttss2usi ebp, xmm18, {sae} + +// CHECK: vcvttss2usi ebp, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x29] + vcvttss2usi ebp, dword ptr [rcx] + +// CHECK: vcvttss2usi ebp, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x78,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvttss2usi ebp, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttss2usi ebp, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x6a,0x7f] + vcvttss2usi ebp, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi ebp, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0xaa,0x00,0x02,0x00,0x00] + vcvttss2usi ebp, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi ebp, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x6a,0x80] + vcvttss2usi ebp, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi ebp, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0xaa,0xfc,0xfd,0xff,0xff] + vcvttss2usi ebp, dword ptr [rdx - 516] + +// CHECK: vcvttss2usi r13d, xmm18 +// CHECK: encoding: [0x62,0x31,0x7e,0x08,0x78,0xea] + vcvttss2usi r13d, xmm18 + +// CHECK: vcvttss2usi r13d, xmm18, {sae} +// CHECK: encoding: [0x62,0x31,0x7e,0x18,0x78,0xea] + vcvttss2usi r13d, xmm18, {sae} + +// CHECK: vcvttss2usi r13d, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0x29] + vcvttss2usi r13d, dword ptr [rcx] + +// CHECK: vcvttss2usi r13d, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0x7e,0x08,0x78,0xac,0xf0,0x23,0x01,0x00,0x00] + vcvttss2usi r13d, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttss2usi r13d, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0x6a,0x7f] + vcvttss2usi r13d, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi r13d, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0xaa,0x00,0x02,0x00,0x00] + vcvttss2usi r13d, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi r13d, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0x6a,0x80] + vcvttss2usi r13d, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi r13d, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0xaa,0xfc,0xfd,0xff,0xff] + vcvttss2usi r13d, dword ptr [rdx - 516] + +// CHECK: vcvttss2usi rax, xmm27 +// CHECK: encoding: [0x62,0x91,0xfe,0x08,0x78,0xc3] + vcvttss2usi rax, xmm27 + +// CHECK: vcvttss2usi rax, xmm27, {sae} +// CHECK: encoding: [0x62,0x91,0xfe,0x18,0x78,0xc3] + vcvttss2usi rax, xmm27, {sae} + +// CHECK: vcvttss2usi rax, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x01] + vcvttss2usi rax, dword ptr [rcx] + +// CHECK: vcvttss2usi rax, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xb1,0xfe,0x08,0x78,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvttss2usi rax, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttss2usi rax, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x42,0x7f] + vcvttss2usi rax, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi rax, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x82,0x00,0x02,0x00,0x00] + vcvttss2usi rax, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi rax, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x42,0x80] + vcvttss2usi rax, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi rax, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x82,0xfc,0xfd,0xff,0xff] + vcvttss2usi rax, dword ptr [rdx - 516] + +// CHECK: vcvttss2usi r8, xmm27 +// CHECK: encoding: [0x62,0x11,0xfe,0x08,0x78,0xc3] + vcvttss2usi r8, xmm27 + +// CHECK: vcvttss2usi r8, xmm27, {sae} +// CHECK: encoding: [0x62,0x11,0xfe,0x18,0x78,0xc3] + vcvttss2usi r8, xmm27, {sae} + +// CHECK: vcvttss2usi r8, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x01] + vcvttss2usi r8, dword ptr [rcx] + +// CHECK: vcvttss2usi r8, dword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x31,0xfe,0x08,0x78,0x84,0xf0,0x23,0x01,0x00,0x00] + vcvttss2usi r8, dword ptr [rax + 8*r14 + 291] + +// CHECK: vcvttss2usi r8, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x42,0x7f] + vcvttss2usi r8, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi r8, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x82,0x00,0x02,0x00,0x00] + vcvttss2usi r8, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi r8, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x42,0x80] + vcvttss2usi r8, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi r8, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x82,0xfc,0xfd,0xff,0xff] + vcvttss2usi r8, dword ptr [rdx - 516] + +// CHECK: vpermi2d zmm10, zmm28, zmm4 +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x76,0xd4] + vpermi2d zmm10, zmm28, zmm4 + +// CHECK: vpermi2d zmm10 {k5}, zmm28, zmm4 +// CHECK: encoding: [0x62,0x72,0x1d,0x45,0x76,0xd4] + vpermi2d zmm10 {k5}, zmm28, zmm4 + +// CHECK: vpermi2d zmm10 {k5} {z}, zmm28, zmm4 +// CHECK: encoding: [0x62,0x72,0x1d,0xc5,0x76,0xd4] + vpermi2d zmm10 {k5} {z}, zmm28, zmm4 + +// CHECK: vpermi2d zmm10, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x76,0x11] + vpermi2d zmm10, zmm28, zmmword ptr [rcx] + +// CHECK: vpermi2d zmm10, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x32,0x1d,0x40,0x76,0x94,0xf0,0x23,0x01,0x00,0x00] + vpermi2d zmm10, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermi2d zmm10, zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x76,0x11] + vpermi2d zmm10, zmm28, dword ptr [rcx]{1to16} + +// CHECK: vpermi2d zmm10, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x76,0x52,0x7f] + vpermi2d zmm10, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vpermi2d zmm10, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x76,0x92,0x00,0x20,0x00,0x00] + vpermi2d zmm10, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vpermi2d zmm10, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x76,0x52,0x80] + vpermi2d zmm10, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vpermi2d zmm10, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0x76,0x92,0xc0,0xdf,0xff,0xff] + vpermi2d zmm10, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vpermi2d zmm10, zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x76,0x52,0x7f] + vpermi2d zmm10, zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermi2d zmm10, zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x76,0x92,0x00,0x02,0x00,0x00] + vpermi2d zmm10, zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermi2d zmm10, zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x76,0x52,0x80] + vpermi2d zmm10, zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermi2d zmm10, zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0x76,0x92,0xfc,0xfd,0xff,0xff] + vpermi2d zmm10, zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermi2q zmm18, zmm28, zmm28 +// CHECK: encoding: [0x62,0x82,0x9d,0x40,0x76,0xd4] + vpermi2q zmm18, zmm28, zmm28 + +// CHECK: vpermi2q zmm18 {k2}, zmm28, zmm28 +// CHECK: encoding: [0x62,0x82,0x9d,0x42,0x76,0xd4] + vpermi2q zmm18 {k2}, zmm28, zmm28 + +// CHECK: vpermi2q zmm18 {k2} {z}, zmm28, zmm28 +// CHECK: encoding: [0x62,0x82,0x9d,0xc2,0x76,0xd4] + vpermi2q zmm18 {k2} {z}, zmm28, zmm28 + +// CHECK: vpermi2q zmm18, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x76,0x11] + vpermi2q zmm18, zmm28, zmmword ptr [rcx] + +// CHECK: vpermi2q zmm18, zmm28, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0x9d,0x40,0x76,0x94,0xf0,0x23,0x01,0x00,0x00] + vpermi2q zmm18, zmm28, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermi2q zmm18, zmm28, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x76,0x11] + vpermi2q zmm18, zmm28, qword ptr [rcx]{1to8} + +// CHECK: vpermi2q zmm18, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x76,0x52,0x7f] + vpermi2q zmm18, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vpermi2q zmm18, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x76,0x92,0x00,0x20,0x00,0x00] + vpermi2q zmm18, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vpermi2q zmm18, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x76,0x52,0x80] + vpermi2q zmm18, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vpermi2q zmm18, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x9d,0x40,0x76,0x92,0xc0,0xdf,0xff,0xff] + vpermi2q zmm18, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vpermi2q zmm18, zmm28, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x76,0x52,0x7f] + vpermi2q zmm18, zmm28, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermi2q zmm18, zmm28, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x76,0x92,0x00,0x04,0x00,0x00] + vpermi2q zmm18, zmm28, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermi2q zmm18, zmm28, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x76,0x52,0x80] + vpermi2q zmm18, zmm28, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermi2q zmm18, zmm28, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0x9d,0x50,0x76,0x92,0xf8,0xfb,0xff,0xff] + vpermi2q zmm18, zmm28, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermi2ps zmm24, zmm23, zmm8 +// CHECK: encoding: [0x62,0x42,0x45,0x40,0x77,0xc0] + vpermi2ps zmm24, zmm23, zmm8 + +// CHECK: vpermi2ps zmm24 {k2}, zmm23, zmm8 +// CHECK: encoding: [0x62,0x42,0x45,0x42,0x77,0xc0] + vpermi2ps zmm24 {k2}, zmm23, zmm8 + +// CHECK: vpermi2ps zmm24 {k2} {z}, zmm23, zmm8 +// CHECK: encoding: [0x62,0x42,0x45,0xc2,0x77,0xc0] + vpermi2ps zmm24 {k2} {z}, zmm23, zmm8 + +// CHECK: vpermi2ps zmm24, zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x45,0x40,0x77,0x01] + vpermi2ps zmm24, zmm23, zmmword ptr [rcx] + +// CHECK: vpermi2ps zmm24, zmm23, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0x22,0x45,0x40,0x77,0x84,0xf0,0x23,0x01,0x00,0x00] + vpermi2ps zmm24, zmm23, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermi2ps zmm24, zmm23, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x50,0x77,0x01] + vpermi2ps zmm24, zmm23, dword ptr [rcx]{1to16} + +// CHECK: vpermi2ps zmm24, zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x45,0x40,0x77,0x42,0x7f] + vpermi2ps zmm24, zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vpermi2ps zmm24, zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x45,0x40,0x77,0x82,0x00,0x20,0x00,0x00] + vpermi2ps zmm24, zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vpermi2ps zmm24, zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x45,0x40,0x77,0x42,0x80] + vpermi2ps zmm24, zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vpermi2ps zmm24, zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x45,0x40,0x77,0x82,0xc0,0xdf,0xff,0xff] + vpermi2ps zmm24, zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vpermi2ps zmm24, zmm23, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x50,0x77,0x42,0x7f] + vpermi2ps zmm24, zmm23, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermi2ps zmm24, zmm23, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x50,0x77,0x82,0x00,0x02,0x00,0x00] + vpermi2ps zmm24, zmm23, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermi2ps zmm24, zmm23, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x50,0x77,0x42,0x80] + vpermi2ps zmm24, zmm23, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermi2ps zmm24, zmm23, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x50,0x77,0x82,0xfc,0xfd,0xff,0xff] + vpermi2ps zmm24, zmm23, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermi2pd zmm20, zmm5, zmm20 +// CHECK: encoding: [0x62,0xa2,0xd5,0x48,0x77,0xe4] + vpermi2pd zmm20, zmm5, zmm20 + +// CHECK: vpermi2pd zmm20 {k3}, zmm5, zmm20 +// CHECK: encoding: [0x62,0xa2,0xd5,0x4b,0x77,0xe4] + vpermi2pd zmm20 {k3}, zmm5, zmm20 + +// CHECK: vpermi2pd zmm20 {k3} {z}, zmm5, zmm20 +// CHECK: encoding: [0x62,0xa2,0xd5,0xcb,0x77,0xe4] + vpermi2pd zmm20 {k3} {z}, zmm5, zmm20 + +// CHECK: vpermi2pd zmm20, zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x77,0x21] + vpermi2pd zmm20, zmm5, zmmword ptr [rcx] + +// CHECK: vpermi2pd zmm20, zmm5, zmmword ptr [rax + 8*r14 + 291] +// CHECK: encoding: [0x62,0xa2,0xd5,0x48,0x77,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpermi2pd zmm20, zmm5, zmmword ptr [rax + 8*r14 + 291] + +// CHECK: vpermi2pd zmm20, zmm5, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x77,0x21] + vpermi2pd zmm20, zmm5, qword ptr [rcx]{1to8} + +// CHECK: vpermi2pd zmm20, zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x77,0x62,0x7f] + vpermi2pd zmm20, zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vpermi2pd zmm20, zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x77,0xa2,0x00,0x20,0x00,0x00] + vpermi2pd zmm20, zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vpermi2pd zmm20, zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x77,0x62,0x80] + vpermi2pd zmm20, zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vpermi2pd zmm20, zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xd5,0x48,0x77,0xa2,0xc0,0xdf,0xff,0xff] + vpermi2pd zmm20, zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vpermi2pd zmm20, zmm5, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x77,0x62,0x7f] + vpermi2pd zmm20, zmm5, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermi2pd zmm20, zmm5, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x77,0xa2,0x00,0x04,0x00,0x00] + vpermi2pd zmm20, zmm5, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermi2pd zmm20, zmm5, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x77,0x62,0x80] + vpermi2pd zmm20, zmm5, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermi2pd zmm20, zmm5, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xd5,0x58,0x77,0xa2,0xf8,0xfb,0xff,0xff] + vpermi2pd zmm20, zmm5, qword ptr [rdx - 1032]{1to8} + +// CHECK: vaddpd zmm17, zmm11, zmm2 +// CHECK: encoding: [0x62,0xe1,0xa5,0x48,0x58,0xca] + vaddpd zmm17, zmm11, zmm2 + +// CHECK: vaddpd zmm17 {k1}, zmm11, zmm2 +// CHECK: encoding: [0x62,0xe1,0xa5,0x49,0x58,0xca] + vaddpd zmm17 {k1}, zmm11, zmm2 + +// CHECK: vaddpd zmm17 {k1} {z}, zmm11, zmm2 +// CHECK: encoding: [0x62,0xe1,0xa5,0xc9,0x58,0xca] + vaddpd zmm17 {k1} {z}, zmm11, zmm2 + +// CHECK: vaddpd zmm17, zmm11, zmm2, {rn-sae} +// CHECK: encoding: [0x62,0xe1,0xa5,0x18,0x58,0xca] + vaddpd zmm17, zmm11, zmm2, {rn-sae} + +// CHECK: vaddpd zmm17, zmm11, zmm2, {ru-sae} +// CHECK: encoding: [0x62,0xe1,0xa5,0x58,0x58,0xca] + vaddpd zmm17, zmm11, zmm2, {ru-sae} + +// CHECK: vaddpd zmm17, zmm11, zmm2, {rd-sae} +// CHECK: encoding: [0x62,0xe1,0xa5,0x38,0x58,0xca] + vaddpd zmm17, zmm11, zmm2, {rd-sae} + +// CHECK: vaddpd zmm17, zmm11, zmm2, {rz-sae} +// CHECK: encoding: [0x62,0xe1,0xa5,0x78,0x58,0xca] + vaddpd zmm17, zmm11, zmm2, {rz-sae} + +// CHECK: vaddpd zmm17, zmm11, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xa5,0x48,0x58,0x09] + vaddpd zmm17, zmm11, zmmword ptr [rcx] + +// CHECK: vaddpd zmm17, zmm11, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xa5,0x48,0x58,0x8c,0xf0,0x34,0x12,0x00,0x00] + vaddpd zmm17, zmm11, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vaddpd zmm17, zmm11, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xa5,0x58,0x58,0x09] + vaddpd zmm17, zmm11, qword ptr [rcx]{1to8} + +// CHECK: vaddpd zmm17, zmm11, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xa5,0x48,0x58,0x4a,0x7f] + vaddpd zmm17, zmm11, zmmword ptr [rdx + 8128] + +// CHECK: vaddpd zmm17, zmm11, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xa5,0x48,0x58,0x8a,0x00,0x20,0x00,0x00] + vaddpd zmm17, zmm11, zmmword ptr [rdx + 8192] + +// CHECK: vaddpd zmm17, zmm11, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xa5,0x48,0x58,0x4a,0x80] + vaddpd zmm17, zmm11, zmmword ptr [rdx - 8192] + +// CHECK: vaddpd zmm17, zmm11, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xa5,0x48,0x58,0x8a,0xc0,0xdf,0xff,0xff] + vaddpd zmm17, zmm11, zmmword ptr [rdx - 8256] + +// CHECK: vaddpd zmm17, zmm11, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xa5,0x58,0x58,0x4a,0x7f] + vaddpd zmm17, zmm11, qword ptr [rdx + 1016]{1to8} + +// CHECK: vaddpd zmm17, zmm11, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xa5,0x58,0x58,0x8a,0x00,0x04,0x00,0x00] + vaddpd zmm17, zmm11, qword ptr [rdx + 1024]{1to8} + +// CHECK: vaddpd zmm17, zmm11, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xa5,0x58,0x58,0x4a,0x80] + vaddpd zmm17, zmm11, qword ptr [rdx - 1024]{1to8} + +// CHECK: vaddpd zmm17, zmm11, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xa5,0x58,0x58,0x8a,0xf8,0xfb,0xff,0xff] + vaddpd zmm17, zmm11, qword ptr [rdx - 1032]{1to8} + +// CHECK: vaddps zmm3, zmm6, zmm5 +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x58,0xdd] + vaddps zmm3, zmm6, zmm5 + +// CHECK: vaddps zmm3 {k1}, zmm6, zmm5 +// CHECK: encoding: [0x62,0xf1,0x4c,0x49,0x58,0xdd] + vaddps zmm3 {k1}, zmm6, zmm5 + +// CHECK: vaddps zmm3 {k1} {z}, zmm6, zmm5 +// CHECK: encoding: [0x62,0xf1,0x4c,0xc9,0x58,0xdd] + vaddps zmm3 {k1} {z}, zmm6, zmm5 + +// CHECK: vaddps zmm3, zmm6, zmm5, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x4c,0x18,0x58,0xdd] + vaddps zmm3, zmm6, zmm5, {rn-sae} + +// CHECK: vaddps zmm3, zmm6, zmm5, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x58,0xdd] + vaddps zmm3, zmm6, zmm5, {ru-sae} + +// CHECK: vaddps zmm3, zmm6, zmm5, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x4c,0x38,0x58,0xdd] + vaddps zmm3, zmm6, zmm5, {rd-sae} + +// CHECK: vaddps zmm3, zmm6, zmm5, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x4c,0x78,0x58,0xdd] + vaddps zmm3, zmm6, zmm5, {rz-sae} + +// CHECK: vaddps zmm3, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x58,0x19] + vaddps zmm3, zmm6, zmmword ptr [rcx] + +// CHECK: vaddps zmm3, zmm6, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x4c,0x48,0x58,0x9c,0xf0,0x34,0x12,0x00,0x00] + vaddps zmm3, zmm6, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vaddps zmm3, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x58,0x19] + vaddps zmm3, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vaddps zmm3, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x58,0x5a,0x7f] + vaddps zmm3, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vaddps zmm3, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x58,0x9a,0x00,0x20,0x00,0x00] + vaddps zmm3, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vaddps zmm3, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x58,0x5a,0x80] + vaddps zmm3, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vaddps zmm3, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x4c,0x48,0x58,0x9a,0xc0,0xdf,0xff,0xff] + vaddps zmm3, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vaddps zmm3, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x58,0x5a,0x7f] + vaddps zmm3, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vaddps zmm3, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x58,0x9a,0x00,0x02,0x00,0x00] + vaddps zmm3, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vaddps zmm3, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x58,0x5a,0x80] + vaddps zmm3, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vaddps zmm3, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x4c,0x58,0x58,0x9a,0xfc,0xfd,0xff,0xff] + vaddps zmm3, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vaddsd xmm1, xmm18, xmm27 +// CHECK: encoding: [0x62,0x91,0xef,0x00,0x58,0xcb] + vaddsd xmm1, xmm18, xmm27 + +// CHECK: vaddsd xmm1 {k3}, xmm18, xmm27 +// CHECK: encoding: [0x62,0x91,0xef,0x03,0x58,0xcb] + vaddsd xmm1 {k3}, xmm18, xmm27 + +// CHECK: vaddsd xmm1 {k3} {z}, xmm18, xmm27 +// CHECK: encoding: [0x62,0x91,0xef,0x83,0x58,0xcb] + vaddsd xmm1 {k3} {z}, xmm18, xmm27 + +// CHECK: vaddsd xmm1, xmm18, xmm27, {rn-sae} +// CHECK: encoding: [0x62,0x91,0xef,0x10,0x58,0xcb] + vaddsd xmm1, xmm18, xmm27, {rn-sae} + +// CHECK: vaddsd xmm1, xmm18, xmm27, {ru-sae} +// CHECK: encoding: [0x62,0x91,0xef,0x50,0x58,0xcb] + vaddsd xmm1, xmm18, xmm27, {ru-sae} + +// CHECK: vaddsd xmm1, xmm18, xmm27, {rd-sae} +// CHECK: encoding: [0x62,0x91,0xef,0x30,0x58,0xcb] + vaddsd xmm1, xmm18, xmm27, {rd-sae} + +// CHECK: vaddsd xmm1, xmm18, xmm27, {rz-sae} +// CHECK: encoding: [0x62,0x91,0xef,0x70,0x58,0xcb] + vaddsd xmm1, xmm18, xmm27, {rz-sae} + +// CHECK: vaddsd xmm1, xmm18, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xef,0x00,0x58,0x09] + vaddsd xmm1, xmm18, qword ptr [rcx] + +// CHECK: vaddsd xmm1, xmm18, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xef,0x00,0x58,0x8c,0xf0,0x34,0x12,0x00,0x00] + vaddsd xmm1, xmm18, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vaddsd xmm1, xmm18, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0xef,0x00,0x58,0x4a,0x7f] + vaddsd xmm1, xmm18, qword ptr [rdx + 1016] + +// CHECK: vaddsd xmm1, xmm18, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0xef,0x00,0x58,0x8a,0x00,0x04,0x00,0x00] + vaddsd xmm1, xmm18, qword ptr [rdx + 1024] + +// CHECK: vaddsd xmm1, xmm18, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0xef,0x00,0x58,0x4a,0x80] + vaddsd xmm1, xmm18, qword ptr [rdx - 1024] + +// CHECK: vaddsd xmm1, xmm18, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0xef,0x00,0x58,0x8a,0xf8,0xfb,0xff,0xff] + vaddsd xmm1, xmm18, qword ptr [rdx - 1032] + +// CHECK: vaddss xmm17, xmm14, xmm15 +// CHECK: encoding: [0x62,0xc1,0x0e,0x08,0x58,0xcf] + vaddss xmm17, xmm14, xmm15 + +// CHECK: vaddss xmm17 {k4}, xmm14, xmm15 +// CHECK: encoding: [0x62,0xc1,0x0e,0x0c,0x58,0xcf] + vaddss xmm17 {k4}, xmm14, xmm15 + +// CHECK: vaddss xmm17 {k4} {z}, xmm14, xmm15 +// CHECK: encoding: [0x62,0xc1,0x0e,0x8c,0x58,0xcf] + vaddss xmm17 {k4} {z}, xmm14, xmm15 + +// CHECK: vaddss xmm17, xmm14, xmm15, {rn-sae} +// CHECK: encoding: [0x62,0xc1,0x0e,0x18,0x58,0xcf] + vaddss xmm17, xmm14, xmm15, {rn-sae} + +// CHECK: vaddss xmm17, xmm14, xmm15, {ru-sae} +// CHECK: encoding: [0x62,0xc1,0x0e,0x58,0x58,0xcf] + vaddss xmm17, xmm14, xmm15, {ru-sae} + +// CHECK: vaddss xmm17, xmm14, xmm15, {rd-sae} +// CHECK: encoding: [0x62,0xc1,0x0e,0x38,0x58,0xcf] + vaddss xmm17, xmm14, xmm15, {rd-sae} + +// CHECK: vaddss xmm17, xmm14, xmm15, {rz-sae} +// CHECK: encoding: [0x62,0xc1,0x0e,0x78,0x58,0xcf] + vaddss xmm17, xmm14, xmm15, {rz-sae} + +// CHECK: vaddss xmm17, xmm14, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x0e,0x08,0x58,0x09] + vaddss xmm17, xmm14, dword ptr [rcx] + +// CHECK: vaddss xmm17, xmm14, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x0e,0x08,0x58,0x8c,0xf0,0x34,0x12,0x00,0x00] + vaddss xmm17, xmm14, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vaddss xmm17, xmm14, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe1,0x0e,0x08,0x58,0x4a,0x7f] + vaddss xmm17, xmm14, dword ptr [rdx + 508] + +// CHECK: vaddss xmm17, xmm14, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe1,0x0e,0x08,0x58,0x8a,0x00,0x02,0x00,0x00] + vaddss xmm17, xmm14, dword ptr [rdx + 512] + +// CHECK: vaddss xmm17, xmm14, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe1,0x0e,0x08,0x58,0x4a,0x80] + vaddss xmm17, xmm14, dword ptr [rdx - 512] + +// CHECK: vaddss xmm17, xmm14, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe1,0x0e,0x08,0x58,0x8a,0xfc,0xfd,0xff,0xff] + vaddss xmm17, xmm14, dword ptr [rdx - 516] + +// CHECK: valignd zmm15, zmm7, zmm5, 171 +// CHECK: encoding: [0x62,0x73,0x45,0x48,0x03,0xfd,0xab] + valignd zmm15, zmm7, zmm5, 171 + +// CHECK: valignd zmm15 {k2}, zmm7, zmm5, 171 +// CHECK: encoding: [0x62,0x73,0x45,0x4a,0x03,0xfd,0xab] + valignd zmm15 {k2}, zmm7, zmm5, 171 + +// CHECK: valignd zmm15 {k2} {z}, zmm7, zmm5, 171 +// CHECK: encoding: [0x62,0x73,0x45,0xca,0x03,0xfd,0xab] + valignd zmm15 {k2} {z}, zmm7, zmm5, 171 + +// CHECK: valignd zmm15, zmm7, zmm5, 123 +// CHECK: encoding: [0x62,0x73,0x45,0x48,0x03,0xfd,0x7b] + valignd zmm15, zmm7, zmm5, 123 + +// CHECK: valignd zmm15, zmm7, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x45,0x48,0x03,0x39,0x7b] + valignd zmm15, zmm7, zmmword ptr [rcx], 123 + +// CHECK: valignd zmm15, zmm7, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x33,0x45,0x48,0x03,0xbc,0xf0,0x34,0x12,0x00,0x00,0x7b] + valignd zmm15, zmm7, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: valignd zmm15, zmm7, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x45,0x58,0x03,0x39,0x7b] + valignd zmm15, zmm7, dword ptr [rcx]{1to16}, 123 + +// CHECK: valignd zmm15, zmm7, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0x45,0x48,0x03,0x7a,0x7f,0x7b] + valignd zmm15, zmm7, zmmword ptr [rdx + 8128], 123 + +// CHECK: valignd zmm15, zmm7, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0x45,0x48,0x03,0xba,0x00,0x20,0x00,0x00,0x7b] + valignd zmm15, zmm7, zmmword ptr [rdx + 8192], 123 + +// CHECK: valignd zmm15, zmm7, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0x45,0x48,0x03,0x7a,0x80,0x7b] + valignd zmm15, zmm7, zmmword ptr [rdx - 8192], 123 + +// CHECK: valignd zmm15, zmm7, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0x45,0x48,0x03,0xba,0xc0,0xdf,0xff,0xff,0x7b] + valignd zmm15, zmm7, zmmword ptr [rdx - 8256], 123 + +// CHECK: valignd zmm15, zmm7, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x45,0x58,0x03,0x7a,0x7f,0x7b] + valignd zmm15, zmm7, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: valignd zmm15, zmm7, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x45,0x58,0x03,0xba,0x00,0x02,0x00,0x00,0x7b] + valignd zmm15, zmm7, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: valignd zmm15, zmm7, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x45,0x58,0x03,0x7a,0x80,0x7b] + valignd zmm15, zmm7, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: valignd zmm15, zmm7, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x45,0x58,0x03,0xba,0xfc,0xfd,0xff,0xff,0x7b] + valignd zmm15, zmm7, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vblendmpd zmm23, zmm2, zmm8 +// CHECK: encoding: [0x62,0xc2,0xed,0x48,0x65,0xf8] + vblendmpd zmm23, zmm2, zmm8 + +// CHECK: vblendmpd zmm23 {k7}, zmm2, zmm8 +// CHECK: encoding: [0x62,0xc2,0xed,0x4f,0x65,0xf8] + vblendmpd zmm23 {k7}, zmm2, zmm8 + +// CHECK: vblendmpd zmm23 {k7} {z}, zmm2, zmm8 +// CHECK: encoding: [0x62,0xc2,0xed,0xcf,0x65,0xf8] + vblendmpd zmm23 {k7} {z}, zmm2, zmm8 + +// CHECK: vblendmpd zmm23, zmm2, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0x65,0x39] + vblendmpd zmm23, zmm2, zmmword ptr [rcx] + +// CHECK: vblendmpd zmm23, zmm2, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xed,0x48,0x65,0xbc,0xf0,0x34,0x12,0x00,0x00] + vblendmpd zmm23, zmm2, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vblendmpd zmm23, zmm2, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0x65,0x39] + vblendmpd zmm23, zmm2, qword ptr [rcx]{1to8} + +// CHECK: vblendmpd zmm23, zmm2, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0x65,0x7a,0x7f] + vblendmpd zmm23, zmm2, zmmword ptr [rdx + 8128] + +// CHECK: vblendmpd zmm23, zmm2, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0x65,0xba,0x00,0x20,0x00,0x00] + vblendmpd zmm23, zmm2, zmmword ptr [rdx + 8192] + +// CHECK: vblendmpd zmm23, zmm2, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0x65,0x7a,0x80] + vblendmpd zmm23, zmm2, zmmword ptr [rdx - 8192] + +// CHECK: vblendmpd zmm23, zmm2, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0x65,0xba,0xc0,0xdf,0xff,0xff] + vblendmpd zmm23, zmm2, zmmword ptr [rdx - 8256] + +// CHECK: vblendmpd zmm23, zmm2, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0x65,0x7a,0x7f] + vblendmpd zmm23, zmm2, qword ptr [rdx + 1016]{1to8} + +// CHECK: vblendmpd zmm23, zmm2, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0x65,0xba,0x00,0x04,0x00,0x00] + vblendmpd zmm23, zmm2, qword ptr [rdx + 1024]{1to8} + +// CHECK: vblendmpd zmm23, zmm2, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0x65,0x7a,0x80] + vblendmpd zmm23, zmm2, qword ptr [rdx - 1024]{1to8} + +// CHECK: vblendmpd zmm23, zmm2, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0x65,0xba,0xf8,0xfb,0xff,0xff] + vblendmpd zmm23, zmm2, qword ptr [rdx - 1032]{1to8} + +// CHECK: vblendmps zmm23, zmm9, zmm7 +// CHECK: encoding: [0x62,0xe2,0x35,0x48,0x65,0xff] + vblendmps zmm23, zmm9, zmm7 + +// CHECK: vblendmps zmm23 {k7}, zmm9, zmm7 +// CHECK: encoding: [0x62,0xe2,0x35,0x4f,0x65,0xff] + vblendmps zmm23 {k7}, zmm9, zmm7 + +// CHECK: vblendmps zmm23 {k7} {z}, zmm9, zmm7 +// CHECK: encoding: [0x62,0xe2,0x35,0xcf,0x65,0xff] + vblendmps zmm23 {k7} {z}, zmm9, zmm7 + +// CHECK: vblendmps zmm23, zmm9, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x35,0x48,0x65,0x39] + vblendmps zmm23, zmm9, zmmword ptr [rcx] + +// CHECK: vblendmps zmm23, zmm9, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x35,0x48,0x65,0xbc,0xf0,0x34,0x12,0x00,0x00] + vblendmps zmm23, zmm9, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vblendmps zmm23, zmm9, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x58,0x65,0x39] + vblendmps zmm23, zmm9, dword ptr [rcx]{1to16} + +// CHECK: vblendmps zmm23, zmm9, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x35,0x48,0x65,0x7a,0x7f] + vblendmps zmm23, zmm9, zmmword ptr [rdx + 8128] + +// CHECK: vblendmps zmm23, zmm9, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x35,0x48,0x65,0xba,0x00,0x20,0x00,0x00] + vblendmps zmm23, zmm9, zmmword ptr [rdx + 8192] + +// CHECK: vblendmps zmm23, zmm9, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x35,0x48,0x65,0x7a,0x80] + vblendmps zmm23, zmm9, zmmword ptr [rdx - 8192] + +// CHECK: vblendmps zmm23, zmm9, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x35,0x48,0x65,0xba,0xc0,0xdf,0xff,0xff] + vblendmps zmm23, zmm9, zmmword ptr [rdx - 8256] + +// CHECK: vblendmps zmm23, zmm9, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x58,0x65,0x7a,0x7f] + vblendmps zmm23, zmm9, dword ptr [rdx + 508]{1to16} + +// CHECK: vblendmps zmm23, zmm9, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x58,0x65,0xba,0x00,0x02,0x00,0x00] + vblendmps zmm23, zmm9, dword ptr [rdx + 512]{1to16} + +// CHECK: vblendmps zmm23, zmm9, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x58,0x65,0x7a,0x80] + vblendmps zmm23, zmm9, dword ptr [rdx - 512]{1to16} + +// CHECK: vblendmps zmm23, zmm9, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x58,0x65,0xba,0xfc,0xfd,0xff,0xff] + vblendmps zmm23, zmm9, dword ptr [rdx - 516]{1to16} + +// CHECK: vbroadcastf32x4 zmm15, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1a,0x39] + vbroadcastf32x4 zmm15, xmmword ptr [rcx] + +// CHECK: vbroadcastf32x4 zmm15 {k3}, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x4b,0x1a,0x39] + vbroadcastf32x4 zmm15 {k3}, xmmword ptr [rcx] + +// CHECK: vbroadcastf32x4 zmm15 {k3} {z}, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0xcb,0x1a,0x39] + vbroadcastf32x4 zmm15 {k3} {z}, xmmword ptr [rcx] + +// CHECK: vbroadcastf32x4 zmm15, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x1a,0xbc,0xf0,0x34,0x12,0x00,0x00] + vbroadcastf32x4 zmm15, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vbroadcastf32x4 zmm15, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1a,0x7a,0x7f] + vbroadcastf32x4 zmm15, xmmword ptr [rdx + 2032] + +// CHECK: vbroadcastf32x4 zmm15, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1a,0xba,0x00,0x08,0x00,0x00] + vbroadcastf32x4 zmm15, xmmword ptr [rdx + 2048] + +// CHECK: vbroadcastf32x4 zmm15, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1a,0x7a,0x80] + vbroadcastf32x4 zmm15, xmmword ptr [rdx - 2048] + +// CHECK: vbroadcastf32x4 zmm15, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x1a,0xba,0xf0,0xf7,0xff,0xff] + vbroadcastf32x4 zmm15, xmmword ptr [rdx - 2064] + +// CHECK: vbroadcastf64x4 zmm26, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x11] + vbroadcastf64x4 zmm26, ymmword ptr [rcx] + +// CHECK: vbroadcastf64x4 zmm26 {k1}, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x49,0x1b,0x11] + vbroadcastf64x4 zmm26 {k1}, ymmword ptr [rcx] + +// CHECK: vbroadcastf64x4 zmm26 {k1} {z}, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0xc9,0x1b,0x11] + vbroadcastf64x4 zmm26 {k1} {z}, ymmword ptr [rcx] + +// CHECK: vbroadcastf64x4 zmm26, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x1b,0x94,0xf0,0x34,0x12,0x00,0x00] + vbroadcastf64x4 zmm26, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vbroadcastf64x4 zmm26, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x52,0x7f] + vbroadcastf64x4 zmm26, ymmword ptr [rdx + 4064] + +// CHECK: vbroadcastf64x4 zmm26, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x92,0x00,0x10,0x00,0x00] + vbroadcastf64x4 zmm26, ymmword ptr [rdx + 4096] + +// CHECK: vbroadcastf64x4 zmm26, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x52,0x80] + vbroadcastf64x4 zmm26, ymmword ptr [rdx - 4096] + +// CHECK: vbroadcastf64x4 zmm26, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x92,0xe0,0xef,0xff,0xff] + vbroadcastf64x4 zmm26, ymmword ptr [rdx - 4128] + +// CHECK: vbroadcasti32x4 zmm2, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x5a,0x11] + vbroadcasti32x4 zmm2, xmmword ptr [rcx] + +// CHECK: vbroadcasti32x4 zmm2 {k5}, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x4d,0x5a,0x11] + vbroadcasti32x4 zmm2 {k5}, xmmword ptr [rcx] + +// CHECK: vbroadcasti32x4 zmm2 {k5} {z}, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0xcd,0x5a,0x11] + vbroadcasti32x4 zmm2 {k5} {z}, xmmword ptr [rcx] + +// CHECK: vbroadcasti32x4 zmm2, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x5a,0x94,0xf0,0x34,0x12,0x00,0x00] + vbroadcasti32x4 zmm2, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vbroadcasti32x4 zmm2, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x5a,0x52,0x7f] + vbroadcasti32x4 zmm2, xmmword ptr [rdx + 2032] + +// CHECK: vbroadcasti32x4 zmm2, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x5a,0x92,0x00,0x08,0x00,0x00] + vbroadcasti32x4 zmm2, xmmword ptr [rdx + 2048] + +// CHECK: vbroadcasti32x4 zmm2, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x5a,0x52,0x80] + vbroadcasti32x4 zmm2, xmmword ptr [rdx - 2048] + +// CHECK: vbroadcasti32x4 zmm2, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x5a,0x92,0xf0,0xf7,0xff,0xff] + vbroadcasti32x4 zmm2, xmmword ptr [rdx - 2064] + +// CHECK: vbroadcasti64x4 zmm17, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5b,0x09] + vbroadcasti64x4 zmm17, ymmword ptr [rcx] + +// CHECK: vbroadcasti64x4 zmm17 {k2}, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xfd,0x4a,0x5b,0x09] + vbroadcasti64x4 zmm17 {k2}, ymmword ptr [rcx] + +// CHECK: vbroadcasti64x4 zmm17 {k2} {z}, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xfd,0xca,0x5b,0x09] + vbroadcasti64x4 zmm17 {k2} {z}, ymmword ptr [rcx] + +// CHECK: vbroadcasti64x4 zmm17, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xfd,0x48,0x5b,0x8c,0xf0,0x34,0x12,0x00,0x00] + vbroadcasti64x4 zmm17, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vbroadcasti64x4 zmm17, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5b,0x4a,0x7f] + vbroadcasti64x4 zmm17, ymmword ptr [rdx + 4064] + +// CHECK: vbroadcasti64x4 zmm17, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5b,0x8a,0x00,0x10,0x00,0x00] + vbroadcasti64x4 zmm17, ymmword ptr [rdx + 4096] + +// CHECK: vbroadcasti64x4 zmm17, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5b,0x4a,0x80] + vbroadcasti64x4 zmm17, ymmword ptr [rdx - 4096] + +// CHECK: vbroadcasti64x4 zmm17, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5b,0x8a,0xe0,0xef,0xff,0xff] + vbroadcasti64x4 zmm17, ymmword ptr [rdx - 4128] + +// CHECK: vbroadcastsd zmm27, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0x19] + vbroadcastsd zmm27, qword ptr [rcx] + +// CHECK: vbroadcastsd zmm27 {k7}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x4f,0x19,0x19] + vbroadcastsd zmm27 {k7}, qword ptr [rcx] + +// CHECK: vbroadcastsd zmm27 {k7} {z}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0xcf,0x19,0x19] + vbroadcastsd zmm27 {k7} {z}, qword ptr [rcx] + +// CHECK: vbroadcastsd zmm27, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x19,0x9c,0xf0,0x34,0x12,0x00,0x00] + vbroadcastsd zmm27, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vbroadcastsd zmm27, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0x5a,0x7f] + vbroadcastsd zmm27, qword ptr [rdx + 1016] + +// CHECK: vbroadcastsd zmm27, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0x9a,0x00,0x04,0x00,0x00] + vbroadcastsd zmm27, qword ptr [rdx + 1024] + +// CHECK: vbroadcastsd zmm27, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0x5a,0x80] + vbroadcastsd zmm27, qword ptr [rdx - 1024] + +// CHECK: vbroadcastsd zmm27, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x19,0x9a,0xf8,0xfb,0xff,0xff] + vbroadcastsd zmm27, qword ptr [rdx - 1032] + +// CHECK: vbroadcastsd zmm19, xmm25 +// CHECK: encoding: [0x62,0x82,0xfd,0x48,0x19,0xd9] + vbroadcastsd zmm19, xmm25 + +// CHECK: vbroadcastsd zmm19 {k3}, xmm25 +// CHECK: encoding: [0x62,0x82,0xfd,0x4b,0x19,0xd9] + vbroadcastsd zmm19 {k3}, xmm25 + +// CHECK: vbroadcastsd zmm19 {k3} {z}, xmm25 +// CHECK: encoding: [0x62,0x82,0xfd,0xcb,0x19,0xd9] + vbroadcastsd zmm19 {k3} {z}, xmm25 + +// CHECK: vbroadcastss zmm2, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x11] + vbroadcastss zmm2, dword ptr [rcx] + +// CHECK: vbroadcastss zmm2 {k1}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x49,0x18,0x11] + vbroadcastss zmm2 {k1}, dword ptr [rcx] + +// CHECK: vbroadcastss zmm2 {k1} {z}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0xc9,0x18,0x11] + vbroadcastss zmm2 {k1} {z}, dword ptr [rcx] + +// CHECK: vbroadcastss zmm2, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x18,0x94,0xf0,0x34,0x12,0x00,0x00] + vbroadcastss zmm2, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vbroadcastss zmm2, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x52,0x7f] + vbroadcastss zmm2, dword ptr [rdx + 508] + +// CHECK: vbroadcastss zmm2, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x92,0x00,0x02,0x00,0x00] + vbroadcastss zmm2, dword ptr [rdx + 512] + +// CHECK: vbroadcastss zmm2, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x52,0x80] + vbroadcastss zmm2, dword ptr [rdx - 512] + +// CHECK: vbroadcastss zmm2, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x18,0x92,0xfc,0xfd,0xff,0xff] + vbroadcastss zmm2, dword ptr [rdx - 516] + +// CHECK: vbroadcastss zmm23, xmm15 +// CHECK: encoding: [0x62,0xc2,0x7d,0x48,0x18,0xff] + vbroadcastss zmm23, xmm15 + +// CHECK: vbroadcastss zmm23 {k4}, xmm15 +// CHECK: encoding: [0x62,0xc2,0x7d,0x4c,0x18,0xff] + vbroadcastss zmm23 {k4}, xmm15 + +// CHECK: vbroadcastss zmm23 {k4} {z}, xmm15 +// CHECK: encoding: [0x62,0xc2,0x7d,0xcc,0x18,0xff] + vbroadcastss zmm23 {k4} {z}, xmm15 + +// CHECK: vcmppd k5, zmm15, zmm16, 171 +// CHECK: encoding: [0x62,0xb1,0x85,0x48,0xc2,0xe8,0xab] + vcmppd k5, zmm15, zmm16, 171 + +// CHECK: vcmppd k5 {k5}, zmm15, zmm16, 171 +// CHECK: encoding: [0x62,0xb1,0x85,0x4d,0xc2,0xe8,0xab] + vcmppd k5 {k5}, zmm15, zmm16, 171 + +// CHECK: vcmppd k5, zmm15, zmm16, {sae}, 171 +// CHECK: encoding: [0x62,0xb1,0x85,0x18,0xc2,0xe8,0xab] + vcmppd k5, zmm15, zmm16, {sae}, 171 + +// CHECK: vcmppd k5, zmm15, zmm16, 123 +// CHECK: encoding: [0x62,0xb1,0x85,0x48,0xc2,0xe8,0x7b] + vcmppd k5, zmm15, zmm16, 123 + +// CHECK: vcmppd k5, zmm15, zmm16, {sae}, 123 +// CHECK: encoding: [0x62,0xb1,0x85,0x18,0xc2,0xe8,0x7b] + vcmppd k5, zmm15, zmm16, {sae}, 123 + +// CHECK: vcmppd k5, zmm15, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x48,0xc2,0x29,0x7b] + vcmppd k5, zmm15, zmmword ptr [rcx], 123 + +// CHECK: vcmppd k5, zmm15, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x85,0x48,0xc2,0xac,0xf0,0x34,0x12,0x00,0x00,0x7b] + vcmppd k5, zmm15, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vcmppd k5, zmm15, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x58,0xc2,0x29,0x7b] + vcmppd k5, zmm15, qword ptr [rcx]{1to8}, 123 + +// CHECK: vcmppd k5, zmm15, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x48,0xc2,0x6a,0x7f,0x7b] + vcmppd k5, zmm15, zmmword ptr [rdx + 8128], 123 + +// CHECK: vcmppd k5, zmm15, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x48,0xc2,0xaa,0x00,0x20,0x00,0x00,0x7b] + vcmppd k5, zmm15, zmmword ptr [rdx + 8192], 123 + +// CHECK: vcmppd k5, zmm15, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x48,0xc2,0x6a,0x80,0x7b] + vcmppd k5, zmm15, zmmword ptr [rdx - 8192], 123 + +// CHECK: vcmppd k5, zmm15, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x48,0xc2,0xaa,0xc0,0xdf,0xff,0xff,0x7b] + vcmppd k5, zmm15, zmmword ptr [rdx - 8256], 123 + +// CHECK: vcmppd k5, zmm15, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x58,0xc2,0x6a,0x7f,0x7b] + vcmppd k5, zmm15, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vcmppd k5, zmm15, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x58,0xc2,0xaa,0x00,0x04,0x00,0x00,0x7b] + vcmppd k5, zmm15, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vcmppd k5, zmm15, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x58,0xc2,0x6a,0x80,0x7b] + vcmppd k5, zmm15, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vcmppd k5, zmm15, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0x85,0x58,0xc2,0xaa,0xf8,0xfb,0xff,0xff,0x7b] + vcmppd k5, zmm15, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vcmpps k2, zmm3, zmm29, 171 +// CHECK: encoding: [0x62,0x91,0x64,0x48,0xc2,0xd5,0xab] + vcmpps k2, zmm3, zmm29, 171 + +// CHECK: vcmpps k2 {k5}, zmm3, zmm29, 171 +// CHECK: encoding: [0x62,0x91,0x64,0x4d,0xc2,0xd5,0xab] + vcmpps k2 {k5}, zmm3, zmm29, 171 + +// CHECK: vcmpps k2, zmm3, zmm29, {sae}, 171 +// CHECK: encoding: [0x62,0x91,0x64,0x18,0xc2,0xd5,0xab] + vcmpps k2, zmm3, zmm29, {sae}, 171 + +// CHECK: vcmpps k2, zmm3, zmm29, 123 +// CHECK: encoding: [0x62,0x91,0x64,0x48,0xc2,0xd5,0x7b] + vcmpps k2, zmm3, zmm29, 123 + +// CHECK: vcmpps k2, zmm3, zmm29, {sae}, 123 +// CHECK: encoding: [0x62,0x91,0x64,0x18,0xc2,0xd5,0x7b] + vcmpps k2, zmm3, zmm29, {sae}, 123 + +// CHECK: vcmpps k2, zmm3, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0xc2,0x11,0x7b] + vcmpps k2, zmm3, zmmword ptr [rcx], 123 + +// CHECK: vcmpps k2, zmm3, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x64,0x48,0xc2,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vcmpps k2, zmm3, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vcmpps k2, zmm3, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0xc2,0x11,0x7b] + vcmpps k2, zmm3, dword ptr [rcx]{1to16}, 123 + +// CHECK: vcmpps k2, zmm3, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0xc2,0x52,0x7f,0x7b] + vcmpps k2, zmm3, zmmword ptr [rdx + 8128], 123 + +// CHECK: vcmpps k2, zmm3, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0xc2,0x92,0x00,0x20,0x00,0x00,0x7b] + vcmpps k2, zmm3, zmmword ptr [rdx + 8192], 123 + +// CHECK: vcmpps k2, zmm3, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0xc2,0x52,0x80,0x7b] + vcmpps k2, zmm3, zmmword ptr [rdx - 8192], 123 + +// CHECK: vcmpps k2, zmm3, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x48,0xc2,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vcmpps k2, zmm3, zmmword ptr [rdx - 8256], 123 + +// CHECK: vcmpps k2, zmm3, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0xc2,0x52,0x7f,0x7b] + vcmpps k2, zmm3, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vcmpps k2, zmm3, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0xc2,0x92,0x00,0x02,0x00,0x00,0x7b] + vcmpps k2, zmm3, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vcmpps k2, zmm3, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0xc2,0x52,0x80,0x7b] + vcmpps k2, zmm3, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vcmpps k2, zmm3, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x64,0x58,0xc2,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vcmpps k2, zmm3, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vcmpsd k4, xmm5, xmm6, 171 +// CHECK: encoding: [0x62,0xf1,0xd7,0x08,0xc2,0xe6,0xab] + vcmpsd k4, xmm5, xmm6, 171 + +// CHECK: vcmpsd k4 {k5}, xmm5, xmm6, 171 +// CHECK: encoding: [0x62,0xf1,0xd7,0x0d,0xc2,0xe6,0xab] + vcmpsd k4 {k5}, xmm5, xmm6, 171 + +// CHECK: vcmpsd k4, xmm5, xmm6, {sae}, 171 +// CHECK: encoding: [0x62,0xf1,0xd7,0x18,0xc2,0xe6,0xab] + vcmpsd k4, xmm5, xmm6, {sae}, 171 + +// CHECK: vcmpsd k4, xmm5, xmm6, 123 +// CHECK: encoding: [0x62,0xf1,0xd7,0x08,0xc2,0xe6,0x7b] + vcmpsd k4, xmm5, xmm6, 123 + +// CHECK: vcmpsd k4, xmm5, xmm6, {sae}, 123 +// CHECK: encoding: [0x62,0xf1,0xd7,0x18,0xc2,0xe6,0x7b] + vcmpsd k4, xmm5, xmm6, {sae}, 123 + +// CHECK: vcmpsd k4, xmm5, qword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xd7,0x08,0xc2,0x21,0x7b] + vcmpsd k4, xmm5, qword ptr [rcx], 123 + +// CHECK: vcmpsd k4, xmm5, qword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0xd7,0x08,0xc2,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vcmpsd k4, xmm5, qword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vcmpsd k4, xmm5, qword ptr [rdx + 1016], 123 +// CHECK: encoding: [0x62,0xf1,0xd7,0x08,0xc2,0x62,0x7f,0x7b] + vcmpsd k4, xmm5, qword ptr [rdx + 1016], 123 + +// CHECK: vcmpsd k4, xmm5, qword ptr [rdx + 1024], 123 +// CHECK: encoding: [0x62,0xf1,0xd7,0x08,0xc2,0xa2,0x00,0x04,0x00,0x00,0x7b] + vcmpsd k4, xmm5, qword ptr [rdx + 1024], 123 + +// CHECK: vcmpsd k4, xmm5, qword ptr [rdx - 1024], 123 +// CHECK: encoding: [0x62,0xf1,0xd7,0x08,0xc2,0x62,0x80,0x7b] + vcmpsd k4, xmm5, qword ptr [rdx - 1024], 123 + +// CHECK: vcmpsd k4, xmm5, qword ptr [rdx - 1032], 123 +// CHECK: encoding: [0x62,0xf1,0xd7,0x08,0xc2,0xa2,0xf8,0xfb,0xff,0xff,0x7b] + vcmpsd k4, xmm5, qword ptr [rdx - 1032], 123 + +// CHECK: vcmpss k2, xmm19, xmm24, 171 +// CHECK: encoding: [0x62,0x91,0x66,0x00,0xc2,0xd0,0xab] + vcmpss k2, xmm19, xmm24, 171 + +// CHECK: vcmpss k2 {k1}, xmm19, xmm24, 171 +// CHECK: encoding: [0x62,0x91,0x66,0x01,0xc2,0xd0,0xab] + vcmpss k2 {k1}, xmm19, xmm24, 171 + +// CHECK: vcmpss k2, xmm19, xmm24, {sae}, 171 +// CHECK: encoding: [0x62,0x91,0x66,0x10,0xc2,0xd0,0xab] + vcmpss k2, xmm19, xmm24, {sae}, 171 + +// CHECK: vcmpss k2, xmm19, xmm24, 123 +// CHECK: encoding: [0x62,0x91,0x66,0x00,0xc2,0xd0,0x7b] + vcmpss k2, xmm19, xmm24, 123 + +// CHECK: vcmpss k2, xmm19, xmm24, {sae}, 123 +// CHECK: encoding: [0x62,0x91,0x66,0x10,0xc2,0xd0,0x7b] + vcmpss k2, xmm19, xmm24, {sae}, 123 + +// CHECK: vcmpss k2, xmm19, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x66,0x00,0xc2,0x11,0x7b] + vcmpss k2, xmm19, dword ptr [rcx], 123 + +// CHECK: vcmpss k2, xmm19, dword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x66,0x00,0xc2,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vcmpss k2, xmm19, dword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vcmpss k2, xmm19, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0xf1,0x66,0x00,0xc2,0x52,0x7f,0x7b] + vcmpss k2, xmm19, dword ptr [rdx + 508], 123 + +// CHECK: vcmpss k2, xmm19, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0xf1,0x66,0x00,0xc2,0x92,0x00,0x02,0x00,0x00,0x7b] + vcmpss k2, xmm19, dword ptr [rdx + 512], 123 + +// CHECK: vcmpss k2, xmm19, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0xf1,0x66,0x00,0xc2,0x52,0x80,0x7b] + vcmpss k2, xmm19, dword ptr [rdx - 512], 123 + +// CHECK: vcmpss k2, xmm19, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0xf1,0x66,0x00,0xc2,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vcmpss k2, xmm19, dword ptr [rdx - 516], 123 + +// CHECK: vcomisd xmm13, xmm11 +// CHECK: encoding: [0xc4,0x41,0x79,0x2f,0xeb] + vcomisd xmm13, xmm11 + +// CHECK: vcomisd xmm13, xmm11, {sae} +// CHECK: encoding: [0x62,0x51,0xfd,0x18,0x2f,0xeb] + vcomisd xmm13, xmm11, {sae} + +// CHECK: vcomisd xmm13, qword ptr [rcx] +// CHECK: encoding: [0xc5,0x79,0x2f,0x29] + vcomisd xmm13, qword ptr [rcx] + +// CHECK: vcomisd xmm13, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0x21,0x79,0x2f,0xac,0xf0,0x34,0x12,0x00,0x00] + vcomisd xmm13, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcomisd xmm13, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc5,0x79,0x2f,0xaa,0xf8,0x03,0x00,0x00] + vcomisd xmm13, qword ptr [rdx + 1016] + +// CHECK: vcomisd xmm13, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc5,0x79,0x2f,0xaa,0x00,0x04,0x00,0x00] + vcomisd xmm13, qword ptr [rdx + 1024] + +// CHECK: vcomisd xmm13, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc5,0x79,0x2f,0xaa,0x00,0xfc,0xff,0xff] + vcomisd xmm13, qword ptr [rdx - 1024] + +// CHECK: vcomisd xmm13, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc5,0x79,0x2f,0xaa,0xf8,0xfb,0xff,0xff] + vcomisd xmm13, qword ptr [rdx - 1032] + +// CHECK: vcomiss xmm8, xmm15 +// CHECK: encoding: [0xc4,0x41,0x78,0x2f,0xc7] + vcomiss xmm8, xmm15 + +// CHECK: vcomiss xmm8, xmm15, {sae} +// CHECK: encoding: [0x62,0x51,0x7c,0x18,0x2f,0xc7] + vcomiss xmm8, xmm15, {sae} + +// CHECK: vcomiss xmm8, dword ptr [rcx] +// CHECK: encoding: [0xc5,0x78,0x2f,0x01] + vcomiss xmm8, dword ptr [rcx] + +// CHECK: vcomiss xmm8, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0x21,0x78,0x2f,0x84,0xf0,0x34,0x12,0x00,0x00] + vcomiss xmm8, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcomiss xmm8, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0x78,0x2f,0x82,0xfc,0x01,0x00,0x00] + vcomiss xmm8, dword ptr [rdx + 508] + +// CHECK: vcomiss xmm8, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0x78,0x2f,0x82,0x00,0x02,0x00,0x00] + vcomiss xmm8, dword ptr [rdx + 512] + +// CHECK: vcomiss xmm8, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0x78,0x2f,0x82,0x00,0xfe,0xff,0xff] + vcomiss xmm8, dword ptr [rdx - 512] + +// CHECK: vcomiss xmm8, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0x78,0x2f,0x82,0xfc,0xfd,0xff,0xff] + vcomiss xmm8, dword ptr [rdx - 516] + +// CHECK: vcompresspd zmmword ptr [rcx], zmm30 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x8a,0x31] + vcompresspd zmmword ptr [rcx], zmm30 + +// CHECK: vcompresspd zmmword ptr [rcx] {k7}, zmm30 +// CHECK: encoding: [0x62,0x62,0xfd,0x4f,0x8a,0x31] + vcompresspd zmmword ptr [rcx] {k7}, zmm30 + +// CHECK: vcompresspd zmmword ptr [rax + 8*r14 + 4660], zmm30 +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x8a,0xb4,0xf0,0x34,0x12,0x00,0x00] + vcompresspd zmmword ptr [rax + 8*r14 + 4660], zmm30 + +// CHECK: vcompresspd zmmword ptr [rdx + 1016], zmm30 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x8a,0x72,0x7f] + vcompresspd zmmword ptr [rdx + 1016], zmm30 + +// CHECK: vcompresspd zmmword ptr [rdx + 1024], zmm30 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x8a,0xb2,0x00,0x04,0x00,0x00] + vcompresspd zmmword ptr [rdx + 1024], zmm30 + +// CHECK: vcompresspd zmmword ptr [rdx - 1024], zmm30 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x8a,0x72,0x80] + vcompresspd zmmword ptr [rdx - 1024], zmm30 + +// CHECK: vcompresspd zmmword ptr [rdx - 1032], zmm30 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x8a,0xb2,0xf8,0xfb,0xff,0xff] + vcompresspd zmmword ptr [rdx - 1032], zmm30 + +// CHECK: vcompresspd zmm1, zmm25 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x8a,0xc9] + vcompresspd zmm1, zmm25 + +// CHECK: vcompresspd zmm1 {k4}, zmm25 +// CHECK: encoding: [0x62,0x62,0xfd,0x4c,0x8a,0xc9] + vcompresspd zmm1 {k4}, zmm25 + +// CHECK: vcompresspd zmm1 {k4} {z}, zmm25 +// CHECK: encoding: [0x62,0x62,0xfd,0xcc,0x8a,0xc9] + vcompresspd zmm1 {k4} {z}, zmm25 + +// CHECK: vcompressps zmmword ptr [rcx], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x11] + vcompressps zmmword ptr [rcx], zmm10 + +// CHECK: vcompressps zmmword ptr [rcx] {k4}, zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x4c,0x8a,0x11] + vcompressps zmmword ptr [rcx] {k4}, zmm10 + +// CHECK: vcompressps zmmword ptr [rax + 8*r14 + 4660], zmm10 +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x8a,0x94,0xf0,0x34,0x12,0x00,0x00] + vcompressps zmmword ptr [rax + 8*r14 + 4660], zmm10 + +// CHECK: vcompressps zmmword ptr [rdx + 508], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x52,0x7f] + vcompressps zmmword ptr [rdx + 508], zmm10 + +// CHECK: vcompressps zmmword ptr [rdx + 512], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x92,0x00,0x02,0x00,0x00] + vcompressps zmmword ptr [rdx + 512], zmm10 + +// CHECK: vcompressps zmmword ptr [rdx - 512], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x52,0x80] + vcompressps zmmword ptr [rdx - 512], zmm10 + +// CHECK: vcompressps zmmword ptr [rdx - 516], zmm10 +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x8a,0x92,0xfc,0xfd,0xff,0xff] + vcompressps zmmword ptr [rdx - 516], zmm10 + +// CHECK: vcompressps zmm19, zmm7 +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x8a,0xfb] + vcompressps zmm19, zmm7 + +// CHECK: vcompressps zmm19 {k3}, zmm7 +// CHECK: encoding: [0x62,0xb2,0x7d,0x4b,0x8a,0xfb] + vcompressps zmm19 {k3}, zmm7 + +// CHECK: vcompressps zmm19 {k3} {z}, zmm7 +// CHECK: encoding: [0x62,0xb2,0x7d,0xcb,0x8a,0xfb] + vcompressps zmm19 {k3} {z}, zmm7 + +// CHECK: vcvtdq2pd zmm28, ymm20 +// CHECK: encoding: [0x62,0x21,0x7e,0x48,0xe6,0xe4] + vcvtdq2pd zmm28, ymm20 + +// CHECK: vcvtdq2pd zmm28 {k2}, ymm20 +// CHECK: encoding: [0x62,0x21,0x7e,0x4a,0xe6,0xe4] + vcvtdq2pd zmm28 {k2}, ymm20 + +// CHECK: vcvtdq2pd zmm28 {k2} {z}, ymm20 +// CHECK: encoding: [0x62,0x21,0x7e,0xca,0xe6,0xe4] + vcvtdq2pd zmm28 {k2} {z}, ymm20 + +// CHECK: vcvtdq2pd zmm28, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x7e,0x48,0xe6,0x21] + vcvtdq2pd zmm28, ymmword ptr [rcx] + +// CHECK: vcvtdq2pd zmm28, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x7e,0x48,0xe6,0xa4,0xf0,0x34,0x12,0x00,0x00] + vcvtdq2pd zmm28, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtdq2pd zmm28, dword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0x7e,0x58,0xe6,0x21] + vcvtdq2pd zmm28, dword ptr [rcx]{1to8} + +// CHECK: vcvtdq2pd zmm28, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x61,0x7e,0x48,0xe6,0x62,0x7f] + vcvtdq2pd zmm28, ymmword ptr [rdx + 4064] + +// CHECK: vcvtdq2pd zmm28, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x61,0x7e,0x48,0xe6,0xa2,0x00,0x10,0x00,0x00] + vcvtdq2pd zmm28, ymmword ptr [rdx + 4096] + +// CHECK: vcvtdq2pd zmm28, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x61,0x7e,0x48,0xe6,0x62,0x80] + vcvtdq2pd zmm28, ymmword ptr [rdx - 4096] + +// CHECK: vcvtdq2pd zmm28, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x61,0x7e,0x48,0xe6,0xa2,0xe0,0xef,0xff,0xff] + vcvtdq2pd zmm28, ymmword ptr [rdx - 4128] + +// CHECK: vcvtdq2pd zmm28, dword ptr [rdx + 508]{1to8} +// CHECK: encoding: [0x62,0x61,0x7e,0x58,0xe6,0x62,0x7f] + vcvtdq2pd zmm28, dword ptr [rdx + 508]{1to8} + +// CHECK: vcvtdq2pd zmm28, dword ptr [rdx + 512]{1to8} +// CHECK: encoding: [0x62,0x61,0x7e,0x58,0xe6,0xa2,0x00,0x02,0x00,0x00] + vcvtdq2pd zmm28, dword ptr [rdx + 512]{1to8} + +// CHECK: vcvtdq2pd zmm28, dword ptr [rdx - 512]{1to8} +// CHECK: encoding: [0x62,0x61,0x7e,0x58,0xe6,0x62,0x80] + vcvtdq2pd zmm28, dword ptr [rdx - 512]{1to8} + +// CHECK: vcvtdq2pd zmm28, dword ptr [rdx - 516]{1to8} +// CHECK: encoding: [0x62,0x61,0x7e,0x58,0xe6,0xa2,0xfc,0xfd,0xff,0xff] + vcvtdq2pd zmm28, dword ptr [rdx - 516]{1to8} + +// CHECK: vcvtdq2ps zmm19, zmm4 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x5b,0xdc] + vcvtdq2ps zmm19, zmm4 + +// CHECK: vcvtdq2ps zmm19 {k5}, zmm4 +// CHECK: encoding: [0x62,0xe1,0x7c,0x4d,0x5b,0xdc] + vcvtdq2ps zmm19 {k5}, zmm4 + +// CHECK: vcvtdq2ps zmm19 {k5} {z}, zmm4 +// CHECK: encoding: [0x62,0xe1,0x7c,0xcd,0x5b,0xdc] + vcvtdq2ps zmm19 {k5} {z}, zmm4 + +// CHECK: vcvtdq2ps zmm19, zmm4, {rn-sae} +// CHECK: encoding: [0x62,0xe1,0x7c,0x18,0x5b,0xdc] + vcvtdq2ps zmm19, zmm4, {rn-sae} + +// CHECK: vcvtdq2ps zmm19, zmm4, {ru-sae} +// CHECK: encoding: [0x62,0xe1,0x7c,0x58,0x5b,0xdc] + vcvtdq2ps zmm19, zmm4, {ru-sae} + +// CHECK: vcvtdq2ps zmm19, zmm4, {rd-sae} +// CHECK: encoding: [0x62,0xe1,0x7c,0x38,0x5b,0xdc] + vcvtdq2ps zmm19, zmm4, {rd-sae} + +// CHECK: vcvtdq2ps zmm19, zmm4, {rz-sae} +// CHECK: encoding: [0x62,0xe1,0x7c,0x78,0x5b,0xdc] + vcvtdq2ps zmm19, zmm4, {rz-sae} + +// CHECK: vcvtdq2ps zmm19, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x5b,0x19] + vcvtdq2ps zmm19, zmmword ptr [rcx] + +// CHECK: vcvtdq2ps zmm19, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x7c,0x48,0x5b,0x9c,0xf0,0x34,0x12,0x00,0x00] + vcvtdq2ps zmm19, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtdq2ps zmm19, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7c,0x58,0x5b,0x19] + vcvtdq2ps zmm19, dword ptr [rcx]{1to16} + +// CHECK: vcvtdq2ps zmm19, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x5b,0x5a,0x7f] + vcvtdq2ps zmm19, zmmword ptr [rdx + 8128] + +// CHECK: vcvtdq2ps zmm19, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x5b,0x9a,0x00,0x20,0x00,0x00] + vcvtdq2ps zmm19, zmmword ptr [rdx + 8192] + +// CHECK: vcvtdq2ps zmm19, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x5b,0x5a,0x80] + vcvtdq2ps zmm19, zmmword ptr [rdx - 8192] + +// CHECK: vcvtdq2ps zmm19, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x5b,0x9a,0xc0,0xdf,0xff,0xff] + vcvtdq2ps zmm19, zmmword ptr [rdx - 8256] + +// CHECK: vcvtdq2ps zmm19, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7c,0x58,0x5b,0x5a,0x7f] + vcvtdq2ps zmm19, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvtdq2ps zmm19, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7c,0x58,0x5b,0x9a,0x00,0x02,0x00,0x00] + vcvtdq2ps zmm19, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvtdq2ps zmm19, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7c,0x58,0x5b,0x5a,0x80] + vcvtdq2ps zmm19, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvtdq2ps zmm19, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7c,0x58,0x5b,0x9a,0xfc,0xfd,0xff,0xff] + vcvtdq2ps zmm19, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvtpd2dq ymm6, zmm2 +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0xe6,0xf2] + vcvtpd2dq ymm6, zmm2 + +// CHECK: vcvtpd2dq ymm6 {k6}, zmm2 +// CHECK: encoding: [0x62,0xf1,0xff,0x4e,0xe6,0xf2] + vcvtpd2dq ymm6 {k6}, zmm2 + +// CHECK: vcvtpd2dq ymm6 {k6} {z}, zmm2 +// CHECK: encoding: [0x62,0xf1,0xff,0xce,0xe6,0xf2] + vcvtpd2dq ymm6 {k6} {z}, zmm2 + +// CHECK: vcvtpd2dq ymm6, zmm2, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0xff,0x18,0xe6,0xf2] + vcvtpd2dq ymm6, zmm2, {rn-sae} + +// CHECK: vcvtpd2dq ymm6, zmm2, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0xff,0x58,0xe6,0xf2] + vcvtpd2dq ymm6, zmm2, {ru-sae} + +// CHECK: vcvtpd2dq ymm6, zmm2, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0xff,0x38,0xe6,0xf2] + vcvtpd2dq ymm6, zmm2, {rd-sae} + +// CHECK: vcvtpd2dq ymm6, zmm2, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0xff,0x78,0xe6,0xf2] + vcvtpd2dq ymm6, zmm2, {rz-sae} + +// CHECK: vcvtpd2dq ymm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0xe6,0x31] + vcvtpd2dq ymm6, zmmword ptr [rcx] + +// CHECK: vcvtpd2dq ymm6, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xff,0x48,0xe6,0xb4,0xf0,0x34,0x12,0x00,0x00] + vcvtpd2dq ymm6, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtpd2dq ymm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xff,0x58,0xe6,0x31] + vcvtpd2dq ymm6, qword ptr [rcx]{1to8} + +// CHECK: vcvtpd2dq ymm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0xe6,0x72,0x7f] + vcvtpd2dq ymm6, zmmword ptr [rdx + 8128] + +// CHECK: vcvtpd2dq ymm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0xe6,0xb2,0x00,0x20,0x00,0x00] + vcvtpd2dq ymm6, zmmword ptr [rdx + 8192] + +// CHECK: vcvtpd2dq ymm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0xe6,0x72,0x80] + vcvtpd2dq ymm6, zmmword ptr [rdx - 8192] + +// CHECK: vcvtpd2dq ymm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0xe6,0xb2,0xc0,0xdf,0xff,0xff] + vcvtpd2dq ymm6, zmmword ptr [rdx - 8256] + +// CHECK: vcvtpd2dq ymm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xff,0x58,0xe6,0x72,0x7f] + vcvtpd2dq ymm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvtpd2dq ymm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xff,0x58,0xe6,0xb2,0x00,0x04,0x00,0x00] + vcvtpd2dq ymm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvtpd2dq ymm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xff,0x58,0xe6,0x72,0x80] + vcvtpd2dq ymm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvtpd2dq ymm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xff,0x58,0xe6,0xb2,0xf8,0xfb,0xff,0xff] + vcvtpd2dq ymm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvtpd2ps ymm16, zmm10 +// CHECK: encoding: [0x62,0xc1,0xfd,0x48,0x5a,0xc2] + vcvtpd2ps ymm16, zmm10 + +// CHECK: vcvtpd2ps ymm16 {k2}, zmm10 +// CHECK: encoding: [0x62,0xc1,0xfd,0x4a,0x5a,0xc2] + vcvtpd2ps ymm16 {k2}, zmm10 + +// CHECK: vcvtpd2ps ymm16 {k2} {z}, zmm10 +// CHECK: encoding: [0x62,0xc1,0xfd,0xca,0x5a,0xc2] + vcvtpd2ps ymm16 {k2} {z}, zmm10 + +// CHECK: vcvtpd2ps ymm16, zmm10, {rn-sae} +// CHECK: encoding: [0x62,0xc1,0xfd,0x18,0x5a,0xc2] + vcvtpd2ps ymm16, zmm10, {rn-sae} + +// CHECK: vcvtpd2ps ymm16, zmm10, {ru-sae} +// CHECK: encoding: [0x62,0xc1,0xfd,0x58,0x5a,0xc2] + vcvtpd2ps ymm16, zmm10, {ru-sae} + +// CHECK: vcvtpd2ps ymm16, zmm10, {rd-sae} +// CHECK: encoding: [0x62,0xc1,0xfd,0x38,0x5a,0xc2] + vcvtpd2ps ymm16, zmm10, {rd-sae} + +// CHECK: vcvtpd2ps ymm16, zmm10, {rz-sae} +// CHECK: encoding: [0x62,0xc1,0xfd,0x78,0x5a,0xc2] + vcvtpd2ps ymm16, zmm10, {rz-sae} + +// CHECK: vcvtpd2ps ymm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x5a,0x01] + vcvtpd2ps ymm16, zmmword ptr [rcx] + +// CHECK: vcvtpd2ps ymm16, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x5a,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtpd2ps ymm16, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtpd2ps ymm16, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x5a,0x01] + vcvtpd2ps ymm16, qword ptr [rcx]{1to8} + +// CHECK: vcvtpd2ps ymm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x5a,0x42,0x7f] + vcvtpd2ps ymm16, zmmword ptr [rdx + 8128] + +// CHECK: vcvtpd2ps ymm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x5a,0x82,0x00,0x20,0x00,0x00] + vcvtpd2ps ymm16, zmmword ptr [rdx + 8192] + +// CHECK: vcvtpd2ps ymm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x5a,0x42,0x80] + vcvtpd2ps ymm16, zmmword ptr [rdx - 8192] + +// CHECK: vcvtpd2ps ymm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x5a,0x82,0xc0,0xdf,0xff,0xff] + vcvtpd2ps ymm16, zmmword ptr [rdx - 8256] + +// CHECK: vcvtpd2ps ymm16, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x5a,0x42,0x7f] + vcvtpd2ps ymm16, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvtpd2ps ymm16, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x5a,0x82,0x00,0x04,0x00,0x00] + vcvtpd2ps ymm16, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvtpd2ps ymm16, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x5a,0x42,0x80] + vcvtpd2ps ymm16, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvtpd2ps ymm16, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x5a,0x82,0xf8,0xfb,0xff,0xff] + vcvtpd2ps ymm16, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvtpd2udq ymm25, zmm25 +// CHECK: encoding: [0x62,0x01,0xfc,0x48,0x79,0xc9] + vcvtpd2udq ymm25, zmm25 + +// CHECK: vcvtpd2udq ymm25 {k1}, zmm25 +// CHECK: encoding: [0x62,0x01,0xfc,0x49,0x79,0xc9] + vcvtpd2udq ymm25 {k1}, zmm25 + +// CHECK: vcvtpd2udq ymm25 {k1} {z}, zmm25 +// CHECK: encoding: [0x62,0x01,0xfc,0xc9,0x79,0xc9] + vcvtpd2udq ymm25 {k1} {z}, zmm25 + +// CHECK: vcvtpd2udq ymm25, zmm25, {rn-sae} +// CHECK: encoding: [0x62,0x01,0xfc,0x18,0x79,0xc9] + vcvtpd2udq ymm25, zmm25, {rn-sae} + +// CHECK: vcvtpd2udq ymm25, zmm25, {ru-sae} +// CHECK: encoding: [0x62,0x01,0xfc,0x58,0x79,0xc9] + vcvtpd2udq ymm25, zmm25, {ru-sae} + +// CHECK: vcvtpd2udq ymm25, zmm25, {rd-sae} +// CHECK: encoding: [0x62,0x01,0xfc,0x38,0x79,0xc9] + vcvtpd2udq ymm25, zmm25, {rd-sae} + +// CHECK: vcvtpd2udq ymm25, zmm25, {rz-sae} +// CHECK: encoding: [0x62,0x01,0xfc,0x78,0x79,0xc9] + vcvtpd2udq ymm25, zmm25, {rz-sae} + +// CHECK: vcvtpd2udq ymm25, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xfc,0x48,0x79,0x09] + vcvtpd2udq ymm25, zmmword ptr [rcx] + +// CHECK: vcvtpd2udq ymm25, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0xfc,0x48,0x79,0x8c,0xf0,0x34,0x12,0x00,0x00] + vcvtpd2udq ymm25, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtpd2udq ymm25, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0xfc,0x58,0x79,0x09] + vcvtpd2udq ymm25, qword ptr [rcx]{1to8} + +// CHECK: vcvtpd2udq ymm25, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xfc,0x48,0x79,0x4a,0x7f] + vcvtpd2udq ymm25, zmmword ptr [rdx + 8128] + +// CHECK: vcvtpd2udq ymm25, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xfc,0x48,0x79,0x8a,0x00,0x20,0x00,0x00] + vcvtpd2udq ymm25, zmmword ptr [rdx + 8192] + +// CHECK: vcvtpd2udq ymm25, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xfc,0x48,0x79,0x4a,0x80] + vcvtpd2udq ymm25, zmmword ptr [rdx - 8192] + +// CHECK: vcvtpd2udq ymm25, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xfc,0x48,0x79,0x8a,0xc0,0xdf,0xff,0xff] + vcvtpd2udq ymm25, zmmword ptr [rdx - 8256] + +// CHECK: vcvtpd2udq ymm25, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0xfc,0x58,0x79,0x4a,0x7f] + vcvtpd2udq ymm25, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvtpd2udq ymm25, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xfc,0x58,0x79,0x8a,0x00,0x04,0x00,0x00] + vcvtpd2udq ymm25, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvtpd2udq ymm25, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xfc,0x58,0x79,0x4a,0x80] + vcvtpd2udq ymm25, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvtpd2udq ymm25, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0xfc,0x58,0x79,0x8a,0xf8,0xfb,0xff,0xff] + vcvtpd2udq ymm25, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvtph2ps zmm9, ymm21 +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x13,0xcd] + vcvtph2ps zmm9, ymm21 + +// CHECK: vcvtph2ps zmm9 {k3}, ymm21 +// CHECK: encoding: [0x62,0x32,0x7d,0x4b,0x13,0xcd] + vcvtph2ps zmm9 {k3}, ymm21 + +// CHECK: vcvtph2ps zmm9 {k3} {z}, ymm21 +// CHECK: encoding: [0x62,0x32,0x7d,0xcb,0x13,0xcd] + vcvtph2ps zmm9 {k3} {z}, ymm21 + +// CHECK: vcvtph2ps zmm9, ymm21, {sae} +// CHECK: encoding: [0x62,0x32,0x7d,0x18,0x13,0xcd] + vcvtph2ps zmm9, ymm21, {sae} + +// CHECK: vcvtph2ps zmm9, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0x09] + vcvtph2ps zmm9, ymmword ptr [rcx] + +// CHECK: vcvtph2ps zmm9, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x13,0x8c,0xf0,0x34,0x12,0x00,0x00] + vcvtph2ps zmm9, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtph2ps zmm9, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0x4a,0x7f] + vcvtph2ps zmm9, ymmword ptr [rdx + 4064] + +// CHECK: vcvtph2ps zmm9, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0x8a,0x00,0x10,0x00,0x00] + vcvtph2ps zmm9, ymmword ptr [rdx + 4096] + +// CHECK: vcvtph2ps zmm9, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0x4a,0x80] + vcvtph2ps zmm9, ymmword ptr [rdx - 4096] + +// CHECK: vcvtph2ps zmm9, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x13,0x8a,0xe0,0xef,0xff,0xff] + vcvtph2ps zmm9, ymmword ptr [rdx - 4128] + +// CHECK: vcvtps2dq zmm16, zmm6 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x5b,0xc6] + vcvtps2dq zmm16, zmm6 + +// CHECK: vcvtps2dq zmm16 {k2}, zmm6 +// CHECK: encoding: [0x62,0xe1,0x7d,0x4a,0x5b,0xc6] + vcvtps2dq zmm16 {k2}, zmm6 + +// CHECK: vcvtps2dq zmm16 {k2} {z}, zmm6 +// CHECK: encoding: [0x62,0xe1,0x7d,0xca,0x5b,0xc6] + vcvtps2dq zmm16 {k2} {z}, zmm6 + +// CHECK: vcvtps2dq zmm16, zmm6, {rn-sae} +// CHECK: encoding: [0x62,0xe1,0x7d,0x18,0x5b,0xc6] + vcvtps2dq zmm16, zmm6, {rn-sae} + +// CHECK: vcvtps2dq zmm16, zmm6, {ru-sae} +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x5b,0xc6] + vcvtps2dq zmm16, zmm6, {ru-sae} + +// CHECK: vcvtps2dq zmm16, zmm6, {rd-sae} +// CHECK: encoding: [0x62,0xe1,0x7d,0x38,0x5b,0xc6] + vcvtps2dq zmm16, zmm6, {rd-sae} + +// CHECK: vcvtps2dq zmm16, zmm6, {rz-sae} +// CHECK: encoding: [0x62,0xe1,0x7d,0x78,0x5b,0xc6] + vcvtps2dq zmm16, zmm6, {rz-sae} + +// CHECK: vcvtps2dq zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x5b,0x01] + vcvtps2dq zmm16, zmmword ptr [rcx] + +// CHECK: vcvtps2dq zmm16, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x7d,0x48,0x5b,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtps2dq zmm16, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtps2dq zmm16, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x5b,0x01] + vcvtps2dq zmm16, dword ptr [rcx]{1to16} + +// CHECK: vcvtps2dq zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x5b,0x42,0x7f] + vcvtps2dq zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vcvtps2dq zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x5b,0x82,0x00,0x20,0x00,0x00] + vcvtps2dq zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vcvtps2dq zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x5b,0x42,0x80] + vcvtps2dq zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vcvtps2dq zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x5b,0x82,0xc0,0xdf,0xff,0xff] + vcvtps2dq zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vcvtps2dq zmm16, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x5b,0x42,0x7f] + vcvtps2dq zmm16, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvtps2dq zmm16, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x5b,0x82,0x00,0x02,0x00,0x00] + vcvtps2dq zmm16, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvtps2dq zmm16, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x5b,0x42,0x80] + vcvtps2dq zmm16, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvtps2dq zmm16, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x5b,0x82,0xfc,0xfd,0xff,0xff] + vcvtps2dq zmm16, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvtps2pd zmm11, ymm24 +// CHECK: encoding: [0x62,0x11,0x7c,0x48,0x5a,0xd8] + vcvtps2pd zmm11, ymm24 + +// CHECK: vcvtps2pd zmm11 {k3}, ymm24 +// CHECK: encoding: [0x62,0x11,0x7c,0x4b,0x5a,0xd8] + vcvtps2pd zmm11 {k3}, ymm24 + +// CHECK: vcvtps2pd zmm11 {k3} {z}, ymm24 +// CHECK: encoding: [0x62,0x11,0x7c,0xcb,0x5a,0xd8] + vcvtps2pd zmm11 {k3} {z}, ymm24 + +// CHECK: vcvtps2pd zmm11, ymm24, {sae} +// CHECK: encoding: [0x62,0x11,0x7c,0x18,0x5a,0xd8] + vcvtps2pd zmm11, ymm24, {sae} + +// CHECK: vcvtps2pd zmm11, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0x19] + vcvtps2pd zmm11, ymmword ptr [rcx] + +// CHECK: vcvtps2pd zmm11, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x7c,0x48,0x5a,0x9c,0xf0,0x34,0x12,0x00,0x00] + vcvtps2pd zmm11, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtps2pd zmm11, dword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0x19] + vcvtps2pd zmm11, dword ptr [rcx]{1to8} + +// CHECK: vcvtps2pd zmm11, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0x5a,0x7f] + vcvtps2pd zmm11, ymmword ptr [rdx + 4064] + +// CHECK: vcvtps2pd zmm11, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0x9a,0x00,0x10,0x00,0x00] + vcvtps2pd zmm11, ymmword ptr [rdx + 4096] + +// CHECK: vcvtps2pd zmm11, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0x5a,0x80] + vcvtps2pd zmm11, ymmword ptr [rdx - 4096] + +// CHECK: vcvtps2pd zmm11, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x71,0x7c,0x48,0x5a,0x9a,0xe0,0xef,0xff,0xff] + vcvtps2pd zmm11, ymmword ptr [rdx - 4128] + +// CHECK: vcvtps2pd zmm11, dword ptr [rdx + 508]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0x5a,0x7f] + vcvtps2pd zmm11, dword ptr [rdx + 508]{1to8} + +// CHECK: vcvtps2pd zmm11, dword ptr [rdx + 512]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0x9a,0x00,0x02,0x00,0x00] + vcvtps2pd zmm11, dword ptr [rdx + 512]{1to8} + +// CHECK: vcvtps2pd zmm11, dword ptr [rdx - 512]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0x5a,0x80] + vcvtps2pd zmm11, dword ptr [rdx - 512]{1to8} + +// CHECK: vcvtps2pd zmm11, dword ptr [rdx - 516]{1to8} +// CHECK: encoding: [0x62,0x71,0x7c,0x58,0x5a,0x9a,0xfc,0xfd,0xff,0xff] + vcvtps2pd zmm11, dword ptr [rdx - 516]{1to8} + +// CHECK: vcvtps2ph ymm9, zmm22, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0x48,0x1d,0xf1,0xab] + vcvtps2ph ymm9, zmm22, 171 + +// CHECK: vcvtps2ph ymm9 {k7}, zmm22, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0x4f,0x1d,0xf1,0xab] + vcvtps2ph ymm9 {k7}, zmm22, 171 + +// CHECK: vcvtps2ph ymm9 {k7} {z}, zmm22, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0xcf,0x1d,0xf1,0xab] + vcvtps2ph ymm9 {k7} {z}, zmm22, 171 + +// CHECK: vcvtps2ph ymm9, zmm22, {sae}, 171 +// CHECK: encoding: [0x62,0xc3,0x7d,0x18,0x1d,0xf1,0xab] + vcvtps2ph ymm9, zmm22, {sae}, 171 + +// CHECK: vcvtps2ph ymm9, zmm22, 123 +// CHECK: encoding: [0x62,0xc3,0x7d,0x48,0x1d,0xf1,0x7b] + vcvtps2ph ymm9, zmm22, 123 + +// CHECK: vcvtps2ph ymm9, zmm22, {sae}, 123 +// CHECK: encoding: [0x62,0xc3,0x7d,0x18,0x1d,0xf1,0x7b] + vcvtps2ph ymm9, zmm22, {sae}, 123 + +// CHECK: vcvtps2udq zmm5, zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x79,0xec] + vcvtps2udq zmm5, zmm4 + +// CHECK: vcvtps2udq zmm5 {k5}, zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0x4d,0x79,0xec] + vcvtps2udq zmm5 {k5}, zmm4 + +// CHECK: vcvtps2udq zmm5 {k5} {z}, zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0xcd,0x79,0xec] + vcvtps2udq zmm5 {k5} {z}, zmm4 + +// CHECK: vcvtps2udq zmm5, zmm4, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x7c,0x18,0x79,0xec] + vcvtps2udq zmm5, zmm4, {rn-sae} + +// CHECK: vcvtps2udq zmm5, zmm4, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x79,0xec] + vcvtps2udq zmm5, zmm4, {ru-sae} + +// CHECK: vcvtps2udq zmm5, zmm4, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x7c,0x38,0x79,0xec] + vcvtps2udq zmm5, zmm4, {rd-sae} + +// CHECK: vcvtps2udq zmm5, zmm4, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x7c,0x78,0x79,0xec] + vcvtps2udq zmm5, zmm4, {rz-sae} + +// CHECK: vcvtps2udq zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x79,0x29] + vcvtps2udq zmm5, zmmword ptr [rcx] + +// CHECK: vcvtps2udq zmm5, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x79,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvtps2udq zmm5, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtps2udq zmm5, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x79,0x29] + vcvtps2udq zmm5, dword ptr [rcx]{1to16} + +// CHECK: vcvtps2udq zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x79,0x6a,0x7f] + vcvtps2udq zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vcvtps2udq zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x79,0xaa,0x00,0x20,0x00,0x00] + vcvtps2udq zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vcvtps2udq zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x79,0x6a,0x80] + vcvtps2udq zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vcvtps2udq zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x79,0xaa,0xc0,0xdf,0xff,0xff] + vcvtps2udq zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vcvtps2udq zmm5, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x79,0x6a,0x7f] + vcvtps2udq zmm5, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvtps2udq zmm5, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x79,0xaa,0x00,0x02,0x00,0x00] + vcvtps2udq zmm5, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvtps2udq zmm5, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x79,0x6a,0x80] + vcvtps2udq zmm5, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvtps2udq zmm5, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x79,0xaa,0xfc,0xfd,0xff,0xff] + vcvtps2udq zmm5, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvtsd2si eax, xmm4, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x18,0x2d,0xc4] + vcvtsd2si eax, xmm4, {rn-sae} + +// CHECK: vcvtsd2si eax, xmm4, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x2d,0xc4] + vcvtsd2si eax, xmm4, {ru-sae} + +// CHECK: vcvtsd2si eax, xmm4, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x38,0x2d,0xc4] + vcvtsd2si eax, xmm4, {rd-sae} + +// CHECK: vcvtsd2si eax, xmm4, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x78,0x2d,0xc4] + vcvtsd2si eax, xmm4, {rz-sae} + +// CHECK: vcvtsd2si ebp, xmm4, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x18,0x2d,0xec] + vcvtsd2si ebp, xmm4, {rn-sae} + +// CHECK: vcvtsd2si ebp, xmm4, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x2d,0xec] + vcvtsd2si ebp, xmm4, {ru-sae} + +// CHECK: vcvtsd2si ebp, xmm4, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x38,0x2d,0xec] + vcvtsd2si ebp, xmm4, {rd-sae} + +// CHECK: vcvtsd2si ebp, xmm4, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x78,0x2d,0xec] + vcvtsd2si ebp, xmm4, {rz-sae} + +// CHECK: vcvtsd2si r13d, xmm4, {rn-sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x18,0x2d,0xec] + vcvtsd2si r13d, xmm4, {rn-sae} + +// CHECK: vcvtsd2si r13d, xmm4, {ru-sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x58,0x2d,0xec] + vcvtsd2si r13d, xmm4, {ru-sae} + +// CHECK: vcvtsd2si r13d, xmm4, {rd-sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x38,0x2d,0xec] + vcvtsd2si r13d, xmm4, {rd-sae} + +// CHECK: vcvtsd2si r13d, xmm4, {rz-sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x78,0x2d,0xec] + vcvtsd2si r13d, xmm4, {rz-sae} + +// CHECK: vcvtsd2si rax, xmm27, {rn-sae} +// CHECK: encoding: [0x62,0x91,0xff,0x18,0x2d,0xc3] + vcvtsd2si rax, xmm27, {rn-sae} + +// CHECK: vcvtsd2si rax, xmm27, {ru-sae} +// CHECK: encoding: [0x62,0x91,0xff,0x58,0x2d,0xc3] + vcvtsd2si rax, xmm27, {ru-sae} + +// CHECK: vcvtsd2si rax, xmm27, {rd-sae} +// CHECK: encoding: [0x62,0x91,0xff,0x38,0x2d,0xc3] + vcvtsd2si rax, xmm27, {rd-sae} + +// CHECK: vcvtsd2si rax, xmm27, {rz-sae} +// CHECK: encoding: [0x62,0x91,0xff,0x78,0x2d,0xc3] + vcvtsd2si rax, xmm27, {rz-sae} + +// CHECK: vcvtsd2si r8, xmm27, {rn-sae} +// CHECK: encoding: [0x62,0x11,0xff,0x18,0x2d,0xc3] + vcvtsd2si r8, xmm27, {rn-sae} + +// CHECK: vcvtsd2si r8, xmm27, {ru-sae} +// CHECK: encoding: [0x62,0x11,0xff,0x58,0x2d,0xc3] + vcvtsd2si r8, xmm27, {ru-sae} + +// CHECK: vcvtsd2si r8, xmm27, {rd-sae} +// CHECK: encoding: [0x62,0x11,0xff,0x38,0x2d,0xc3] + vcvtsd2si r8, xmm27, {rd-sae} + +// CHECK: vcvtsd2si r8, xmm27, {rz-sae} +// CHECK: encoding: [0x62,0x11,0xff,0x78,0x2d,0xc3] + vcvtsd2si r8, xmm27, {rz-sae} + +// CHECK: vcvtsi2sd xmm4, xmm9, eax +// CHECK: encoding: [0xc5,0xb3,0x2a,0xe0] + vcvtsi2sd xmm4, xmm9, eax + +// CHECK: vcvtsi2sd xmm4, xmm9, ebp +// CHECK: encoding: [0xc5,0xb3,0x2a,0xe5] + vcvtsi2sd xmm4, xmm9, ebp + +// CHECK: vcvtsi2sd xmm4, xmm9, r13d +// CHECK: encoding: [0xc4,0xc1,0x33,0x2a,0xe5] + vcvtsi2sd xmm4, xmm9, r13d + +// CHECK: vcvtsi2sd xmm4, xmm9, dword ptr [rcx] +// CHECK: encoding: [0xc5,0xb3,0x2a,0x21] + vcvtsi2sd xmm4, xmm9, dword ptr [rcx] + +// CHECK: vcvtsi2sd xmm4, xmm9, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa1,0x33,0x2a,0xa4,0xf0,0x34,0x12,0x00,0x00] + vcvtsi2sd xmm4, xmm9, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsi2sd xmm4, xmm9, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0xb3,0x2a,0xa2,0xfc,0x01,0x00,0x00] + vcvtsi2sd xmm4, xmm9, dword ptr [rdx + 508] + +// CHECK: vcvtsi2sd xmm4, xmm9, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0xb3,0x2a,0xa2,0x00,0x02,0x00,0x00] + vcvtsi2sd xmm4, xmm9, dword ptr [rdx + 512] + +// CHECK: vcvtsi2sd xmm4, xmm9, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0xb3,0x2a,0xa2,0x00,0xfe,0xff,0xff] + vcvtsi2sd xmm4, xmm9, dword ptr [rdx - 512] + +// CHECK: vcvtsi2sd xmm4, xmm9, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0xb3,0x2a,0xa2,0xfc,0xfd,0xff,0xff] + vcvtsi2sd xmm4, xmm9, dword ptr [rdx - 516] + +// CHECK: vcvtsi2sd xmm24, xmm17, rax +// CHECK: encoding: [0x62,0x61,0xf7,0x00,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, rax + +// CHECK: vcvtsi2sd xmm24, xmm17, {rn-sae}, rax +// CHECK: encoding: [0x62,0x61,0xf7,0x10,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, {rn-sae}, rax + +// CHECK: vcvtsi2sd xmm24, xmm17, {ru-sae}, rax +// CHECK: encoding: [0x62,0x61,0xf7,0x50,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, {ru-sae}, rax + +// CHECK: vcvtsi2sd xmm24, xmm17, {rd-sae}, rax +// CHECK: encoding: [0x62,0x61,0xf7,0x30,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, {rd-sae}, rax + +// CHECK: vcvtsi2sd xmm24, xmm17, {rz-sae}, rax +// CHECK: encoding: [0x62,0x61,0xf7,0x70,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, {rz-sae}, rax + +// CHECK: vcvtsi2sd xmm24, xmm17, r8 +// CHECK: encoding: [0x62,0x41,0xf7,0x00,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, r8 + +// CHECK: vcvtsi2sd xmm24, xmm17, {rn-sae}, r8 +// CHECK: encoding: [0x62,0x41,0xf7,0x10,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, {rn-sae}, r8 + +// CHECK: vcvtsi2sd xmm24, xmm17, {ru-sae}, r8 +// CHECK: encoding: [0x62,0x41,0xf7,0x50,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, {ru-sae}, r8 + +// CHECK: vcvtsi2sd xmm24, xmm17, {rd-sae}, r8 +// CHECK: encoding: [0x62,0x41,0xf7,0x30,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, {rd-sae}, r8 + +// CHECK: vcvtsi2sd xmm24, xmm17, {rz-sae}, r8 +// CHECK: encoding: [0x62,0x41,0xf7,0x70,0x2a,0xc0] + vcvtsi2sd xmm24, xmm17, {rz-sae}, r8 + +// CHECK: vcvtsi2sd xmm24, xmm17, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xf7,0x00,0x2a,0x01] + vcvtsi2sd xmm24, xmm17, qword ptr [rcx] + +// CHECK: vcvtsi2sd xmm24, xmm17, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0xf7,0x00,0x2a,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtsi2sd xmm24, xmm17, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsi2sd xmm24, xmm17, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x61,0xf7,0x00,0x2a,0x42,0x7f] + vcvtsi2sd xmm24, xmm17, qword ptr [rdx + 1016] + +// CHECK: vcvtsi2sd xmm24, xmm17, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x61,0xf7,0x00,0x2a,0x82,0x00,0x04,0x00,0x00] + vcvtsi2sd xmm24, xmm17, qword ptr [rdx + 1024] + +// CHECK: vcvtsi2sd xmm24, xmm17, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x61,0xf7,0x00,0x2a,0x42,0x80] + vcvtsi2sd xmm24, xmm17, qword ptr [rdx - 1024] + +// CHECK: vcvtsi2sd xmm24, xmm17, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x61,0xf7,0x00,0x2a,0x82,0xf8,0xfb,0xff,0xff] + vcvtsi2sd xmm24, xmm17, qword ptr [rdx - 1032] + +// CHECK: vcvtsi2ss xmm25, xmm28, eax +// CHECK: encoding: [0x62,0x61,0x1e,0x00,0x2a,0xc8] + vcvtsi2ss xmm25, xmm28, eax + +// CHECK: vcvtsi2ss xmm25, xmm28, {rn-sae}, eax +// CHECK: encoding: [0x62,0x61,0x1e,0x10,0x2a,0xc8] + vcvtsi2ss xmm25, xmm28, {rn-sae}, eax + +// CHECK: vcvtsi2ss xmm25, xmm28, {ru-sae}, eax +// CHECK: encoding: [0x62,0x61,0x1e,0x50,0x2a,0xc8] + vcvtsi2ss xmm25, xmm28, {ru-sae}, eax + +// CHECK: vcvtsi2ss xmm25, xmm28, {rd-sae}, eax +// CHECK: encoding: [0x62,0x61,0x1e,0x30,0x2a,0xc8] + vcvtsi2ss xmm25, xmm28, {rd-sae}, eax + +// CHECK: vcvtsi2ss xmm25, xmm28, {rz-sae}, eax +// CHECK: encoding: [0x62,0x61,0x1e,0x70,0x2a,0xc8] + vcvtsi2ss xmm25, xmm28, {rz-sae}, eax + +// CHECK: vcvtsi2ss xmm25, xmm28, ebp +// CHECK: encoding: [0x62,0x61,0x1e,0x00,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, ebp + +// CHECK: vcvtsi2ss xmm25, xmm28, {rn-sae}, ebp +// CHECK: encoding: [0x62,0x61,0x1e,0x10,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, {rn-sae}, ebp + +// CHECK: vcvtsi2ss xmm25, xmm28, {ru-sae}, ebp +// CHECK: encoding: [0x62,0x61,0x1e,0x50,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, {ru-sae}, ebp + +// CHECK: vcvtsi2ss xmm25, xmm28, {rd-sae}, ebp +// CHECK: encoding: [0x62,0x61,0x1e,0x30,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, {rd-sae}, ebp + +// CHECK: vcvtsi2ss xmm25, xmm28, {rz-sae}, ebp +// CHECK: encoding: [0x62,0x61,0x1e,0x70,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, {rz-sae}, ebp + +// CHECK: vcvtsi2ss xmm25, xmm28, r13d +// CHECK: encoding: [0x62,0x41,0x1e,0x00,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, r13d + +// CHECK: vcvtsi2ss xmm25, xmm28, {rn-sae}, r13d +// CHECK: encoding: [0x62,0x41,0x1e,0x10,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, {rn-sae}, r13d + +// CHECK: vcvtsi2ss xmm25, xmm28, {ru-sae}, r13d +// CHECK: encoding: [0x62,0x41,0x1e,0x50,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, {ru-sae}, r13d + +// CHECK: vcvtsi2ss xmm25, xmm28, {rd-sae}, r13d +// CHECK: encoding: [0x62,0x41,0x1e,0x30,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, {rd-sae}, r13d + +// CHECK: vcvtsi2ss xmm25, xmm28, {rz-sae}, r13d +// CHECK: encoding: [0x62,0x41,0x1e,0x70,0x2a,0xcd] + vcvtsi2ss xmm25, xmm28, {rz-sae}, r13d + +// CHECK: vcvtsi2ss xmm25, xmm28, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x1e,0x00,0x2a,0x09] + vcvtsi2ss xmm25, xmm28, dword ptr [rcx] + +// CHECK: vcvtsi2ss xmm25, xmm28, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x1e,0x00,0x2a,0x8c,0xf0,0x34,0x12,0x00,0x00] + vcvtsi2ss xmm25, xmm28, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsi2ss xmm25, xmm28, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x1e,0x00,0x2a,0x4a,0x7f] + vcvtsi2ss xmm25, xmm28, dword ptr [rdx + 508] + +// CHECK: vcvtsi2ss xmm25, xmm28, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x1e,0x00,0x2a,0x8a,0x00,0x02,0x00,0x00] + vcvtsi2ss xmm25, xmm28, dword ptr [rdx + 512] + +// CHECK: vcvtsi2ss xmm25, xmm28, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x1e,0x00,0x2a,0x4a,0x80] + vcvtsi2ss xmm25, xmm28, dword ptr [rdx - 512] + +// CHECK: vcvtsi2ss xmm25, xmm28, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x1e,0x00,0x2a,0x8a,0xfc,0xfd,0xff,0xff] + vcvtsi2ss xmm25, xmm28, dword ptr [rdx - 516] + +// CHECK: vcvtsi2ss xmm4, xmm8, rax +// CHECK: encoding: [0xc4,0xe1,0xba,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, rax + +// CHECK: vcvtsi2ss xmm4, xmm8, {rn-sae}, rax +// CHECK: encoding: [0x62,0xf1,0xbe,0x18,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, {rn-sae}, rax + +// CHECK: vcvtsi2ss xmm4, xmm8, {ru-sae}, rax +// CHECK: encoding: [0x62,0xf1,0xbe,0x58,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, {ru-sae}, rax + +// CHECK: vcvtsi2ss xmm4, xmm8, {rd-sae}, rax +// CHECK: encoding: [0x62,0xf1,0xbe,0x38,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, {rd-sae}, rax + +// CHECK: vcvtsi2ss xmm4, xmm8, {rz-sae}, rax +// CHECK: encoding: [0x62,0xf1,0xbe,0x78,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, {rz-sae}, rax + +// CHECK: vcvtsi2ss xmm4, xmm8, r8 +// CHECK: encoding: [0xc4,0xc1,0xba,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, r8 + +// CHECK: vcvtsi2ss xmm4, xmm8, {rn-sae}, r8 +// CHECK: encoding: [0x62,0xd1,0xbe,0x18,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, {rn-sae}, r8 + +// CHECK: vcvtsi2ss xmm4, xmm8, {ru-sae}, r8 +// CHECK: encoding: [0x62,0xd1,0xbe,0x58,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, {ru-sae}, r8 + +// CHECK: vcvtsi2ss xmm4, xmm8, {rd-sae}, r8 +// CHECK: encoding: [0x62,0xd1,0xbe,0x38,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, {rd-sae}, r8 + +// CHECK: vcvtsi2ss xmm4, xmm8, {rz-sae}, r8 +// CHECK: encoding: [0x62,0xd1,0xbe,0x78,0x2a,0xe0] + vcvtsi2ss xmm4, xmm8, {rz-sae}, r8 + +// CHECK: vcvtsi2ss xmm4, xmm8, qword ptr [rcx] +// CHECK: encoding: [0xc4,0xe1,0xba,0x2a,0x21] + vcvtsi2ss xmm4, xmm8, qword ptr [rcx] + +// CHECK: vcvtsi2ss xmm4, xmm8, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa1,0xba,0x2a,0xa4,0xf0,0x34,0x12,0x00,0x00] + vcvtsi2ss xmm4, xmm8, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsi2ss xmm4, xmm8, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0xe1,0xba,0x2a,0xa2,0xf8,0x03,0x00,0x00] + vcvtsi2ss xmm4, xmm8, qword ptr [rdx + 1016] + +// CHECK: vcvtsi2ss xmm4, xmm8, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0xe1,0xba,0x2a,0xa2,0x00,0x04,0x00,0x00] + vcvtsi2ss xmm4, xmm8, qword ptr [rdx + 1024] + +// CHECK: vcvtsi2ss xmm4, xmm8, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0xe1,0xba,0x2a,0xa2,0x00,0xfc,0xff,0xff] + vcvtsi2ss xmm4, xmm8, qword ptr [rdx - 1024] + +// CHECK: vcvtsi2ss xmm4, xmm8, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0xe1,0xba,0x2a,0xa2,0xf8,0xfb,0xff,0xff] + vcvtsi2ss xmm4, xmm8, qword ptr [rdx - 1032] + +// CHECK: vcvtss2si eax, xmm8, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x18,0x2d,0xc0] + vcvtss2si eax, xmm8, {rn-sae} + +// CHECK: vcvtss2si eax, xmm8, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x58,0x2d,0xc0] + vcvtss2si eax, xmm8, {ru-sae} + +// CHECK: vcvtss2si eax, xmm8, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x38,0x2d,0xc0] + vcvtss2si eax, xmm8, {rd-sae} + +// CHECK: vcvtss2si eax, xmm8, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x78,0x2d,0xc0] + vcvtss2si eax, xmm8, {rz-sae} + +// CHECK: vcvtss2si ebp, xmm8, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x18,0x2d,0xe8] + vcvtss2si ebp, xmm8, {rn-sae} + +// CHECK: vcvtss2si ebp, xmm8, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x58,0x2d,0xe8] + vcvtss2si ebp, xmm8, {ru-sae} + +// CHECK: vcvtss2si ebp, xmm8, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x38,0x2d,0xe8] + vcvtss2si ebp, xmm8, {rd-sae} + +// CHECK: vcvtss2si ebp, xmm8, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0x7e,0x78,0x2d,0xe8] + vcvtss2si ebp, xmm8, {rz-sae} + +// CHECK: vcvtss2si r13d, xmm8, {rn-sae} +// CHECK: encoding: [0x62,0x51,0x7e,0x18,0x2d,0xe8] + vcvtss2si r13d, xmm8, {rn-sae} + +// CHECK: vcvtss2si r13d, xmm8, {ru-sae} +// CHECK: encoding: [0x62,0x51,0x7e,0x58,0x2d,0xe8] + vcvtss2si r13d, xmm8, {ru-sae} + +// CHECK: vcvtss2si r13d, xmm8, {rd-sae} +// CHECK: encoding: [0x62,0x51,0x7e,0x38,0x2d,0xe8] + vcvtss2si r13d, xmm8, {rd-sae} + +// CHECK: vcvtss2si r13d, xmm8, {rz-sae} +// CHECK: encoding: [0x62,0x51,0x7e,0x78,0x2d,0xe8] + vcvtss2si r13d, xmm8, {rz-sae} + +// CHECK: vcvtss2si rax, xmm6, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x18,0x2d,0xc6] + vcvtss2si rax, xmm6, {rn-sae} + +// CHECK: vcvtss2si rax, xmm6, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x58,0x2d,0xc6] + vcvtss2si rax, xmm6, {ru-sae} + +// CHECK: vcvtss2si rax, xmm6, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x38,0x2d,0xc6] + vcvtss2si rax, xmm6, {rd-sae} + +// CHECK: vcvtss2si rax, xmm6, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x78,0x2d,0xc6] + vcvtss2si rax, xmm6, {rz-sae} + +// CHECK: vcvtss2si r8, xmm6, {rn-sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x18,0x2d,0xc6] + vcvtss2si r8, xmm6, {rn-sae} + +// CHECK: vcvtss2si r8, xmm6, {ru-sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x58,0x2d,0xc6] + vcvtss2si r8, xmm6, {ru-sae} + +// CHECK: vcvtss2si r8, xmm6, {rd-sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x38,0x2d,0xc6] + vcvtss2si r8, xmm6, {rd-sae} + +// CHECK: vcvtss2si r8, xmm6, {rz-sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x78,0x2d,0xc6] + vcvtss2si r8, xmm6, {rz-sae} + +// CHECK: vcvttpd2dq ymm4, zmm1 +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0xe6,0xe1] + vcvttpd2dq ymm4, zmm1 + +// CHECK: vcvttpd2dq ymm4 {k6}, zmm1 +// CHECK: encoding: [0x62,0xf1,0xfd,0x4e,0xe6,0xe1] + vcvttpd2dq ymm4 {k6}, zmm1 + +// CHECK: vcvttpd2dq ymm4 {k6} {z}, zmm1 +// CHECK: encoding: [0x62,0xf1,0xfd,0xce,0xe6,0xe1] + vcvttpd2dq ymm4 {k6} {z}, zmm1 + +// CHECK: vcvttpd2dq ymm4, zmm1, {sae} +// CHECK: encoding: [0x62,0xf1,0xfd,0x18,0xe6,0xe1] + vcvttpd2dq ymm4, zmm1, {sae} + +// CHECK: vcvttpd2dq ymm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0xe6,0x21] + vcvttpd2dq ymm4, zmmword ptr [rcx] + +// CHECK: vcvttpd2dq ymm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xfd,0x48,0xe6,0xa4,0xf0,0x34,0x12,0x00,0x00] + vcvttpd2dq ymm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttpd2dq ymm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0xe6,0x21] + vcvttpd2dq ymm4, qword ptr [rcx]{1to8} + +// CHECK: vcvttpd2dq ymm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0xe6,0x62,0x7f] + vcvttpd2dq ymm4, zmmword ptr [rdx + 8128] + +// CHECK: vcvttpd2dq ymm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0xe6,0xa2,0x00,0x20,0x00,0x00] + vcvttpd2dq ymm4, zmmword ptr [rdx + 8192] + +// CHECK: vcvttpd2dq ymm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0xe6,0x62,0x80] + vcvttpd2dq ymm4, zmmword ptr [rdx - 8192] + +// CHECK: vcvttpd2dq ymm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0xe6,0xa2,0xc0,0xdf,0xff,0xff] + vcvttpd2dq ymm4, zmmword ptr [rdx - 8256] + +// CHECK: vcvttpd2dq ymm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0xe6,0x62,0x7f] + vcvttpd2dq ymm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvttpd2dq ymm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0xe6,0xa2,0x00,0x04,0x00,0x00] + vcvttpd2dq ymm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvttpd2dq ymm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0xe6,0x62,0x80] + vcvttpd2dq ymm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvttpd2dq ymm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xfd,0x58,0xe6,0xa2,0xf8,0xfb,0xff,0xff] + vcvttpd2dq ymm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvttps2dq zmm23, zmm28 +// CHECK: encoding: [0x62,0x81,0x7e,0x48,0x5b,0xfc] + vcvttps2dq zmm23, zmm28 + +// CHECK: vcvttps2dq zmm23 {k3}, zmm28 +// CHECK: encoding: [0x62,0x81,0x7e,0x4b,0x5b,0xfc] + vcvttps2dq zmm23 {k3}, zmm28 + +// CHECK: vcvttps2dq zmm23 {k3} {z}, zmm28 +// CHECK: encoding: [0x62,0x81,0x7e,0xcb,0x5b,0xfc] + vcvttps2dq zmm23 {k3} {z}, zmm28 + +// CHECK: vcvttps2dq zmm23, zmm28, {sae} +// CHECK: encoding: [0x62,0x81,0x7e,0x18,0x5b,0xfc] + vcvttps2dq zmm23, zmm28, {sae} + +// CHECK: vcvttps2dq zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x5b,0x39] + vcvttps2dq zmm23, zmmword ptr [rcx] + +// CHECK: vcvttps2dq zmm23, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x7e,0x48,0x5b,0xbc,0xf0,0x34,0x12,0x00,0x00] + vcvttps2dq zmm23, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttps2dq zmm23, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x5b,0x39] + vcvttps2dq zmm23, dword ptr [rcx]{1to16} + +// CHECK: vcvttps2dq zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x5b,0x7a,0x7f] + vcvttps2dq zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vcvttps2dq zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x5b,0xba,0x00,0x20,0x00,0x00] + vcvttps2dq zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vcvttps2dq zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x5b,0x7a,0x80] + vcvttps2dq zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vcvttps2dq zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x5b,0xba,0xc0,0xdf,0xff,0xff] + vcvttps2dq zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vcvttps2dq zmm23, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x5b,0x7a,0x7f] + vcvttps2dq zmm23, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvttps2dq zmm23, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x5b,0xba,0x00,0x02,0x00,0x00] + vcvttps2dq zmm23, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvttps2dq zmm23, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x5b,0x7a,0x80] + vcvttps2dq zmm23, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvttps2dq zmm23, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x5b,0xba,0xfc,0xfd,0xff,0xff] + vcvttps2dq zmm23, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvttsd2si eax, xmm5, {sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x18,0x2c,0xc5] + vcvttsd2si eax, xmm5, {sae} + +// CHECK: vcvttsd2si ebp, xmm5, {sae} +// CHECK: encoding: [0x62,0xf1,0x7f,0x18,0x2c,0xed] + vcvttsd2si ebp, xmm5, {sae} + +// CHECK: vcvttsd2si r13d, xmm5, {sae} +// CHECK: encoding: [0x62,0x71,0x7f,0x18,0x2c,0xed] + vcvttsd2si r13d, xmm5, {sae} + +// CHECK: vcvttsd2si rax, xmm7, {sae} +// CHECK: encoding: [0x62,0xf1,0xff,0x18,0x2c,0xc7] + vcvttsd2si rax, xmm7, {sae} + +// CHECK: vcvttsd2si r8, xmm7, {sae} +// CHECK: encoding: [0x62,0x71,0xff,0x18,0x2c,0xc7] + vcvttsd2si r8, xmm7, {sae} + +// CHECK: vcvttss2si eax, xmm4, {sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x18,0x2c,0xc4] + vcvttss2si eax, xmm4, {sae} + +// CHECK: vcvttss2si ebp, xmm4, {sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x18,0x2c,0xec] + vcvttss2si ebp, xmm4, {sae} + +// CHECK: vcvttss2si r13d, xmm4, {sae} +// CHECK: encoding: [0x62,0x71,0x7e,0x18,0x2c,0xec] + vcvttss2si r13d, xmm4, {sae} + +// CHECK: vcvttss2si rax, xmm27, {sae} +// CHECK: encoding: [0x62,0x91,0xfe,0x18,0x2c,0xc3] + vcvttss2si rax, xmm27, {sae} + +// CHECK: vcvttss2si r8, xmm27, {sae} +// CHECK: encoding: [0x62,0x11,0xfe,0x18,0x2c,0xc3] + vcvttss2si r8, xmm27, {sae} + +// CHECK: vcvtudq2pd zmm18, ymm28 +// CHECK: encoding: [0x62,0x81,0x7e,0x48,0x7a,0xd4] + vcvtudq2pd zmm18, ymm28 + +// CHECK: vcvtudq2pd zmm18 {k1}, ymm28 +// CHECK: encoding: [0x62,0x81,0x7e,0x49,0x7a,0xd4] + vcvtudq2pd zmm18 {k1}, ymm28 + +// CHECK: vcvtudq2pd zmm18 {k1} {z}, ymm28 +// CHECK: encoding: [0x62,0x81,0x7e,0xc9,0x7a,0xd4] + vcvtudq2pd zmm18 {k1} {z}, ymm28 + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x11] + vcvtudq2pd zmm18, ymmword ptr [rcx] + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x7e,0x48,0x7a,0x94,0xf0,0x34,0x12,0x00,0x00] + vcvtudq2pd zmm18, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtudq2pd zmm18, dword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x11] + vcvtudq2pd zmm18, dword ptr [rcx]{1to8} + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x52,0x7f] + vcvtudq2pd zmm18, ymmword ptr [rdx + 4064] + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x92,0x00,0x10,0x00,0x00] + vcvtudq2pd zmm18, ymmword ptr [rdx + 4096] + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x52,0x80] + vcvtudq2pd zmm18, ymmword ptr [rdx - 4096] + +// CHECK: vcvtudq2pd zmm18, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x7a,0x92,0xe0,0xef,0xff,0xff] + vcvtudq2pd zmm18, ymmword ptr [rdx - 4128] + +// CHECK: vcvtudq2pd zmm18, dword ptr [rdx + 508]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x52,0x7f] + vcvtudq2pd zmm18, dword ptr [rdx + 508]{1to8} + +// CHECK: vcvtudq2pd zmm18, dword ptr [rdx + 512]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x92,0x00,0x02,0x00,0x00] + vcvtudq2pd zmm18, dword ptr [rdx + 512]{1to8} + +// CHECK: vcvtudq2pd zmm18, dword ptr [rdx - 512]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x52,0x80] + vcvtudq2pd zmm18, dword ptr [rdx - 512]{1to8} + +// CHECK: vcvtudq2pd zmm18, dword ptr [rdx - 516]{1to8} +// CHECK: encoding: [0x62,0xe1,0x7e,0x58,0x7a,0x92,0xfc,0xfd,0xff,0xff] + vcvtudq2pd zmm18, dword ptr [rdx - 516]{1to8} + +// CHECK: vcvtudq2ps zmm7, zmm24 +// CHECK: encoding: [0x62,0x91,0x7f,0x48,0x7a,0xf8] + vcvtudq2ps zmm7, zmm24 + +// CHECK: vcvtudq2ps zmm7 {k7}, zmm24 +// CHECK: encoding: [0x62,0x91,0x7f,0x4f,0x7a,0xf8] + vcvtudq2ps zmm7 {k7}, zmm24 + +// CHECK: vcvtudq2ps zmm7 {k7} {z}, zmm24 +// CHECK: encoding: [0x62,0x91,0x7f,0xcf,0x7a,0xf8] + vcvtudq2ps zmm7 {k7} {z}, zmm24 + +// CHECK: vcvtudq2ps zmm7, zmm24, {rn-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x18,0x7a,0xf8] + vcvtudq2ps zmm7, zmm24, {rn-sae} + +// CHECK: vcvtudq2ps zmm7, zmm24, {ru-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x58,0x7a,0xf8] + vcvtudq2ps zmm7, zmm24, {ru-sae} + +// CHECK: vcvtudq2ps zmm7, zmm24, {rd-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x38,0x7a,0xf8] + vcvtudq2ps zmm7, zmm24, {rd-sae} + +// CHECK: vcvtudq2ps zmm7, zmm24, {rz-sae} +// CHECK: encoding: [0x62,0x91,0x7f,0x78,0x7a,0xf8] + vcvtudq2ps zmm7, zmm24, {rz-sae} + +// CHECK: vcvtudq2ps zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x48,0x7a,0x39] + vcvtudq2ps zmm7, zmmword ptr [rcx] + +// CHECK: vcvtudq2ps zmm7, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7f,0x48,0x7a,0xbc,0xf0,0x34,0x12,0x00,0x00] + vcvtudq2ps zmm7, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtudq2ps zmm7, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x7a,0x39] + vcvtudq2ps zmm7, dword ptr [rcx]{1to16} + +// CHECK: vcvtudq2ps zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x7f,0x48,0x7a,0x7a,0x7f] + vcvtudq2ps zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vcvtudq2ps zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x7f,0x48,0x7a,0xba,0x00,0x20,0x00,0x00] + vcvtudq2ps zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vcvtudq2ps zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x7f,0x48,0x7a,0x7a,0x80] + vcvtudq2ps zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vcvtudq2ps zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x7f,0x48,0x7a,0xba,0xc0,0xdf,0xff,0xff] + vcvtudq2ps zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vcvtudq2ps zmm7, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x7a,0x7a,0x7f] + vcvtudq2ps zmm7, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvtudq2ps zmm7, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x7a,0xba,0x00,0x02,0x00,0x00] + vcvtudq2ps zmm7, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvtudq2ps zmm7, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x7a,0x7a,0x80] + vcvtudq2ps zmm7, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvtudq2ps zmm7, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7f,0x58,0x7a,0xba,0xfc,0xfd,0xff,0xff] + vcvtudq2ps zmm7, dword ptr [rdx - 516]{1to16} + +// CHECK: vdivpd zmm18, zmm4, zmm19 +// CHECK: encoding: [0x62,0xa1,0xdd,0x48,0x5e,0xd3] + vdivpd zmm18, zmm4, zmm19 + +// CHECK: vdivpd zmm18 {k5}, zmm4, zmm19 +// CHECK: encoding: [0x62,0xa1,0xdd,0x4d,0x5e,0xd3] + vdivpd zmm18 {k5}, zmm4, zmm19 + +// CHECK: vdivpd zmm18 {k5} {z}, zmm4, zmm19 +// CHECK: encoding: [0x62,0xa1,0xdd,0xcd,0x5e,0xd3] + vdivpd zmm18 {k5} {z}, zmm4, zmm19 + +// CHECK: vdivpd zmm18, zmm4, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0xa1,0xdd,0x18,0x5e,0xd3] + vdivpd zmm18, zmm4, zmm19, {rn-sae} + +// CHECK: vdivpd zmm18, zmm4, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0xa1,0xdd,0x58,0x5e,0xd3] + vdivpd zmm18, zmm4, zmm19, {ru-sae} + +// CHECK: vdivpd zmm18, zmm4, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0xa1,0xdd,0x38,0x5e,0xd3] + vdivpd zmm18, zmm4, zmm19, {rd-sae} + +// CHECK: vdivpd zmm18, zmm4, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0xa1,0xdd,0x78,0x5e,0xd3] + vdivpd zmm18, zmm4, zmm19, {rz-sae} + +// CHECK: vdivpd zmm18, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0x5e,0x11] + vdivpd zmm18, zmm4, zmmword ptr [rcx] + +// CHECK: vdivpd zmm18, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xdd,0x48,0x5e,0x94,0xf0,0x34,0x12,0x00,0x00] + vdivpd zmm18, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vdivpd zmm18, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0x5e,0x11] + vdivpd zmm18, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vdivpd zmm18, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0x5e,0x52,0x7f] + vdivpd zmm18, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vdivpd zmm18, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0x5e,0x92,0x00,0x20,0x00,0x00] + vdivpd zmm18, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vdivpd zmm18, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0x5e,0x52,0x80] + vdivpd zmm18, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vdivpd zmm18, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xdd,0x48,0x5e,0x92,0xc0,0xdf,0xff,0xff] + vdivpd zmm18, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vdivpd zmm18, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0x5e,0x52,0x7f] + vdivpd zmm18, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vdivpd zmm18, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0x5e,0x92,0x00,0x04,0x00,0x00] + vdivpd zmm18, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vdivpd zmm18, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0x5e,0x52,0x80] + vdivpd zmm18, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vdivpd zmm18, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0x5e,0x92,0xf8,0xfb,0xff,0xff] + vdivpd zmm18, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vdivps zmm6, zmm29, zmm4 +// CHECK: encoding: [0x62,0xf1,0x14,0x40,0x5e,0xf4] + vdivps zmm6, zmm29, zmm4 + +// CHECK: vdivps zmm6 {k6}, zmm29, zmm4 +// CHECK: encoding: [0x62,0xf1,0x14,0x46,0x5e,0xf4] + vdivps zmm6 {k6}, zmm29, zmm4 + +// CHECK: vdivps zmm6 {k6} {z}, zmm29, zmm4 +// CHECK: encoding: [0x62,0xf1,0x14,0xc6,0x5e,0xf4] + vdivps zmm6 {k6} {z}, zmm29, zmm4 + +// CHECK: vdivps zmm6, zmm29, zmm4, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x14,0x10,0x5e,0xf4] + vdivps zmm6, zmm29, zmm4, {rn-sae} + +// CHECK: vdivps zmm6, zmm29, zmm4, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x14,0x50,0x5e,0xf4] + vdivps zmm6, zmm29, zmm4, {ru-sae} + +// CHECK: vdivps zmm6, zmm29, zmm4, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x14,0x30,0x5e,0xf4] + vdivps zmm6, zmm29, zmm4, {rd-sae} + +// CHECK: vdivps zmm6, zmm29, zmm4, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x14,0x70,0x5e,0xf4] + vdivps zmm6, zmm29, zmm4, {rz-sae} + +// CHECK: vdivps zmm6, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x14,0x40,0x5e,0x31] + vdivps zmm6, zmm29, zmmword ptr [rcx] + +// CHECK: vdivps zmm6, zmm29, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x14,0x40,0x5e,0xb4,0xf0,0x34,0x12,0x00,0x00] + vdivps zmm6, zmm29, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vdivps zmm6, zmm29, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x14,0x50,0x5e,0x31] + vdivps zmm6, zmm29, dword ptr [rcx]{1to16} + +// CHECK: vdivps zmm6, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x14,0x40,0x5e,0x72,0x7f] + vdivps zmm6, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vdivps zmm6, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x14,0x40,0x5e,0xb2,0x00,0x20,0x00,0x00] + vdivps zmm6, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vdivps zmm6, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x14,0x40,0x5e,0x72,0x80] + vdivps zmm6, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vdivps zmm6, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x14,0x40,0x5e,0xb2,0xc0,0xdf,0xff,0xff] + vdivps zmm6, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vdivps zmm6, zmm29, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x14,0x50,0x5e,0x72,0x7f] + vdivps zmm6, zmm29, dword ptr [rdx + 508]{1to16} + +// CHECK: vdivps zmm6, zmm29, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x14,0x50,0x5e,0xb2,0x00,0x02,0x00,0x00] + vdivps zmm6, zmm29, dword ptr [rdx + 512]{1to16} + +// CHECK: vdivps zmm6, zmm29, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x14,0x50,0x5e,0x72,0x80] + vdivps zmm6, zmm29, dword ptr [rdx - 512]{1to16} + +// CHECK: vdivps zmm6, zmm29, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x14,0x50,0x5e,0xb2,0xfc,0xfd,0xff,0xff] + vdivps zmm6, zmm29, dword ptr [rdx - 516]{1to16} + +// CHECK: vdivsd xmm15, xmm4, xmm22 +// CHECK: encoding: [0x62,0x31,0xdf,0x08,0x5e,0xfe] + vdivsd xmm15, xmm4, xmm22 + +// CHECK: vdivsd xmm15 {k3}, xmm4, xmm22 +// CHECK: encoding: [0x62,0x31,0xdf,0x0b,0x5e,0xfe] + vdivsd xmm15 {k3}, xmm4, xmm22 + +// CHECK: vdivsd xmm15 {k3} {z}, xmm4, xmm22 +// CHECK: encoding: [0x62,0x31,0xdf,0x8b,0x5e,0xfe] + vdivsd xmm15 {k3} {z}, xmm4, xmm22 + +// CHECK: vdivsd xmm15, xmm4, xmm22, {rn-sae} +// CHECK: encoding: [0x62,0x31,0xdf,0x18,0x5e,0xfe] + vdivsd xmm15, xmm4, xmm22, {rn-sae} + +// CHECK: vdivsd xmm15, xmm4, xmm22, {ru-sae} +// CHECK: encoding: [0x62,0x31,0xdf,0x58,0x5e,0xfe] + vdivsd xmm15, xmm4, xmm22, {ru-sae} + +// CHECK: vdivsd xmm15, xmm4, xmm22, {rd-sae} +// CHECK: encoding: [0x62,0x31,0xdf,0x38,0x5e,0xfe] + vdivsd xmm15, xmm4, xmm22, {rd-sae} + +// CHECK: vdivsd xmm15, xmm4, xmm22, {rz-sae} +// CHECK: encoding: [0x62,0x31,0xdf,0x78,0x5e,0xfe] + vdivsd xmm15, xmm4, xmm22, {rz-sae} + +// CHECK: vdivsd xmm15, xmm4, qword ptr [rcx] +// CHECK: encoding: [0xc5,0x5b,0x5e,0x39] + vdivsd xmm15, xmm4, qword ptr [rcx] + +// CHECK: vdivsd xmm15, xmm4, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0x21,0x5b,0x5e,0xbc,0xf0,0x34,0x12,0x00,0x00] + vdivsd xmm15, xmm4, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vdivsd xmm15, xmm4, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc5,0x5b,0x5e,0xba,0xf8,0x03,0x00,0x00] + vdivsd xmm15, xmm4, qword ptr [rdx + 1016] + +// CHECK: vdivsd xmm15, xmm4, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc5,0x5b,0x5e,0xba,0x00,0x04,0x00,0x00] + vdivsd xmm15, xmm4, qword ptr [rdx + 1024] + +// CHECK: vdivsd xmm15, xmm4, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc5,0x5b,0x5e,0xba,0x00,0xfc,0xff,0xff] + vdivsd xmm15, xmm4, qword ptr [rdx - 1024] + +// CHECK: vdivsd xmm15, xmm4, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc5,0x5b,0x5e,0xba,0xf8,0xfb,0xff,0xff] + vdivsd xmm15, xmm4, qword ptr [rdx - 1032] + +// CHECK: vdivss xmm27, xmm2, xmm20 +// CHECK: encoding: [0x62,0x21,0x6e,0x08,0x5e,0xdc] + vdivss xmm27, xmm2, xmm20 + +// CHECK: vdivss xmm27 {k5}, xmm2, xmm20 +// CHECK: encoding: [0x62,0x21,0x6e,0x0d,0x5e,0xdc] + vdivss xmm27 {k5}, xmm2, xmm20 + +// CHECK: vdivss xmm27 {k5} {z}, xmm2, xmm20 +// CHECK: encoding: [0x62,0x21,0x6e,0x8d,0x5e,0xdc] + vdivss xmm27 {k5} {z}, xmm2, xmm20 + +// CHECK: vdivss xmm27, xmm2, xmm20, {rn-sae} +// CHECK: encoding: [0x62,0x21,0x6e,0x18,0x5e,0xdc] + vdivss xmm27, xmm2, xmm20, {rn-sae} + +// CHECK: vdivss xmm27, xmm2, xmm20, {ru-sae} +// CHECK: encoding: [0x62,0x21,0x6e,0x58,0x5e,0xdc] + vdivss xmm27, xmm2, xmm20, {ru-sae} + +// CHECK: vdivss xmm27, xmm2, xmm20, {rd-sae} +// CHECK: encoding: [0x62,0x21,0x6e,0x38,0x5e,0xdc] + vdivss xmm27, xmm2, xmm20, {rd-sae} + +// CHECK: vdivss xmm27, xmm2, xmm20, {rz-sae} +// CHECK: encoding: [0x62,0x21,0x6e,0x78,0x5e,0xdc] + vdivss xmm27, xmm2, xmm20, {rz-sae} + +// CHECK: vdivss xmm27, xmm2, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x6e,0x08,0x5e,0x19] + vdivss xmm27, xmm2, dword ptr [rcx] + +// CHECK: vdivss xmm27, xmm2, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x6e,0x08,0x5e,0x9c,0xf0,0x34,0x12,0x00,0x00] + vdivss xmm27, xmm2, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vdivss xmm27, xmm2, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x6e,0x08,0x5e,0x5a,0x7f] + vdivss xmm27, xmm2, dword ptr [rdx + 508] + +// CHECK: vdivss xmm27, xmm2, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x6e,0x08,0x5e,0x9a,0x00,0x02,0x00,0x00] + vdivss xmm27, xmm2, dword ptr [rdx + 512] + +// CHECK: vdivss xmm27, xmm2, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x6e,0x08,0x5e,0x5a,0x80] + vdivss xmm27, xmm2, dword ptr [rdx - 512] + +// CHECK: vdivss xmm27, xmm2, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x6e,0x08,0x5e,0x9a,0xfc,0xfd,0xff,0xff] + vdivss xmm27, xmm2, dword ptr [rdx - 516] + +// CHECK: vexpandpd zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x88,0x21] + vexpandpd zmm4, zmmword ptr [rcx] + +// CHECK: vexpandpd zmm4 {k7}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xfd,0x4f,0x88,0x21] + vexpandpd zmm4 {k7}, zmmword ptr [rcx] + +// CHECK: vexpandpd zmm4 {k7} {z}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xfd,0xcf,0x88,0x21] + vexpandpd zmm4 {k7} {z}, zmmword ptr [rcx] + +// CHECK: vexpandpd zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xfd,0x48,0x88,0xa4,0xf0,0x34,0x12,0x00,0x00] + vexpandpd zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vexpandpd zmm4, zmmword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x88,0x62,0x7f] + vexpandpd zmm4, zmmword ptr [rdx + 1016] + +// CHECK: vexpandpd zmm4, zmmword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x88,0xa2,0x00,0x04,0x00,0x00] + vexpandpd zmm4, zmmword ptr [rdx + 1024] + +// CHECK: vexpandpd zmm4, zmmword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x88,0x62,0x80] + vexpandpd zmm4, zmmword ptr [rdx - 1024] + +// CHECK: vexpandpd zmm4, zmmword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x88,0xa2,0xf8,0xfb,0xff,0xff] + vexpandpd zmm4, zmmword ptr [rdx - 1032] + +// CHECK: vexpandpd zmm18, zmm9 +// CHECK: encoding: [0x62,0xc2,0xfd,0x48,0x88,0xd1] + vexpandpd zmm18, zmm9 + +// CHECK: vexpandpd zmm18 {k2}, zmm9 +// CHECK: encoding: [0x62,0xc2,0xfd,0x4a,0x88,0xd1] + vexpandpd zmm18 {k2}, zmm9 + +// CHECK: vexpandpd zmm18 {k2} {z}, zmm9 +// CHECK: encoding: [0x62,0xc2,0xfd,0xca,0x88,0xd1] + vexpandpd zmm18 {k2} {z}, zmm9 + +// CHECK: vexpandps zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x88,0x21] + vexpandps zmm28, zmmword ptr [rcx] + +// CHECK: vexpandps zmm28 {k7}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x4f,0x88,0x21] + vexpandps zmm28 {k7}, zmmword ptr [rcx] + +// CHECK: vexpandps zmm28 {k7} {z}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0xcf,0x88,0x21] + vexpandps zmm28 {k7} {z}, zmmword ptr [rcx] + +// CHECK: vexpandps zmm28, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x88,0xa4,0xf0,0x34,0x12,0x00,0x00] + vexpandps zmm28, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vexpandps zmm28, zmmword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x88,0x62,0x7f] + vexpandps zmm28, zmmword ptr [rdx + 508] + +// CHECK: vexpandps zmm28, zmmword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x88,0xa2,0x00,0x02,0x00,0x00] + vexpandps zmm28, zmmword ptr [rdx + 512] + +// CHECK: vexpandps zmm28, zmmword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x88,0x62,0x80] + vexpandps zmm28, zmmword ptr [rdx - 512] + +// CHECK: vexpandps zmm28, zmmword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x88,0xa2,0xfc,0xfd,0xff,0xff] + vexpandps zmm28, zmmword ptr [rdx - 516] + +// CHECK: vexpandps zmm17, zmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x88,0xca] + vexpandps zmm17, zmm18 + +// CHECK: vexpandps zmm17 {k1}, zmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0x49,0x88,0xca] + vexpandps zmm17 {k1}, zmm18 + +// CHECK: vexpandps zmm17 {k1} {z}, zmm18 +// CHECK: encoding: [0x62,0xa2,0x7d,0xc9,0x88,0xca] + vexpandps zmm17 {k1} {z}, zmm18 + +// CHECK: vextractf32x4 xmm21, zmm10, 171 +// CHECK: encoding: [0x62,0x33,0x7d,0x48,0x19,0xd5,0xab] + vextractf32x4 xmm21, zmm10, 171 + +// CHECK: vextractf32x4 xmm21 {k2}, zmm10, 171 +// CHECK: encoding: [0x62,0x33,0x7d,0x4a,0x19,0xd5,0xab] + vextractf32x4 xmm21 {k2}, zmm10, 171 + +// CHECK: vextractf32x4 xmm21 {k2} {z}, zmm10, 171 +// CHECK: encoding: [0x62,0x33,0x7d,0xca,0x19,0xd5,0xab] + vextractf32x4 xmm21 {k2} {z}, zmm10, 171 + +// CHECK: vextractf32x4 xmm21, zmm10, 123 +// CHECK: encoding: [0x62,0x33,0x7d,0x48,0x19,0xd5,0x7b] + vextractf32x4 xmm21, zmm10, 123 + +// CHECK: vextractf64x4 ymm14, zmm5, 171 +// CHECK: encoding: [0x62,0xd3,0xfd,0x48,0x1b,0xee,0xab] + vextractf64x4 ymm14, zmm5, 171 + +// CHECK: vextractf64x4 ymm14 {k3}, zmm5, 171 +// CHECK: encoding: [0x62,0xd3,0xfd,0x4b,0x1b,0xee,0xab] + vextractf64x4 ymm14 {k3}, zmm5, 171 + +// CHECK: vextractf64x4 ymm14 {k3} {z}, zmm5, 171 +// CHECK: encoding: [0x62,0xd3,0xfd,0xcb,0x1b,0xee,0xab] + vextractf64x4 ymm14 {k3} {z}, zmm5, 171 + +// CHECK: vextractf64x4 ymm14, zmm5, 123 +// CHECK: encoding: [0x62,0xd3,0xfd,0x48,0x1b,0xee,0x7b] + vextractf64x4 ymm14, zmm5, 123 + +// CHECK: vextracti32x4 xmm29, zmm12, 171 +// CHECK: encoding: [0x62,0x13,0x7d,0x48,0x39,0xe5,0xab] + vextracti32x4 xmm29, zmm12, 171 + +// CHECK: vextracti32x4 xmm29 {k5}, zmm12, 171 +// CHECK: encoding: [0x62,0x13,0x7d,0x4d,0x39,0xe5,0xab] + vextracti32x4 xmm29 {k5}, zmm12, 171 + +// CHECK: vextracti32x4 xmm29 {k5} {z}, zmm12, 171 +// CHECK: encoding: [0x62,0x13,0x7d,0xcd,0x39,0xe5,0xab] + vextracti32x4 xmm29 {k5} {z}, zmm12, 171 + +// CHECK: vextracti32x4 xmm29, zmm12, 123 +// CHECK: encoding: [0x62,0x13,0x7d,0x48,0x39,0xe5,0x7b] + vextracti32x4 xmm29, zmm12, 123 + +// CHECK: vextracti64x4 ymm5, zmm22, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x3b,0xf5,0xab] + vextracti64x4 ymm5, zmm22, 171 + +// CHECK: vextracti64x4 ymm5 {k6}, zmm22, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0x4e,0x3b,0xf5,0xab] + vextracti64x4 ymm5 {k6}, zmm22, 171 + +// CHECK: vextracti64x4 ymm5 {k6} {z}, zmm22, 171 +// CHECK: encoding: [0x62,0xe3,0xfd,0xce,0x3b,0xf5,0xab] + vextracti64x4 ymm5 {k6} {z}, zmm22, 171 + +// CHECK: vextracti64x4 ymm5, zmm22, 123 +// CHECK: encoding: [0x62,0xe3,0xfd,0x48,0x3b,0xf5,0x7b] + vextracti64x4 ymm5, zmm22, 123 + +// CHECK: vfmadd132pd zmm23, zmm15, zmm11 +// CHECK: encoding: [0x62,0xc2,0x85,0x48,0x98,0xfb] + vfmadd132pd zmm23, zmm15, zmm11 + +// CHECK: vfmadd132pd zmm23 {k7}, zmm15, zmm11 +// CHECK: encoding: [0x62,0xc2,0x85,0x4f,0x98,0xfb] + vfmadd132pd zmm23 {k7}, zmm15, zmm11 + +// CHECK: vfmadd132pd zmm23 {k7} {z}, zmm15, zmm11 +// CHECK: encoding: [0x62,0xc2,0x85,0xcf,0x98,0xfb] + vfmadd132pd zmm23 {k7} {z}, zmm15, zmm11 + +// CHECK: vfmadd132pd zmm23, zmm15, zmm11, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0x85,0x18,0x98,0xfb] + vfmadd132pd zmm23, zmm15, zmm11, {rn-sae} + +// CHECK: vfmadd132pd zmm23, zmm15, zmm11, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0x85,0x58,0x98,0xfb] + vfmadd132pd zmm23, zmm15, zmm11, {ru-sae} + +// CHECK: vfmadd132pd zmm23, zmm15, zmm11, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0x85,0x38,0x98,0xfb] + vfmadd132pd zmm23, zmm15, zmm11, {rd-sae} + +// CHECK: vfmadd132pd zmm23, zmm15, zmm11, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0x85,0x78,0x98,0xfb] + vfmadd132pd zmm23, zmm15, zmm11, {rz-sae} + +// CHECK: vfmadd132pd zmm23, zmm15, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x85,0x48,0x98,0x39] + vfmadd132pd zmm23, zmm15, zmmword ptr [rcx] + +// CHECK: vfmadd132pd zmm23, zmm15, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x85,0x48,0x98,0xbc,0xf0,0x34,0x12,0x00,0x00] + vfmadd132pd zmm23, zmm15, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd132pd zmm23, zmm15, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0x85,0x58,0x98,0x39] + vfmadd132pd zmm23, zmm15, qword ptr [rcx]{1to8} + +// CHECK: vfmadd132pd zmm23, zmm15, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x85,0x48,0x98,0x7a,0x7f] + vfmadd132pd zmm23, zmm15, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd132pd zmm23, zmm15, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x85,0x48,0x98,0xba,0x00,0x20,0x00,0x00] + vfmadd132pd zmm23, zmm15, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd132pd zmm23, zmm15, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x85,0x48,0x98,0x7a,0x80] + vfmadd132pd zmm23, zmm15, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd132pd zmm23, zmm15, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x85,0x48,0x98,0xba,0xc0,0xdf,0xff,0xff] + vfmadd132pd zmm23, zmm15, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd132pd zmm23, zmm15, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0x85,0x58,0x98,0x7a,0x7f] + vfmadd132pd zmm23, zmm15, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmadd132pd zmm23, zmm15, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x85,0x58,0x98,0xba,0x00,0x04,0x00,0x00] + vfmadd132pd zmm23, zmm15, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmadd132pd zmm23, zmm15, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0x85,0x58,0x98,0x7a,0x80] + vfmadd132pd zmm23, zmm15, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmadd132pd zmm23, zmm15, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0x85,0x58,0x98,0xba,0xf8,0xfb,0xff,0xff] + vfmadd132pd zmm23, zmm15, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmadd132ps zmm19, zmm25, zmm17 +// CHECK: encoding: [0x62,0xa2,0x35,0x40,0x98,0xd9] + vfmadd132ps zmm19, zmm25, zmm17 + +// CHECK: vfmadd132ps zmm19 {k6}, zmm25, zmm17 +// CHECK: encoding: [0x62,0xa2,0x35,0x46,0x98,0xd9] + vfmadd132ps zmm19 {k6}, zmm25, zmm17 + +// CHECK: vfmadd132ps zmm19 {k6} {z}, zmm25, zmm17 +// CHECK: encoding: [0x62,0xa2,0x35,0xc6,0x98,0xd9] + vfmadd132ps zmm19 {k6} {z}, zmm25, zmm17 + +// CHECK: vfmadd132ps zmm19, zmm25, zmm17, {rn-sae} +// CHECK: encoding: [0x62,0xa2,0x35,0x10,0x98,0xd9] + vfmadd132ps zmm19, zmm25, zmm17, {rn-sae} + +// CHECK: vfmadd132ps zmm19, zmm25, zmm17, {ru-sae} +// CHECK: encoding: [0x62,0xa2,0x35,0x50,0x98,0xd9] + vfmadd132ps zmm19, zmm25, zmm17, {ru-sae} + +// CHECK: vfmadd132ps zmm19, zmm25, zmm17, {rd-sae} +// CHECK: encoding: [0x62,0xa2,0x35,0x30,0x98,0xd9] + vfmadd132ps zmm19, zmm25, zmm17, {rd-sae} + +// CHECK: vfmadd132ps zmm19, zmm25, zmm17, {rz-sae} +// CHECK: encoding: [0x62,0xa2,0x35,0x70,0x98,0xd9] + vfmadd132ps zmm19, zmm25, zmm17, {rz-sae} + +// CHECK: vfmadd132ps zmm19, zmm25, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x35,0x40,0x98,0x19] + vfmadd132ps zmm19, zmm25, zmmword ptr [rcx] + +// CHECK: vfmadd132ps zmm19, zmm25, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x35,0x40,0x98,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfmadd132ps zmm19, zmm25, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd132ps zmm19, zmm25, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x50,0x98,0x19] + vfmadd132ps zmm19, zmm25, dword ptr [rcx]{1to16} + +// CHECK: vfmadd132ps zmm19, zmm25, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x35,0x40,0x98,0x5a,0x7f] + vfmadd132ps zmm19, zmm25, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd132ps zmm19, zmm25, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x35,0x40,0x98,0x9a,0x00,0x20,0x00,0x00] + vfmadd132ps zmm19, zmm25, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd132ps zmm19, zmm25, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x35,0x40,0x98,0x5a,0x80] + vfmadd132ps zmm19, zmm25, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd132ps zmm19, zmm25, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x35,0x40,0x98,0x9a,0xc0,0xdf,0xff,0xff] + vfmadd132ps zmm19, zmm25, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd132ps zmm19, zmm25, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x50,0x98,0x5a,0x7f] + vfmadd132ps zmm19, zmm25, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmadd132ps zmm19, zmm25, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x50,0x98,0x9a,0x00,0x02,0x00,0x00] + vfmadd132ps zmm19, zmm25, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmadd132ps zmm19, zmm25, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x50,0x98,0x5a,0x80] + vfmadd132ps zmm19, zmm25, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmadd132ps zmm19, zmm25, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x35,0x50,0x98,0x9a,0xfc,0xfd,0xff,0xff] + vfmadd132ps zmm19, zmm25, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmadd132sd xmm18, xmm22, xmm11 +// CHECK: encoding: [0x62,0xc2,0xcd,0x00,0x99,0xd3] + vfmadd132sd xmm18, xmm22, xmm11 + +// CHECK: vfmadd132sd xmm18 {k6}, xmm22, xmm11 +// CHECK: encoding: [0x62,0xc2,0xcd,0x06,0x99,0xd3] + vfmadd132sd xmm18 {k6}, xmm22, xmm11 + +// CHECK: vfmadd132sd xmm18 {k6} {z}, xmm22, xmm11 +// CHECK: encoding: [0x62,0xc2,0xcd,0x86,0x99,0xd3] + vfmadd132sd xmm18 {k6} {z}, xmm22, xmm11 + +// CHECK: vfmadd132sd xmm18, xmm22, xmm11, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0xcd,0x10,0x99,0xd3] + vfmadd132sd xmm18, xmm22, xmm11, {rn-sae} + +// CHECK: vfmadd132sd xmm18, xmm22, xmm11, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0xcd,0x50,0x99,0xd3] + vfmadd132sd xmm18, xmm22, xmm11, {ru-sae} + +// CHECK: vfmadd132sd xmm18, xmm22, xmm11, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0xcd,0x30,0x99,0xd3] + vfmadd132sd xmm18, xmm22, xmm11, {rd-sae} + +// CHECK: vfmadd132sd xmm18, xmm22, xmm11, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0xcd,0x70,0x99,0xd3] + vfmadd132sd xmm18, xmm22, xmm11, {rz-sae} + +// CHECK: vfmadd132sd xmm18, xmm22, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x99,0x11] + vfmadd132sd xmm18, xmm22, qword ptr [rcx] + +// CHECK: vfmadd132sd xmm18, xmm22, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xcd,0x00,0x99,0x94,0xf0,0x34,0x12,0x00,0x00] + vfmadd132sd xmm18, xmm22, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd132sd xmm18, xmm22, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x99,0x52,0x7f] + vfmadd132sd xmm18, xmm22, qword ptr [rdx + 1016] + +// CHECK: vfmadd132sd xmm18, xmm22, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x99,0x92,0x00,0x04,0x00,0x00] + vfmadd132sd xmm18, xmm22, qword ptr [rdx + 1024] + +// CHECK: vfmadd132sd xmm18, xmm22, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x99,0x52,0x80] + vfmadd132sd xmm18, xmm22, qword ptr [rdx - 1024] + +// CHECK: vfmadd132sd xmm18, xmm22, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe2,0xcd,0x00,0x99,0x92,0xf8,0xfb,0xff,0xff] + vfmadd132sd xmm18, xmm22, qword ptr [rdx - 1032] + +// CHECK: vfmadd132ss xmm26, xmm20, xmm7 +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0x99,0xd7] + vfmadd132ss xmm26, xmm20, xmm7 + +// CHECK: vfmadd132ss xmm26 {k7}, xmm20, xmm7 +// CHECK: encoding: [0x62,0x62,0x5d,0x07,0x99,0xd7] + vfmadd132ss xmm26 {k7}, xmm20, xmm7 + +// CHECK: vfmadd132ss xmm26 {k7} {z}, xmm20, xmm7 +// CHECK: encoding: [0x62,0x62,0x5d,0x87,0x99,0xd7] + vfmadd132ss xmm26 {k7} {z}, xmm20, xmm7 + +// CHECK: vfmadd132ss xmm26, xmm20, xmm7, {rn-sae} +// CHECK: encoding: [0x62,0x62,0x5d,0x10,0x99,0xd7] + vfmadd132ss xmm26, xmm20, xmm7, {rn-sae} + +// CHECK: vfmadd132ss xmm26, xmm20, xmm7, {ru-sae} +// CHECK: encoding: [0x62,0x62,0x5d,0x50,0x99,0xd7] + vfmadd132ss xmm26, xmm20, xmm7, {ru-sae} + +// CHECK: vfmadd132ss xmm26, xmm20, xmm7, {rd-sae} +// CHECK: encoding: [0x62,0x62,0x5d,0x30,0x99,0xd7] + vfmadd132ss xmm26, xmm20, xmm7, {rd-sae} + +// CHECK: vfmadd132ss xmm26, xmm20, xmm7, {rz-sae} +// CHECK: encoding: [0x62,0x62,0x5d,0x70,0x99,0xd7] + vfmadd132ss xmm26, xmm20, xmm7, {rz-sae} + +// CHECK: vfmadd132ss xmm26, xmm20, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0x99,0x11] + vfmadd132ss xmm26, xmm20, dword ptr [rcx] + +// CHECK: vfmadd132ss xmm26, xmm20, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x5d,0x00,0x99,0x94,0xf0,0x34,0x12,0x00,0x00] + vfmadd132ss xmm26, xmm20, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd132ss xmm26, xmm20, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0x99,0x52,0x7f] + vfmadd132ss xmm26, xmm20, dword ptr [rdx + 508] + +// CHECK: vfmadd132ss xmm26, xmm20, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0x99,0x92,0x00,0x02,0x00,0x00] + vfmadd132ss xmm26, xmm20, dword ptr [rdx + 512] + +// CHECK: vfmadd132ss xmm26, xmm20, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0x99,0x52,0x80] + vfmadd132ss xmm26, xmm20, dword ptr [rdx - 512] + +// CHECK: vfmadd132ss xmm26, xmm20, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0x99,0x92,0xfc,0xfd,0xff,0xff] + vfmadd132ss xmm26, xmm20, dword ptr [rdx - 516] + +// CHECK: vfmadd213pd zmm6, zmm17, zmm1 +// CHECK: encoding: [0x62,0xf2,0xf5,0x40,0xa8,0xf1] + vfmadd213pd zmm6, zmm17, zmm1 + +// CHECK: vfmadd213pd zmm6 {k6}, zmm17, zmm1 +// CHECK: encoding: [0x62,0xf2,0xf5,0x46,0xa8,0xf1] + vfmadd213pd zmm6 {k6}, zmm17, zmm1 + +// CHECK: vfmadd213pd zmm6 {k6} {z}, zmm17, zmm1 +// CHECK: encoding: [0x62,0xf2,0xf5,0xc6,0xa8,0xf1] + vfmadd213pd zmm6 {k6} {z}, zmm17, zmm1 + +// CHECK: vfmadd213pd zmm6, zmm17, zmm1, {rn-sae} +// CHECK: encoding: [0x62,0xf2,0xf5,0x10,0xa8,0xf1] + vfmadd213pd zmm6, zmm17, zmm1, {rn-sae} + +// CHECK: vfmadd213pd zmm6, zmm17, zmm1, {ru-sae} +// CHECK: encoding: [0x62,0xf2,0xf5,0x50,0xa8,0xf1] + vfmadd213pd zmm6, zmm17, zmm1, {ru-sae} + +// CHECK: vfmadd213pd zmm6, zmm17, zmm1, {rd-sae} +// CHECK: encoding: [0x62,0xf2,0xf5,0x30,0xa8,0xf1] + vfmadd213pd zmm6, zmm17, zmm1, {rd-sae} + +// CHECK: vfmadd213pd zmm6, zmm17, zmm1, {rz-sae} +// CHECK: encoding: [0x62,0xf2,0xf5,0x70,0xa8,0xf1] + vfmadd213pd zmm6, zmm17, zmm1, {rz-sae} + +// CHECK: vfmadd213pd zmm6, zmm17, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xf5,0x40,0xa8,0x31] + vfmadd213pd zmm6, zmm17, zmmword ptr [rcx] + +// CHECK: vfmadd213pd zmm6, zmm17, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xf5,0x40,0xa8,0xb4,0xf0,0x34,0x12,0x00,0x00] + vfmadd213pd zmm6, zmm17, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd213pd zmm6, zmm17, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xf5,0x50,0xa8,0x31] + vfmadd213pd zmm6, zmm17, qword ptr [rcx]{1to8} + +// CHECK: vfmadd213pd zmm6, zmm17, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xf5,0x40,0xa8,0x72,0x7f] + vfmadd213pd zmm6, zmm17, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd213pd zmm6, zmm17, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xf5,0x40,0xa8,0xb2,0x00,0x20,0x00,0x00] + vfmadd213pd zmm6, zmm17, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd213pd zmm6, zmm17, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xf5,0x40,0xa8,0x72,0x80] + vfmadd213pd zmm6, zmm17, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd213pd zmm6, zmm17, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xf5,0x40,0xa8,0xb2,0xc0,0xdf,0xff,0xff] + vfmadd213pd zmm6, zmm17, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd213pd zmm6, zmm17, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xf5,0x50,0xa8,0x72,0x7f] + vfmadd213pd zmm6, zmm17, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmadd213pd zmm6, zmm17, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xf5,0x50,0xa8,0xb2,0x00,0x04,0x00,0x00] + vfmadd213pd zmm6, zmm17, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmadd213pd zmm6, zmm17, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xf5,0x50,0xa8,0x72,0x80] + vfmadd213pd zmm6, zmm17, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmadd213pd zmm6, zmm17, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xf5,0x50,0xa8,0xb2,0xf8,0xfb,0xff,0xff] + vfmadd213pd zmm6, zmm17, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmadd213ps zmm5, zmm24, zmm24 +// CHECK: encoding: [0x62,0x92,0x3d,0x40,0xa8,0xe8] + vfmadd213ps zmm5, zmm24, zmm24 + +// CHECK: vfmadd213ps zmm5 {k6}, zmm24, zmm24 +// CHECK: encoding: [0x62,0x92,0x3d,0x46,0xa8,0xe8] + vfmadd213ps zmm5 {k6}, zmm24, zmm24 + +// CHECK: vfmadd213ps zmm5 {k6} {z}, zmm24, zmm24 +// CHECK: encoding: [0x62,0x92,0x3d,0xc6,0xa8,0xe8] + vfmadd213ps zmm5 {k6} {z}, zmm24, zmm24 + +// CHECK: vfmadd213ps zmm5, zmm24, zmm24, {rn-sae} +// CHECK: encoding: [0x62,0x92,0x3d,0x10,0xa8,0xe8] + vfmadd213ps zmm5, zmm24, zmm24, {rn-sae} + +// CHECK: vfmadd213ps zmm5, zmm24, zmm24, {ru-sae} +// CHECK: encoding: [0x62,0x92,0x3d,0x50,0xa8,0xe8] + vfmadd213ps zmm5, zmm24, zmm24, {ru-sae} + +// CHECK: vfmadd213ps zmm5, zmm24, zmm24, {rd-sae} +// CHECK: encoding: [0x62,0x92,0x3d,0x30,0xa8,0xe8] + vfmadd213ps zmm5, zmm24, zmm24, {rd-sae} + +// CHECK: vfmadd213ps zmm5, zmm24, zmm24, {rz-sae} +// CHECK: encoding: [0x62,0x92,0x3d,0x70,0xa8,0xe8] + vfmadd213ps zmm5, zmm24, zmm24, {rz-sae} + +// CHECK: vfmadd213ps zmm5, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0xa8,0x29] + vfmadd213ps zmm5, zmm24, zmmword ptr [rcx] + +// CHECK: vfmadd213ps zmm5, zmm24, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x3d,0x40,0xa8,0xac,0xf0,0x34,0x12,0x00,0x00] + vfmadd213ps zmm5, zmm24, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd213ps zmm5, zmm24, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0xa8,0x29] + vfmadd213ps zmm5, zmm24, dword ptr [rcx]{1to16} + +// CHECK: vfmadd213ps zmm5, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0xa8,0x6a,0x7f] + vfmadd213ps zmm5, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd213ps zmm5, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0xa8,0xaa,0x00,0x20,0x00,0x00] + vfmadd213ps zmm5, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd213ps zmm5, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0xa8,0x6a,0x80] + vfmadd213ps zmm5, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd213ps zmm5, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0xa8,0xaa,0xc0,0xdf,0xff,0xff] + vfmadd213ps zmm5, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd213ps zmm5, zmm24, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0xa8,0x6a,0x7f] + vfmadd213ps zmm5, zmm24, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmadd213ps zmm5, zmm24, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0xa8,0xaa,0x00,0x02,0x00,0x00] + vfmadd213ps zmm5, zmm24, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmadd213ps zmm5, zmm24, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0xa8,0x6a,0x80] + vfmadd213ps zmm5, zmm24, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmadd213ps zmm5, zmm24, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0xa8,0xaa,0xfc,0xfd,0xff,0xff] + vfmadd213ps zmm5, zmm24, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmadd213sd xmm30, xmm14, xmm28 +// CHECK: encoding: [0x62,0x02,0x8d,0x08,0xa9,0xf4] + vfmadd213sd xmm30, xmm14, xmm28 + +// CHECK: vfmadd213sd xmm30 {k5}, xmm14, xmm28 +// CHECK: encoding: [0x62,0x02,0x8d,0x0d,0xa9,0xf4] + vfmadd213sd xmm30 {k5}, xmm14, xmm28 + +// CHECK: vfmadd213sd xmm30 {k5} {z}, xmm14, xmm28 +// CHECK: encoding: [0x62,0x02,0x8d,0x8d,0xa9,0xf4] + vfmadd213sd xmm30 {k5} {z}, xmm14, xmm28 + +// CHECK: vfmadd213sd xmm30, xmm14, xmm28, {rn-sae} +// CHECK: encoding: [0x62,0x02,0x8d,0x18,0xa9,0xf4] + vfmadd213sd xmm30, xmm14, xmm28, {rn-sae} + +// CHECK: vfmadd213sd xmm30, xmm14, xmm28, {ru-sae} +// CHECK: encoding: [0x62,0x02,0x8d,0x58,0xa9,0xf4] + vfmadd213sd xmm30, xmm14, xmm28, {ru-sae} + +// CHECK: vfmadd213sd xmm30, xmm14, xmm28, {rd-sae} +// CHECK: encoding: [0x62,0x02,0x8d,0x38,0xa9,0xf4] + vfmadd213sd xmm30, xmm14, xmm28, {rd-sae} + +// CHECK: vfmadd213sd xmm30, xmm14, xmm28, {rz-sae} +// CHECK: encoding: [0x62,0x02,0x8d,0x78,0xa9,0xf4] + vfmadd213sd xmm30, xmm14, xmm28, {rz-sae} + +// CHECK: vfmadd213sd xmm30, xmm14, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xa9,0x31] + vfmadd213sd xmm30, xmm14, qword ptr [rcx] + +// CHECK: vfmadd213sd xmm30, xmm14, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x8d,0x08,0xa9,0xb4,0xf0,0x34,0x12,0x00,0x00] + vfmadd213sd xmm30, xmm14, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd213sd xmm30, xmm14, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xa9,0x72,0x7f] + vfmadd213sd xmm30, xmm14, qword ptr [rdx + 1016] + +// CHECK: vfmadd213sd xmm30, xmm14, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xa9,0xb2,0x00,0x04,0x00,0x00] + vfmadd213sd xmm30, xmm14, qword ptr [rdx + 1024] + +// CHECK: vfmadd213sd xmm30, xmm14, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xa9,0x72,0x80] + vfmadd213sd xmm30, xmm14, qword ptr [rdx - 1024] + +// CHECK: vfmadd213sd xmm30, xmm14, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xa9,0xb2,0xf8,0xfb,0xff,0xff] + vfmadd213sd xmm30, xmm14, qword ptr [rdx - 1032] + +// CHECK: vfmadd213ss xmm18, xmm25, xmm25 +// CHECK: encoding: [0x62,0x82,0x35,0x00,0xa9,0xd1] + vfmadd213ss xmm18, xmm25, xmm25 + +// CHECK: vfmadd213ss xmm18 {k1}, xmm25, xmm25 +// CHECK: encoding: [0x62,0x82,0x35,0x01,0xa9,0xd1] + vfmadd213ss xmm18 {k1}, xmm25, xmm25 + +// CHECK: vfmadd213ss xmm18 {k1} {z}, xmm25, xmm25 +// CHECK: encoding: [0x62,0x82,0x35,0x81,0xa9,0xd1] + vfmadd213ss xmm18 {k1} {z}, xmm25, xmm25 + +// CHECK: vfmadd213ss xmm18, xmm25, xmm25, {rn-sae} +// CHECK: encoding: [0x62,0x82,0x35,0x10,0xa9,0xd1] + vfmadd213ss xmm18, xmm25, xmm25, {rn-sae} + +// CHECK: vfmadd213ss xmm18, xmm25, xmm25, {ru-sae} +// CHECK: encoding: [0x62,0x82,0x35,0x50,0xa9,0xd1] + vfmadd213ss xmm18, xmm25, xmm25, {ru-sae} + +// CHECK: vfmadd213ss xmm18, xmm25, xmm25, {rd-sae} +// CHECK: encoding: [0x62,0x82,0x35,0x30,0xa9,0xd1] + vfmadd213ss xmm18, xmm25, xmm25, {rd-sae} + +// CHECK: vfmadd213ss xmm18, xmm25, xmm25, {rz-sae} +// CHECK: encoding: [0x62,0x82,0x35,0x70,0xa9,0xd1] + vfmadd213ss xmm18, xmm25, xmm25, {rz-sae} + +// CHECK: vfmadd213ss xmm18, xmm25, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x35,0x00,0xa9,0x11] + vfmadd213ss xmm18, xmm25, dword ptr [rcx] + +// CHECK: vfmadd213ss xmm18, xmm25, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x35,0x00,0xa9,0x94,0xf0,0x34,0x12,0x00,0x00] + vfmadd213ss xmm18, xmm25, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd213ss xmm18, xmm25, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x35,0x00,0xa9,0x52,0x7f] + vfmadd213ss xmm18, xmm25, dword ptr [rdx + 508] + +// CHECK: vfmadd213ss xmm18, xmm25, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x35,0x00,0xa9,0x92,0x00,0x02,0x00,0x00] + vfmadd213ss xmm18, xmm25, dword ptr [rdx + 512] + +// CHECK: vfmadd213ss xmm18, xmm25, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x35,0x00,0xa9,0x52,0x80] + vfmadd213ss xmm18, xmm25, dword ptr [rdx - 512] + +// CHECK: vfmadd213ss xmm18, xmm25, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x35,0x00,0xa9,0x92,0xfc,0xfd,0xff,0xff] + vfmadd213ss xmm18, xmm25, dword ptr [rdx - 516] + +// CHECK: vfmadd231pd zmm5, zmm13, zmm19 +// CHECK: encoding: [0x62,0xb2,0x95,0x48,0xb8,0xeb] + vfmadd231pd zmm5, zmm13, zmm19 + +// CHECK: vfmadd231pd zmm5 {k1}, zmm13, zmm19 +// CHECK: encoding: [0x62,0xb2,0x95,0x49,0xb8,0xeb] + vfmadd231pd zmm5 {k1}, zmm13, zmm19 + +// CHECK: vfmadd231pd zmm5 {k1} {z}, zmm13, zmm19 +// CHECK: encoding: [0x62,0xb2,0x95,0xc9,0xb8,0xeb] + vfmadd231pd zmm5 {k1} {z}, zmm13, zmm19 + +// CHECK: vfmadd231pd zmm5, zmm13, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0x95,0x18,0xb8,0xeb] + vfmadd231pd zmm5, zmm13, zmm19, {rn-sae} + +// CHECK: vfmadd231pd zmm5, zmm13, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0x95,0x58,0xb8,0xeb] + vfmadd231pd zmm5, zmm13, zmm19, {ru-sae} + +// CHECK: vfmadd231pd zmm5, zmm13, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0x95,0x38,0xb8,0xeb] + vfmadd231pd zmm5, zmm13, zmm19, {rd-sae} + +// CHECK: vfmadd231pd zmm5, zmm13, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0x95,0x78,0xb8,0xeb] + vfmadd231pd zmm5, zmm13, zmm19, {rz-sae} + +// CHECK: vfmadd231pd zmm5, zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x95,0x48,0xb8,0x29] + vfmadd231pd zmm5, zmm13, zmmword ptr [rcx] + +// CHECK: vfmadd231pd zmm5, zmm13, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x95,0x48,0xb8,0xac,0xf0,0x34,0x12,0x00,0x00] + vfmadd231pd zmm5, zmm13, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd231pd zmm5, zmm13, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x58,0xb8,0x29] + vfmadd231pd zmm5, zmm13, qword ptr [rcx]{1to8} + +// CHECK: vfmadd231pd zmm5, zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x95,0x48,0xb8,0x6a,0x7f] + vfmadd231pd zmm5, zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd231pd zmm5, zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x95,0x48,0xb8,0xaa,0x00,0x20,0x00,0x00] + vfmadd231pd zmm5, zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd231pd zmm5, zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x95,0x48,0xb8,0x6a,0x80] + vfmadd231pd zmm5, zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd231pd zmm5, zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x95,0x48,0xb8,0xaa,0xc0,0xdf,0xff,0xff] + vfmadd231pd zmm5, zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd231pd zmm5, zmm13, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x58,0xb8,0x6a,0x7f] + vfmadd231pd zmm5, zmm13, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmadd231pd zmm5, zmm13, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x58,0xb8,0xaa,0x00,0x04,0x00,0x00] + vfmadd231pd zmm5, zmm13, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmadd231pd zmm5, zmm13, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x58,0xb8,0x6a,0x80] + vfmadd231pd zmm5, zmm13, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmadd231pd zmm5, zmm13, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x58,0xb8,0xaa,0xf8,0xfb,0xff,0xff] + vfmadd231pd zmm5, zmm13, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmadd231ps zmm2, zmm1, zmm18 +// CHECK: encoding: [0x62,0xb2,0x75,0x48,0xb8,0xd2] + vfmadd231ps zmm2, zmm1, zmm18 + +// CHECK: vfmadd231ps zmm2 {k2}, zmm1, zmm18 +// CHECK: encoding: [0x62,0xb2,0x75,0x4a,0xb8,0xd2] + vfmadd231ps zmm2 {k2}, zmm1, zmm18 + +// CHECK: vfmadd231ps zmm2 {k2} {z}, zmm1, zmm18 +// CHECK: encoding: [0x62,0xb2,0x75,0xca,0xb8,0xd2] + vfmadd231ps zmm2 {k2} {z}, zmm1, zmm18 + +// CHECK: vfmadd231ps zmm2, zmm1, zmm18, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0x75,0x18,0xb8,0xd2] + vfmadd231ps zmm2, zmm1, zmm18, {rn-sae} + +// CHECK: vfmadd231ps zmm2, zmm1, zmm18, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0x75,0x58,0xb8,0xd2] + vfmadd231ps zmm2, zmm1, zmm18, {ru-sae} + +// CHECK: vfmadd231ps zmm2, zmm1, zmm18, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0x75,0x38,0xb8,0xd2] + vfmadd231ps zmm2, zmm1, zmm18, {rd-sae} + +// CHECK: vfmadd231ps zmm2, zmm1, zmm18, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0x75,0x78,0xb8,0xd2] + vfmadd231ps zmm2, zmm1, zmm18, {rz-sae} + +// CHECK: vfmadd231ps zmm2, zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x75,0x48,0xb8,0x11] + vfmadd231ps zmm2, zmm1, zmmword ptr [rcx] + +// CHECK: vfmadd231ps zmm2, zmm1, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x75,0x48,0xb8,0x94,0xf0,0x34,0x12,0x00,0x00] + vfmadd231ps zmm2, zmm1, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd231ps zmm2, zmm1, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x75,0x58,0xb8,0x11] + vfmadd231ps zmm2, zmm1, dword ptr [rcx]{1to16} + +// CHECK: vfmadd231ps zmm2, zmm1, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x75,0x48,0xb8,0x52,0x7f] + vfmadd231ps zmm2, zmm1, zmmword ptr [rdx + 8128] + +// CHECK: vfmadd231ps zmm2, zmm1, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x75,0x48,0xb8,0x92,0x00,0x20,0x00,0x00] + vfmadd231ps zmm2, zmm1, zmmword ptr [rdx + 8192] + +// CHECK: vfmadd231ps zmm2, zmm1, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x75,0x48,0xb8,0x52,0x80] + vfmadd231ps zmm2, zmm1, zmmword ptr [rdx - 8192] + +// CHECK: vfmadd231ps zmm2, zmm1, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x75,0x48,0xb8,0x92,0xc0,0xdf,0xff,0xff] + vfmadd231ps zmm2, zmm1, zmmword ptr [rdx - 8256] + +// CHECK: vfmadd231ps zmm2, zmm1, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x75,0x58,0xb8,0x52,0x7f] + vfmadd231ps zmm2, zmm1, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmadd231ps zmm2, zmm1, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x75,0x58,0xb8,0x92,0x00,0x02,0x00,0x00] + vfmadd231ps zmm2, zmm1, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmadd231ps zmm2, zmm1, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x75,0x58,0xb8,0x52,0x80] + vfmadd231ps zmm2, zmm1, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmadd231ps zmm2, zmm1, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x75,0x58,0xb8,0x92,0xfc,0xfd,0xff,0xff] + vfmadd231ps zmm2, zmm1, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmadd231sd xmm6, xmm14, xmm14 +// CHECK: encoding: [0xc4,0xc2,0x89,0xb9,0xf6] + vfmadd231sd xmm6, xmm14, xmm14 + +// CHECK: vfmadd231sd xmm6 {k2}, xmm14, xmm14 +// CHECK: encoding: [0x62,0xd2,0x8d,0x0a,0xb9,0xf6] + vfmadd231sd xmm6 {k2}, xmm14, xmm14 + +// CHECK: vfmadd231sd xmm6 {k2} {z}, xmm14, xmm14 +// CHECK: encoding: [0x62,0xd2,0x8d,0x8a,0xb9,0xf6] + vfmadd231sd xmm6 {k2} {z}, xmm14, xmm14 + +// CHECK: vfmadd231sd xmm6, xmm14, xmm14, {rn-sae} +// CHECK: encoding: [0x62,0xd2,0x8d,0x18,0xb9,0xf6] + vfmadd231sd xmm6, xmm14, xmm14, {rn-sae} + +// CHECK: vfmadd231sd xmm6, xmm14, xmm14, {ru-sae} +// CHECK: encoding: [0x62,0xd2,0x8d,0x58,0xb9,0xf6] + vfmadd231sd xmm6, xmm14, xmm14, {ru-sae} + +// CHECK: vfmadd231sd xmm6, xmm14, xmm14, {rd-sae} +// CHECK: encoding: [0x62,0xd2,0x8d,0x38,0xb9,0xf6] + vfmadd231sd xmm6, xmm14, xmm14, {rd-sae} + +// CHECK: vfmadd231sd xmm6, xmm14, xmm14, {rz-sae} +// CHECK: encoding: [0x62,0xd2,0x8d,0x78,0xb9,0xf6] + vfmadd231sd xmm6, xmm14, xmm14, {rz-sae} + +// CHECK: vfmadd231sd xmm6, xmm14, qword ptr [rcx] +// CHECK: encoding: [0xc4,0xe2,0x89,0xb9,0x31] + vfmadd231sd xmm6, xmm14, qword ptr [rcx] + +// CHECK: vfmadd231sd xmm6, xmm14, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa2,0x89,0xb9,0xb4,0xf0,0x34,0x12,0x00,0x00] + vfmadd231sd xmm6, xmm14, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd231sd xmm6, xmm14, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0xe2,0x89,0xb9,0xb2,0xf8,0x03,0x00,0x00] + vfmadd231sd xmm6, xmm14, qword ptr [rdx + 1016] + +// CHECK: vfmadd231sd xmm6, xmm14, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0xe2,0x89,0xb9,0xb2,0x00,0x04,0x00,0x00] + vfmadd231sd xmm6, xmm14, qword ptr [rdx + 1024] + +// CHECK: vfmadd231sd xmm6, xmm14, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0xe2,0x89,0xb9,0xb2,0x00,0xfc,0xff,0xff] + vfmadd231sd xmm6, xmm14, qword ptr [rdx - 1024] + +// CHECK: vfmadd231sd xmm6, xmm14, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0xe2,0x89,0xb9,0xb2,0xf8,0xfb,0xff,0xff] + vfmadd231sd xmm6, xmm14, qword ptr [rdx - 1032] + +// CHECK: vfmadd231ss xmm26, xmm14, xmm19 +// CHECK: encoding: [0x62,0x22,0x0d,0x08,0xb9,0xd3] + vfmadd231ss xmm26, xmm14, xmm19 + +// CHECK: vfmadd231ss xmm26 {k4}, xmm14, xmm19 +// CHECK: encoding: [0x62,0x22,0x0d,0x0c,0xb9,0xd3] + vfmadd231ss xmm26 {k4}, xmm14, xmm19 + +// CHECK: vfmadd231ss xmm26 {k4} {z}, xmm14, xmm19 +// CHECK: encoding: [0x62,0x22,0x0d,0x8c,0xb9,0xd3] + vfmadd231ss xmm26 {k4} {z}, xmm14, xmm19 + +// CHECK: vfmadd231ss xmm26, xmm14, xmm19, {rn-sae} +// CHECK: encoding: [0x62,0x22,0x0d,0x18,0xb9,0xd3] + vfmadd231ss xmm26, xmm14, xmm19, {rn-sae} + +// CHECK: vfmadd231ss xmm26, xmm14, xmm19, {ru-sae} +// CHECK: encoding: [0x62,0x22,0x0d,0x58,0xb9,0xd3] + vfmadd231ss xmm26, xmm14, xmm19, {ru-sae} + +// CHECK: vfmadd231ss xmm26, xmm14, xmm19, {rd-sae} +// CHECK: encoding: [0x62,0x22,0x0d,0x38,0xb9,0xd3] + vfmadd231ss xmm26, xmm14, xmm19, {rd-sae} + +// CHECK: vfmadd231ss xmm26, xmm14, xmm19, {rz-sae} +// CHECK: encoding: [0x62,0x22,0x0d,0x78,0xb9,0xd3] + vfmadd231ss xmm26, xmm14, xmm19, {rz-sae} + +// CHECK: vfmadd231ss xmm26, xmm14, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x0d,0x08,0xb9,0x11] + vfmadd231ss xmm26, xmm14, dword ptr [rcx] + +// CHECK: vfmadd231ss xmm26, xmm14, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x0d,0x08,0xb9,0x94,0xf0,0x34,0x12,0x00,0x00] + vfmadd231ss xmm26, xmm14, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmadd231ss xmm26, xmm14, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x0d,0x08,0xb9,0x52,0x7f] + vfmadd231ss xmm26, xmm14, dword ptr [rdx + 508] + +// CHECK: vfmadd231ss xmm26, xmm14, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x0d,0x08,0xb9,0x92,0x00,0x02,0x00,0x00] + vfmadd231ss xmm26, xmm14, dword ptr [rdx + 512] + +// CHECK: vfmadd231ss xmm26, xmm14, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x0d,0x08,0xb9,0x52,0x80] + vfmadd231ss xmm26, xmm14, dword ptr [rdx - 512] + +// CHECK: vfmadd231ss xmm26, xmm14, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x0d,0x08,0xb9,0x92,0xfc,0xfd,0xff,0xff] + vfmadd231ss xmm26, xmm14, dword ptr [rdx - 516] + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmm2 +// CHECK: encoding: [0x62,0xe2,0xcd,0x48,0x96,0xe2] + vfmaddsub132pd zmm20, zmm6, zmm2 + +// CHECK: vfmaddsub132pd zmm20 {k6}, zmm6, zmm2 +// CHECK: encoding: [0x62,0xe2,0xcd,0x4e,0x96,0xe2] + vfmaddsub132pd zmm20 {k6}, zmm6, zmm2 + +// CHECK: vfmaddsub132pd zmm20 {k6} {z}, zmm6, zmm2 +// CHECK: encoding: [0x62,0xe2,0xcd,0xce,0x96,0xe2] + vfmaddsub132pd zmm20 {k6} {z}, zmm6, zmm2 + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmm2, {rn-sae} +// CHECK: encoding: [0x62,0xe2,0xcd,0x18,0x96,0xe2] + vfmaddsub132pd zmm20, zmm6, zmm2, {rn-sae} + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmm2, {ru-sae} +// CHECK: encoding: [0x62,0xe2,0xcd,0x58,0x96,0xe2] + vfmaddsub132pd zmm20, zmm6, zmm2, {ru-sae} + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmm2, {rd-sae} +// CHECK: encoding: [0x62,0xe2,0xcd,0x38,0x96,0xe2] + vfmaddsub132pd zmm20, zmm6, zmm2, {rd-sae} + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmm2, {rz-sae} +// CHECK: encoding: [0x62,0xe2,0xcd,0x78,0x96,0xe2] + vfmaddsub132pd zmm20, zmm6, zmm2, {rz-sae} + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xcd,0x48,0x96,0x21] + vfmaddsub132pd zmm20, zmm6, zmmword ptr [rcx] + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xcd,0x48,0x96,0xa4,0xf0,0x34,0x12,0x00,0x00] + vfmaddsub132pd zmm20, zmm6, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmaddsub132pd zmm20, zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x58,0x96,0x21] + vfmaddsub132pd zmm20, zmm6, qword ptr [rcx]{1to8} + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xcd,0x48,0x96,0x62,0x7f] + vfmaddsub132pd zmm20, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xcd,0x48,0x96,0xa2,0x00,0x20,0x00,0x00] + vfmaddsub132pd zmm20, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xcd,0x48,0x96,0x62,0x80] + vfmaddsub132pd zmm20, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub132pd zmm20, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xcd,0x48,0x96,0xa2,0xc0,0xdf,0xff,0xff] + vfmaddsub132pd zmm20, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub132pd zmm20, zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x58,0x96,0x62,0x7f] + vfmaddsub132pd zmm20, zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmaddsub132pd zmm20, zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x58,0x96,0xa2,0x00,0x04,0x00,0x00] + vfmaddsub132pd zmm20, zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmaddsub132pd zmm20, zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x58,0x96,0x62,0x80] + vfmaddsub132pd zmm20, zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmaddsub132pd zmm20, zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x58,0x96,0xa2,0xf8,0xfb,0xff,0xff] + vfmaddsub132pd zmm20, zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmm12 +// CHECK: encoding: [0x62,0x42,0x45,0x48,0x96,0xec] + vfmaddsub132ps zmm29, zmm7, zmm12 + +// CHECK: vfmaddsub132ps zmm29 {k7}, zmm7, zmm12 +// CHECK: encoding: [0x62,0x42,0x45,0x4f,0x96,0xec] + vfmaddsub132ps zmm29 {k7}, zmm7, zmm12 + +// CHECK: vfmaddsub132ps zmm29 {k7} {z}, zmm7, zmm12 +// CHECK: encoding: [0x62,0x42,0x45,0xcf,0x96,0xec] + vfmaddsub132ps zmm29 {k7} {z}, zmm7, zmm12 + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmm12, {rn-sae} +// CHECK: encoding: [0x62,0x42,0x45,0x18,0x96,0xec] + vfmaddsub132ps zmm29, zmm7, zmm12, {rn-sae} + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmm12, {ru-sae} +// CHECK: encoding: [0x62,0x42,0x45,0x58,0x96,0xec] + vfmaddsub132ps zmm29, zmm7, zmm12, {ru-sae} + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmm12, {rd-sae} +// CHECK: encoding: [0x62,0x42,0x45,0x38,0x96,0xec] + vfmaddsub132ps zmm29, zmm7, zmm12, {rd-sae} + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmm12, {rz-sae} +// CHECK: encoding: [0x62,0x42,0x45,0x78,0x96,0xec] + vfmaddsub132ps zmm29, zmm7, zmm12, {rz-sae} + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x45,0x48,0x96,0x29] + vfmaddsub132ps zmm29, zmm7, zmmword ptr [rcx] + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x45,0x48,0x96,0xac,0xf0,0x34,0x12,0x00,0x00] + vfmaddsub132ps zmm29, zmm7, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmaddsub132ps zmm29, zmm7, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x58,0x96,0x29] + vfmaddsub132ps zmm29, zmm7, dword ptr [rcx]{1to16} + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x45,0x48,0x96,0x6a,0x7f] + vfmaddsub132ps zmm29, zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x45,0x48,0x96,0xaa,0x00,0x20,0x00,0x00] + vfmaddsub132ps zmm29, zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x45,0x48,0x96,0x6a,0x80] + vfmaddsub132ps zmm29, zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub132ps zmm29, zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x45,0x48,0x96,0xaa,0xc0,0xdf,0xff,0xff] + vfmaddsub132ps zmm29, zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub132ps zmm29, zmm7, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x58,0x96,0x6a,0x7f] + vfmaddsub132ps zmm29, zmm7, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmaddsub132ps zmm29, zmm7, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x58,0x96,0xaa,0x00,0x02,0x00,0x00] + vfmaddsub132ps zmm29, zmm7, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmaddsub132ps zmm29, zmm7, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x58,0x96,0x6a,0x80] + vfmaddsub132ps zmm29, zmm7, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmaddsub132ps zmm29, zmm7, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x45,0x58,0x96,0xaa,0xfc,0xfd,0xff,0xff] + vfmaddsub132ps zmm29, zmm7, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmm15 +// CHECK: encoding: [0x62,0x42,0xdd,0x40,0xa6,0xdf] + vfmaddsub213pd zmm27, zmm20, zmm15 + +// CHECK: vfmaddsub213pd zmm27 {k3}, zmm20, zmm15 +// CHECK: encoding: [0x62,0x42,0xdd,0x43,0xa6,0xdf] + vfmaddsub213pd zmm27 {k3}, zmm20, zmm15 + +// CHECK: vfmaddsub213pd zmm27 {k3} {z}, zmm20, zmm15 +// CHECK: encoding: [0x62,0x42,0xdd,0xc3,0xa6,0xdf] + vfmaddsub213pd zmm27 {k3} {z}, zmm20, zmm15 + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmm15, {rn-sae} +// CHECK: encoding: [0x62,0x42,0xdd,0x10,0xa6,0xdf] + vfmaddsub213pd zmm27, zmm20, zmm15, {rn-sae} + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmm15, {ru-sae} +// CHECK: encoding: [0x62,0x42,0xdd,0x50,0xa6,0xdf] + vfmaddsub213pd zmm27, zmm20, zmm15, {ru-sae} + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmm15, {rd-sae} +// CHECK: encoding: [0x62,0x42,0xdd,0x30,0xa6,0xdf] + vfmaddsub213pd zmm27, zmm20, zmm15, {rd-sae} + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmm15, {rz-sae} +// CHECK: encoding: [0x62,0x42,0xdd,0x70,0xa6,0xdf] + vfmaddsub213pd zmm27, zmm20, zmm15, {rz-sae} + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xdd,0x40,0xa6,0x19] + vfmaddsub213pd zmm27, zmm20, zmmword ptr [rcx] + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xdd,0x40,0xa6,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfmaddsub213pd zmm27, zmm20, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmaddsub213pd zmm27, zmm20, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x50,0xa6,0x19] + vfmaddsub213pd zmm27, zmm20, qword ptr [rcx]{1to8} + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xdd,0x40,0xa6,0x5a,0x7f] + vfmaddsub213pd zmm27, zmm20, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xdd,0x40,0xa6,0x9a,0x00,0x20,0x00,0x00] + vfmaddsub213pd zmm27, zmm20, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xdd,0x40,0xa6,0x5a,0x80] + vfmaddsub213pd zmm27, zmm20, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub213pd zmm27, zmm20, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xdd,0x40,0xa6,0x9a,0xc0,0xdf,0xff,0xff] + vfmaddsub213pd zmm27, zmm20, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub213pd zmm27, zmm20, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x50,0xa6,0x5a,0x7f] + vfmaddsub213pd zmm27, zmm20, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmaddsub213pd zmm27, zmm20, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x50,0xa6,0x9a,0x00,0x04,0x00,0x00] + vfmaddsub213pd zmm27, zmm20, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmaddsub213pd zmm27, zmm20, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x50,0xa6,0x5a,0x80] + vfmaddsub213pd zmm27, zmm20, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmaddsub213pd zmm27, zmm20, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xdd,0x50,0xa6,0x9a,0xf8,0xfb,0xff,0xff] + vfmaddsub213pd zmm27, zmm20, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmm10 +// CHECK: encoding: [0x62,0xc2,0x15,0x48,0xa6,0xf2] + vfmaddsub213ps zmm22, zmm13, zmm10 + +// CHECK: vfmaddsub213ps zmm22 {k5}, zmm13, zmm10 +// CHECK: encoding: [0x62,0xc2,0x15,0x4d,0xa6,0xf2] + vfmaddsub213ps zmm22 {k5}, zmm13, zmm10 + +// CHECK: vfmaddsub213ps zmm22 {k5} {z}, zmm13, zmm10 +// CHECK: encoding: [0x62,0xc2,0x15,0xcd,0xa6,0xf2] + vfmaddsub213ps zmm22 {k5} {z}, zmm13, zmm10 + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmm10, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0x15,0x18,0xa6,0xf2] + vfmaddsub213ps zmm22, zmm13, zmm10, {rn-sae} + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmm10, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0x15,0x58,0xa6,0xf2] + vfmaddsub213ps zmm22, zmm13, zmm10, {ru-sae} + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmm10, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0x15,0x38,0xa6,0xf2] + vfmaddsub213ps zmm22, zmm13, zmm10, {rd-sae} + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmm10, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0x15,0x78,0xa6,0xf2] + vfmaddsub213ps zmm22, zmm13, zmm10, {rz-sae} + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xa6,0x31] + vfmaddsub213ps zmm22, zmm13, zmmword ptr [rcx] + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x15,0x48,0xa6,0xb4,0xf0,0x34,0x12,0x00,0x00] + vfmaddsub213ps zmm22, zmm13, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmaddsub213ps zmm22, zmm13, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xa6,0x31] + vfmaddsub213ps zmm22, zmm13, dword ptr [rcx]{1to16} + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xa6,0x72,0x7f] + vfmaddsub213ps zmm22, zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xa6,0xb2,0x00,0x20,0x00,0x00] + vfmaddsub213ps zmm22, zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xa6,0x72,0x80] + vfmaddsub213ps zmm22, zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub213ps zmm22, zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x15,0x48,0xa6,0xb2,0xc0,0xdf,0xff,0xff] + vfmaddsub213ps zmm22, zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub213ps zmm22, zmm13, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xa6,0x72,0x7f] + vfmaddsub213ps zmm22, zmm13, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmaddsub213ps zmm22, zmm13, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xa6,0xb2,0x00,0x02,0x00,0x00] + vfmaddsub213ps zmm22, zmm13, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmaddsub213ps zmm22, zmm13, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xa6,0x72,0x80] + vfmaddsub213ps zmm22, zmm13, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmaddsub213ps zmm22, zmm13, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x15,0x58,0xa6,0xb2,0xfc,0xfd,0xff,0xff] + vfmaddsub213ps zmm22, zmm13, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmm28 +// CHECK: encoding: [0x62,0x92,0xb5,0x40,0xb6,0xe4] + vfmaddsub231pd zmm4, zmm25, zmm28 + +// CHECK: vfmaddsub231pd zmm4 {k6}, zmm25, zmm28 +// CHECK: encoding: [0x62,0x92,0xb5,0x46,0xb6,0xe4] + vfmaddsub231pd zmm4 {k6}, zmm25, zmm28 + +// CHECK: vfmaddsub231pd zmm4 {k6} {z}, zmm25, zmm28 +// CHECK: encoding: [0x62,0x92,0xb5,0xc6,0xb6,0xe4] + vfmaddsub231pd zmm4 {k6} {z}, zmm25, zmm28 + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmm28, {rn-sae} +// CHECK: encoding: [0x62,0x92,0xb5,0x10,0xb6,0xe4] + vfmaddsub231pd zmm4, zmm25, zmm28, {rn-sae} + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmm28, {ru-sae} +// CHECK: encoding: [0x62,0x92,0xb5,0x50,0xb6,0xe4] + vfmaddsub231pd zmm4, zmm25, zmm28, {ru-sae} + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmm28, {rd-sae} +// CHECK: encoding: [0x62,0x92,0xb5,0x30,0xb6,0xe4] + vfmaddsub231pd zmm4, zmm25, zmm28, {rd-sae} + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmm28, {rz-sae} +// CHECK: encoding: [0x62,0x92,0xb5,0x70,0xb6,0xe4] + vfmaddsub231pd zmm4, zmm25, zmm28, {rz-sae} + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xb5,0x40,0xb6,0x21] + vfmaddsub231pd zmm4, zmm25, zmmword ptr [rcx] + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xb5,0x40,0xb6,0xa4,0xf0,0x34,0x12,0x00,0x00] + vfmaddsub231pd zmm4, zmm25, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmaddsub231pd zmm4, zmm25, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x50,0xb6,0x21] + vfmaddsub231pd zmm4, zmm25, qword ptr [rcx]{1to8} + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xb5,0x40,0xb6,0x62,0x7f] + vfmaddsub231pd zmm4, zmm25, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xb5,0x40,0xb6,0xa2,0x00,0x20,0x00,0x00] + vfmaddsub231pd zmm4, zmm25, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xb5,0x40,0xb6,0x62,0x80] + vfmaddsub231pd zmm4, zmm25, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub231pd zmm4, zmm25, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xb5,0x40,0xb6,0xa2,0xc0,0xdf,0xff,0xff] + vfmaddsub231pd zmm4, zmm25, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub231pd zmm4, zmm25, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x50,0xb6,0x62,0x7f] + vfmaddsub231pd zmm4, zmm25, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmaddsub231pd zmm4, zmm25, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x50,0xb6,0xa2,0x00,0x04,0x00,0x00] + vfmaddsub231pd zmm4, zmm25, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmaddsub231pd zmm4, zmm25, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x50,0xb6,0x62,0x80] + vfmaddsub231pd zmm4, zmm25, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmaddsub231pd zmm4, zmm25, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x50,0xb6,0xa2,0xf8,0xfb,0xff,0xff] + vfmaddsub231pd zmm4, zmm25, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmm10 +// CHECK: encoding: [0x62,0xd2,0x4d,0x40,0xb6,0xfa] + vfmaddsub231ps zmm7, zmm22, zmm10 + +// CHECK: vfmaddsub231ps zmm7 {k6}, zmm22, zmm10 +// CHECK: encoding: [0x62,0xd2,0x4d,0x46,0xb6,0xfa] + vfmaddsub231ps zmm7 {k6}, zmm22, zmm10 + +// CHECK: vfmaddsub231ps zmm7 {k6} {z}, zmm22, zmm10 +// CHECK: encoding: [0x62,0xd2,0x4d,0xc6,0xb6,0xfa] + vfmaddsub231ps zmm7 {k6} {z}, zmm22, zmm10 + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmm10, {rn-sae} +// CHECK: encoding: [0x62,0xd2,0x4d,0x10,0xb6,0xfa] + vfmaddsub231ps zmm7, zmm22, zmm10, {rn-sae} + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmm10, {ru-sae} +// CHECK: encoding: [0x62,0xd2,0x4d,0x50,0xb6,0xfa] + vfmaddsub231ps zmm7, zmm22, zmm10, {ru-sae} + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmm10, {rd-sae} +// CHECK: encoding: [0x62,0xd2,0x4d,0x30,0xb6,0xfa] + vfmaddsub231ps zmm7, zmm22, zmm10, {rd-sae} + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmm10, {rz-sae} +// CHECK: encoding: [0x62,0xd2,0x4d,0x70,0xb6,0xfa] + vfmaddsub231ps zmm7, zmm22, zmm10, {rz-sae} + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0xb6,0x39] + vfmaddsub231ps zmm7, zmm22, zmmword ptr [rcx] + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x4d,0x40,0xb6,0xbc,0xf0,0x34,0x12,0x00,0x00] + vfmaddsub231ps zmm7, zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmaddsub231ps zmm7, zmm22, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0xb6,0x39] + vfmaddsub231ps zmm7, zmm22, dword ptr [rcx]{1to16} + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0xb6,0x7a,0x7f] + vfmaddsub231ps zmm7, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0xb6,0xba,0x00,0x20,0x00,0x00] + vfmaddsub231ps zmm7, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0xb6,0x7a,0x80] + vfmaddsub231ps zmm7, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vfmaddsub231ps zmm7, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0xb6,0xba,0xc0,0xdf,0xff,0xff] + vfmaddsub231ps zmm7, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vfmaddsub231ps zmm7, zmm22, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0xb6,0x7a,0x7f] + vfmaddsub231ps zmm7, zmm22, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmaddsub231ps zmm7, zmm22, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0xb6,0xba,0x00,0x02,0x00,0x00] + vfmaddsub231ps zmm7, zmm22, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmaddsub231ps zmm7, zmm22, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0xb6,0x7a,0x80] + vfmaddsub231ps zmm7, zmm22, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmaddsub231ps zmm7, zmm22, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0xb6,0xba,0xfc,0xfd,0xff,0xff] + vfmaddsub231ps zmm7, zmm22, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsub132pd zmm25, zmm29, zmm19 +// CHECK: encoding: [0x62,0x22,0x95,0x40,0x9a,0xcb] + vfmsub132pd zmm25, zmm29, zmm19 + +// CHECK: vfmsub132pd zmm25 {k4}, zmm29, zmm19 +// CHECK: encoding: [0x62,0x22,0x95,0x44,0x9a,0xcb] + vfmsub132pd zmm25 {k4}, zmm29, zmm19 + +// CHECK: vfmsub132pd zmm25 {k4} {z}, zmm29, zmm19 +// CHECK: encoding: [0x62,0x22,0x95,0xc4,0x9a,0xcb] + vfmsub132pd zmm25 {k4} {z}, zmm29, zmm19 + +// CHECK: vfmsub132pd zmm25, zmm29, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0x22,0x95,0x10,0x9a,0xcb] + vfmsub132pd zmm25, zmm29, zmm19, {rn-sae} + +// CHECK: vfmsub132pd zmm25, zmm29, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0x22,0x95,0x50,0x9a,0xcb] + vfmsub132pd zmm25, zmm29, zmm19, {ru-sae} + +// CHECK: vfmsub132pd zmm25, zmm29, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0x22,0x95,0x30,0x9a,0xcb] + vfmsub132pd zmm25, zmm29, zmm19, {rd-sae} + +// CHECK: vfmsub132pd zmm25, zmm29, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0x22,0x95,0x70,0x9a,0xcb] + vfmsub132pd zmm25, zmm29, zmm19, {rz-sae} + +// CHECK: vfmsub132pd zmm25, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x9a,0x09] + vfmsub132pd zmm25, zmm29, zmmword ptr [rcx] + +// CHECK: vfmsub132pd zmm25, zmm29, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x95,0x40,0x9a,0x8c,0xf0,0x34,0x12,0x00,0x00] + vfmsub132pd zmm25, zmm29, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub132pd zmm25, zmm29, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x9a,0x09] + vfmsub132pd zmm25, zmm29, qword ptr [rcx]{1to8} + +// CHECK: vfmsub132pd zmm25, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x9a,0x4a,0x7f] + vfmsub132pd zmm25, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub132pd zmm25, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x9a,0x8a,0x00,0x20,0x00,0x00] + vfmsub132pd zmm25, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub132pd zmm25, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x9a,0x4a,0x80] + vfmsub132pd zmm25, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub132pd zmm25, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x95,0x40,0x9a,0x8a,0xc0,0xdf,0xff,0xff] + vfmsub132pd zmm25, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub132pd zmm25, zmm29, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x9a,0x4a,0x7f] + vfmsub132pd zmm25, zmm29, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsub132pd zmm25, zmm29, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x9a,0x8a,0x00,0x04,0x00,0x00] + vfmsub132pd zmm25, zmm29, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsub132pd zmm25, zmm29, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x9a,0x4a,0x80] + vfmsub132pd zmm25, zmm29, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsub132pd zmm25, zmm29, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0x95,0x50,0x9a,0x8a,0xf8,0xfb,0xff,0xff] + vfmsub132pd zmm25, zmm29, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsub132ps zmm27, zmm6, zmm18 +// CHECK: encoding: [0x62,0x22,0x4d,0x48,0x9a,0xda] + vfmsub132ps zmm27, zmm6, zmm18 + +// CHECK: vfmsub132ps zmm27 {k4}, zmm6, zmm18 +// CHECK: encoding: [0x62,0x22,0x4d,0x4c,0x9a,0xda] + vfmsub132ps zmm27 {k4}, zmm6, zmm18 + +// CHECK: vfmsub132ps zmm27 {k4} {z}, zmm6, zmm18 +// CHECK: encoding: [0x62,0x22,0x4d,0xcc,0x9a,0xda] + vfmsub132ps zmm27 {k4} {z}, zmm6, zmm18 + +// CHECK: vfmsub132ps zmm27, zmm6, zmm18, {rn-sae} +// CHECK: encoding: [0x62,0x22,0x4d,0x18,0x9a,0xda] + vfmsub132ps zmm27, zmm6, zmm18, {rn-sae} + +// CHECK: vfmsub132ps zmm27, zmm6, zmm18, {ru-sae} +// CHECK: encoding: [0x62,0x22,0x4d,0x58,0x9a,0xda] + vfmsub132ps zmm27, zmm6, zmm18, {ru-sae} + +// CHECK: vfmsub132ps zmm27, zmm6, zmm18, {rd-sae} +// CHECK: encoding: [0x62,0x22,0x4d,0x38,0x9a,0xda] + vfmsub132ps zmm27, zmm6, zmm18, {rd-sae} + +// CHECK: vfmsub132ps zmm27, zmm6, zmm18, {rz-sae} +// CHECK: encoding: [0x62,0x22,0x4d,0x78,0x9a,0xda] + vfmsub132ps zmm27, zmm6, zmm18, {rz-sae} + +// CHECK: vfmsub132ps zmm27, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x4d,0x48,0x9a,0x19] + vfmsub132ps zmm27, zmm6, zmmword ptr [rcx] + +// CHECK: vfmsub132ps zmm27, zmm6, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x4d,0x48,0x9a,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfmsub132ps zmm27, zmm6, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub132ps zmm27, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x4d,0x58,0x9a,0x19] + vfmsub132ps zmm27, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vfmsub132ps zmm27, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x4d,0x48,0x9a,0x5a,0x7f] + vfmsub132ps zmm27, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub132ps zmm27, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x4d,0x48,0x9a,0x9a,0x00,0x20,0x00,0x00] + vfmsub132ps zmm27, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub132ps zmm27, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x4d,0x48,0x9a,0x5a,0x80] + vfmsub132ps zmm27, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub132ps zmm27, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x4d,0x48,0x9a,0x9a,0xc0,0xdf,0xff,0xff] + vfmsub132ps zmm27, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub132ps zmm27, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x4d,0x58,0x9a,0x5a,0x7f] + vfmsub132ps zmm27, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsub132ps zmm27, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x4d,0x58,0x9a,0x9a,0x00,0x02,0x00,0x00] + vfmsub132ps zmm27, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsub132ps zmm27, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x4d,0x58,0x9a,0x5a,0x80] + vfmsub132ps zmm27, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsub132ps zmm27, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x4d,0x58,0x9a,0x9a,0xfc,0xfd,0xff,0xff] + vfmsub132ps zmm27, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsub132sd xmm23, xmm20, xmm28 +// CHECK: encoding: [0x62,0x82,0xdd,0x00,0x9b,0xfc] + vfmsub132sd xmm23, xmm20, xmm28 + +// CHECK: vfmsub132sd xmm23 {k1}, xmm20, xmm28 +// CHECK: encoding: [0x62,0x82,0xdd,0x01,0x9b,0xfc] + vfmsub132sd xmm23 {k1}, xmm20, xmm28 + +// CHECK: vfmsub132sd xmm23 {k1} {z}, xmm20, xmm28 +// CHECK: encoding: [0x62,0x82,0xdd,0x81,0x9b,0xfc] + vfmsub132sd xmm23 {k1} {z}, xmm20, xmm28 + +// CHECK: vfmsub132sd xmm23, xmm20, xmm28, {rn-sae} +// CHECK: encoding: [0x62,0x82,0xdd,0x10,0x9b,0xfc] + vfmsub132sd xmm23, xmm20, xmm28, {rn-sae} + +// CHECK: vfmsub132sd xmm23, xmm20, xmm28, {ru-sae} +// CHECK: encoding: [0x62,0x82,0xdd,0x50,0x9b,0xfc] + vfmsub132sd xmm23, xmm20, xmm28, {ru-sae} + +// CHECK: vfmsub132sd xmm23, xmm20, xmm28, {rd-sae} +// CHECK: encoding: [0x62,0x82,0xdd,0x30,0x9b,0xfc] + vfmsub132sd xmm23, xmm20, xmm28, {rd-sae} + +// CHECK: vfmsub132sd xmm23, xmm20, xmm28, {rz-sae} +// CHECK: encoding: [0x62,0x82,0xdd,0x70,0x9b,0xfc] + vfmsub132sd xmm23, xmm20, xmm28, {rz-sae} + +// CHECK: vfmsub132sd xmm23, xmm20, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xdd,0x00,0x9b,0x39] + vfmsub132sd xmm23, xmm20, qword ptr [rcx] + +// CHECK: vfmsub132sd xmm23, xmm20, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xdd,0x00,0x9b,0xbc,0xf0,0x34,0x12,0x00,0x00] + vfmsub132sd xmm23, xmm20, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub132sd xmm23, xmm20, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe2,0xdd,0x00,0x9b,0x7a,0x7f] + vfmsub132sd xmm23, xmm20, qword ptr [rdx + 1016] + +// CHECK: vfmsub132sd xmm23, xmm20, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe2,0xdd,0x00,0x9b,0xba,0x00,0x04,0x00,0x00] + vfmsub132sd xmm23, xmm20, qword ptr [rdx + 1024] + +// CHECK: vfmsub132sd xmm23, xmm20, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe2,0xdd,0x00,0x9b,0x7a,0x80] + vfmsub132sd xmm23, xmm20, qword ptr [rdx - 1024] + +// CHECK: vfmsub132sd xmm23, xmm20, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe2,0xdd,0x00,0x9b,0xba,0xf8,0xfb,0xff,0xff] + vfmsub132sd xmm23, xmm20, qword ptr [rdx - 1032] + +// CHECK: vfmsub132ss xmm26, xmm9, xmm25 +// CHECK: encoding: [0x62,0x02,0x35,0x08,0x9b,0xd1] + vfmsub132ss xmm26, xmm9, xmm25 + +// CHECK: vfmsub132ss xmm26 {k7}, xmm9, xmm25 +// CHECK: encoding: [0x62,0x02,0x35,0x0f,0x9b,0xd1] + vfmsub132ss xmm26 {k7}, xmm9, xmm25 + +// CHECK: vfmsub132ss xmm26 {k7} {z}, xmm9, xmm25 +// CHECK: encoding: [0x62,0x02,0x35,0x8f,0x9b,0xd1] + vfmsub132ss xmm26 {k7} {z}, xmm9, xmm25 + +// CHECK: vfmsub132ss xmm26, xmm9, xmm25, {rn-sae} +// CHECK: encoding: [0x62,0x02,0x35,0x18,0x9b,0xd1] + vfmsub132ss xmm26, xmm9, xmm25, {rn-sae} + +// CHECK: vfmsub132ss xmm26, xmm9, xmm25, {ru-sae} +// CHECK: encoding: [0x62,0x02,0x35,0x58,0x9b,0xd1] + vfmsub132ss xmm26, xmm9, xmm25, {ru-sae} + +// CHECK: vfmsub132ss xmm26, xmm9, xmm25, {rd-sae} +// CHECK: encoding: [0x62,0x02,0x35,0x38,0x9b,0xd1] + vfmsub132ss xmm26, xmm9, xmm25, {rd-sae} + +// CHECK: vfmsub132ss xmm26, xmm9, xmm25, {rz-sae} +// CHECK: encoding: [0x62,0x02,0x35,0x78,0x9b,0xd1] + vfmsub132ss xmm26, xmm9, xmm25, {rz-sae} + +// CHECK: vfmsub132ss xmm26, xmm9, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x35,0x08,0x9b,0x11] + vfmsub132ss xmm26, xmm9, dword ptr [rcx] + +// CHECK: vfmsub132ss xmm26, xmm9, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x35,0x08,0x9b,0x94,0xf0,0x34,0x12,0x00,0x00] + vfmsub132ss xmm26, xmm9, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub132ss xmm26, xmm9, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x35,0x08,0x9b,0x52,0x7f] + vfmsub132ss xmm26, xmm9, dword ptr [rdx + 508] + +// CHECK: vfmsub132ss xmm26, xmm9, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x35,0x08,0x9b,0x92,0x00,0x02,0x00,0x00] + vfmsub132ss xmm26, xmm9, dword ptr [rdx + 512] + +// CHECK: vfmsub132ss xmm26, xmm9, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x35,0x08,0x9b,0x52,0x80] + vfmsub132ss xmm26, xmm9, dword ptr [rdx - 512] + +// CHECK: vfmsub132ss xmm26, xmm9, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x35,0x08,0x9b,0x92,0xfc,0xfd,0xff,0xff] + vfmsub132ss xmm26, xmm9, dword ptr [rdx - 516] + +// CHECK: vfmsub213pd zmm7, zmm18, zmm19 +// CHECK: encoding: [0x62,0xb2,0xed,0x40,0xaa,0xfb] + vfmsub213pd zmm7, zmm18, zmm19 + +// CHECK: vfmsub213pd zmm7 {k4}, zmm18, zmm19 +// CHECK: encoding: [0x62,0xb2,0xed,0x44,0xaa,0xfb] + vfmsub213pd zmm7 {k4}, zmm18, zmm19 + +// CHECK: vfmsub213pd zmm7 {k4} {z}, zmm18, zmm19 +// CHECK: encoding: [0x62,0xb2,0xed,0xc4,0xaa,0xfb] + vfmsub213pd zmm7 {k4} {z}, zmm18, zmm19 + +// CHECK: vfmsub213pd zmm7, zmm18, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0xed,0x10,0xaa,0xfb] + vfmsub213pd zmm7, zmm18, zmm19, {rn-sae} + +// CHECK: vfmsub213pd zmm7, zmm18, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0xed,0x50,0xaa,0xfb] + vfmsub213pd zmm7, zmm18, zmm19, {ru-sae} + +// CHECK: vfmsub213pd zmm7, zmm18, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0xed,0x30,0xaa,0xfb] + vfmsub213pd zmm7, zmm18, zmm19, {rd-sae} + +// CHECK: vfmsub213pd zmm7, zmm18, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0xed,0x70,0xaa,0xfb] + vfmsub213pd zmm7, zmm18, zmm19, {rz-sae} + +// CHECK: vfmsub213pd zmm7, zmm18, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xed,0x40,0xaa,0x39] + vfmsub213pd zmm7, zmm18, zmmword ptr [rcx] + +// CHECK: vfmsub213pd zmm7, zmm18, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xed,0x40,0xaa,0xbc,0xf0,0x34,0x12,0x00,0x00] + vfmsub213pd zmm7, zmm18, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub213pd zmm7, zmm18, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xed,0x50,0xaa,0x39] + vfmsub213pd zmm7, zmm18, qword ptr [rcx]{1to8} + +// CHECK: vfmsub213pd zmm7, zmm18, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xed,0x40,0xaa,0x7a,0x7f] + vfmsub213pd zmm7, zmm18, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub213pd zmm7, zmm18, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xed,0x40,0xaa,0xba,0x00,0x20,0x00,0x00] + vfmsub213pd zmm7, zmm18, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub213pd zmm7, zmm18, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xed,0x40,0xaa,0x7a,0x80] + vfmsub213pd zmm7, zmm18, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub213pd zmm7, zmm18, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xed,0x40,0xaa,0xba,0xc0,0xdf,0xff,0xff] + vfmsub213pd zmm7, zmm18, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub213pd zmm7, zmm18, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xed,0x50,0xaa,0x7a,0x7f] + vfmsub213pd zmm7, zmm18, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsub213pd zmm7, zmm18, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xed,0x50,0xaa,0xba,0x00,0x04,0x00,0x00] + vfmsub213pd zmm7, zmm18, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsub213pd zmm7, zmm18, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xed,0x50,0xaa,0x7a,0x80] + vfmsub213pd zmm7, zmm18, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsub213pd zmm7, zmm18, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xed,0x50,0xaa,0xba,0xf8,0xfb,0xff,0xff] + vfmsub213pd zmm7, zmm18, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsub213ps zmm9, zmm16, zmm6 +// CHECK: encoding: [0x62,0x72,0x7d,0x40,0xaa,0xce] + vfmsub213ps zmm9, zmm16, zmm6 + +// CHECK: vfmsub213ps zmm9 {k6}, zmm16, zmm6 +// CHECK: encoding: [0x62,0x72,0x7d,0x46,0xaa,0xce] + vfmsub213ps zmm9 {k6}, zmm16, zmm6 + +// CHECK: vfmsub213ps zmm9 {k6} {z}, zmm16, zmm6 +// CHECK: encoding: [0x62,0x72,0x7d,0xc6,0xaa,0xce] + vfmsub213ps zmm9 {k6} {z}, zmm16, zmm6 + +// CHECK: vfmsub213ps zmm9, zmm16, zmm6, {rn-sae} +// CHECK: encoding: [0x62,0x72,0x7d,0x10,0xaa,0xce] + vfmsub213ps zmm9, zmm16, zmm6, {rn-sae} + +// CHECK: vfmsub213ps zmm9, zmm16, zmm6, {ru-sae} +// CHECK: encoding: [0x62,0x72,0x7d,0x50,0xaa,0xce] + vfmsub213ps zmm9, zmm16, zmm6, {ru-sae} + +// CHECK: vfmsub213ps zmm9, zmm16, zmm6, {rd-sae} +// CHECK: encoding: [0x62,0x72,0x7d,0x30,0xaa,0xce] + vfmsub213ps zmm9, zmm16, zmm6, {rd-sae} + +// CHECK: vfmsub213ps zmm9, zmm16, zmm6, {rz-sae} +// CHECK: encoding: [0x62,0x72,0x7d,0x70,0xaa,0xce] + vfmsub213ps zmm9, zmm16, zmm6, {rz-sae} + +// CHECK: vfmsub213ps zmm9, zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x40,0xaa,0x09] + vfmsub213ps zmm9, zmm16, zmmword ptr [rcx] + +// CHECK: vfmsub213ps zmm9, zmm16, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x40,0xaa,0x8c,0xf0,0x34,0x12,0x00,0x00] + vfmsub213ps zmm9, zmm16, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub213ps zmm9, zmm16, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x50,0xaa,0x09] + vfmsub213ps zmm9, zmm16, dword ptr [rcx]{1to16} + +// CHECK: vfmsub213ps zmm9, zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x7d,0x40,0xaa,0x4a,0x7f] + vfmsub213ps zmm9, zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub213ps zmm9, zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x7d,0x40,0xaa,0x8a,0x00,0x20,0x00,0x00] + vfmsub213ps zmm9, zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub213ps zmm9, zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x7d,0x40,0xaa,0x4a,0x80] + vfmsub213ps zmm9, zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub213ps zmm9, zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x7d,0x40,0xaa,0x8a,0xc0,0xdf,0xff,0xff] + vfmsub213ps zmm9, zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub213ps zmm9, zmm16, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x50,0xaa,0x4a,0x7f] + vfmsub213ps zmm9, zmm16, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsub213ps zmm9, zmm16, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x50,0xaa,0x8a,0x00,0x02,0x00,0x00] + vfmsub213ps zmm9, zmm16, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsub213ps zmm9, zmm16, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x50,0xaa,0x4a,0x80] + vfmsub213ps zmm9, zmm16, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsub213ps zmm9, zmm16, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x7d,0x50,0xaa,0x8a,0xfc,0xfd,0xff,0xff] + vfmsub213ps zmm9, zmm16, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsub213sd xmm12, xmm18, xmm20 +// CHECK: encoding: [0x62,0x32,0xed,0x00,0xab,0xe4] + vfmsub213sd xmm12, xmm18, xmm20 + +// CHECK: vfmsub213sd xmm12 {k4}, xmm18, xmm20 +// CHECK: encoding: [0x62,0x32,0xed,0x04,0xab,0xe4] + vfmsub213sd xmm12 {k4}, xmm18, xmm20 + +// CHECK: vfmsub213sd xmm12 {k4} {z}, xmm18, xmm20 +// CHECK: encoding: [0x62,0x32,0xed,0x84,0xab,0xe4] + vfmsub213sd xmm12 {k4} {z}, xmm18, xmm20 + +// CHECK: vfmsub213sd xmm12, xmm18, xmm20, {rn-sae} +// CHECK: encoding: [0x62,0x32,0xed,0x10,0xab,0xe4] + vfmsub213sd xmm12, xmm18, xmm20, {rn-sae} + +// CHECK: vfmsub213sd xmm12, xmm18, xmm20, {ru-sae} +// CHECK: encoding: [0x62,0x32,0xed,0x50,0xab,0xe4] + vfmsub213sd xmm12, xmm18, xmm20, {ru-sae} + +// CHECK: vfmsub213sd xmm12, xmm18, xmm20, {rd-sae} +// CHECK: encoding: [0x62,0x32,0xed,0x30,0xab,0xe4] + vfmsub213sd xmm12, xmm18, xmm20, {rd-sae} + +// CHECK: vfmsub213sd xmm12, xmm18, xmm20, {rz-sae} +// CHECK: encoding: [0x62,0x32,0xed,0x70,0xab,0xe4] + vfmsub213sd xmm12, xmm18, xmm20, {rz-sae} + +// CHECK: vfmsub213sd xmm12, xmm18, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xed,0x00,0xab,0x21] + vfmsub213sd xmm12, xmm18, qword ptr [rcx] + +// CHECK: vfmsub213sd xmm12, xmm18, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0xed,0x00,0xab,0xa4,0xf0,0x34,0x12,0x00,0x00] + vfmsub213sd xmm12, xmm18, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub213sd xmm12, xmm18, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x72,0xed,0x00,0xab,0x62,0x7f] + vfmsub213sd xmm12, xmm18, qword ptr [rdx + 1016] + +// CHECK: vfmsub213sd xmm12, xmm18, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x72,0xed,0x00,0xab,0xa2,0x00,0x04,0x00,0x00] + vfmsub213sd xmm12, xmm18, qword ptr [rdx + 1024] + +// CHECK: vfmsub213sd xmm12, xmm18, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x72,0xed,0x00,0xab,0x62,0x80] + vfmsub213sd xmm12, xmm18, qword ptr [rdx - 1024] + +// CHECK: vfmsub213sd xmm12, xmm18, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x72,0xed,0x00,0xab,0xa2,0xf8,0xfb,0xff,0xff] + vfmsub213sd xmm12, xmm18, qword ptr [rdx - 1032] + +// CHECK: vfmsub213ss xmm2, xmm1, xmm9 +// CHECK: encoding: [0xc4,0xc2,0x71,0xab,0xd1] + vfmsub213ss xmm2, xmm1, xmm9 + +// CHECK: vfmsub213ss xmm2 {k7}, xmm1, xmm9 +// CHECK: encoding: [0x62,0xd2,0x75,0x0f,0xab,0xd1] + vfmsub213ss xmm2 {k7}, xmm1, xmm9 + +// CHECK: vfmsub213ss xmm2 {k7} {z}, xmm1, xmm9 +// CHECK: encoding: [0x62,0xd2,0x75,0x8f,0xab,0xd1] + vfmsub213ss xmm2 {k7} {z}, xmm1, xmm9 + +// CHECK: vfmsub213ss xmm2, xmm1, xmm9, {rn-sae} +// CHECK: encoding: [0x62,0xd2,0x75,0x18,0xab,0xd1] + vfmsub213ss xmm2, xmm1, xmm9, {rn-sae} + +// CHECK: vfmsub213ss xmm2, xmm1, xmm9, {ru-sae} +// CHECK: encoding: [0x62,0xd2,0x75,0x58,0xab,0xd1] + vfmsub213ss xmm2, xmm1, xmm9, {ru-sae} + +// CHECK: vfmsub213ss xmm2, xmm1, xmm9, {rd-sae} +// CHECK: encoding: [0x62,0xd2,0x75,0x38,0xab,0xd1] + vfmsub213ss xmm2, xmm1, xmm9, {rd-sae} + +// CHECK: vfmsub213ss xmm2, xmm1, xmm9, {rz-sae} +// CHECK: encoding: [0x62,0xd2,0x75,0x78,0xab,0xd1] + vfmsub213ss xmm2, xmm1, xmm9, {rz-sae} + +// CHECK: vfmsub213ss xmm2, xmm1, dword ptr [rcx] +// CHECK: encoding: [0xc4,0xe2,0x71,0xab,0x11] + vfmsub213ss xmm2, xmm1, dword ptr [rcx] + +// CHECK: vfmsub213ss xmm2, xmm1, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa2,0x71,0xab,0x94,0xf0,0x34,0x12,0x00,0x00] + vfmsub213ss xmm2, xmm1, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub213ss xmm2, xmm1, dword ptr [rdx + 508] +// CHECK: encoding: [0xc4,0xe2,0x71,0xab,0x92,0xfc,0x01,0x00,0x00] + vfmsub213ss xmm2, xmm1, dword ptr [rdx + 508] + +// CHECK: vfmsub213ss xmm2, xmm1, dword ptr [rdx + 512] +// CHECK: encoding: [0xc4,0xe2,0x71,0xab,0x92,0x00,0x02,0x00,0x00] + vfmsub213ss xmm2, xmm1, dword ptr [rdx + 512] + +// CHECK: vfmsub213ss xmm2, xmm1, dword ptr [rdx - 512] +// CHECK: encoding: [0xc4,0xe2,0x71,0xab,0x92,0x00,0xfe,0xff,0xff] + vfmsub213ss xmm2, xmm1, dword ptr [rdx - 512] + +// CHECK: vfmsub213ss xmm2, xmm1, dword ptr [rdx - 516] +// CHECK: encoding: [0xc4,0xe2,0x71,0xab,0x92,0xfc,0xfd,0xff,0xff] + vfmsub213ss xmm2, xmm1, dword ptr [rdx - 516] + +// CHECK: vfmsub231pd zmm17, zmm2, zmm14 +// CHECK: encoding: [0x62,0xc2,0xed,0x48,0xba,0xce] + vfmsub231pd zmm17, zmm2, zmm14 + +// CHECK: vfmsub231pd zmm17 {k2}, zmm2, zmm14 +// CHECK: encoding: [0x62,0xc2,0xed,0x4a,0xba,0xce] + vfmsub231pd zmm17 {k2}, zmm2, zmm14 + +// CHECK: vfmsub231pd zmm17 {k2} {z}, zmm2, zmm14 +// CHECK: encoding: [0x62,0xc2,0xed,0xca,0xba,0xce] + vfmsub231pd zmm17 {k2} {z}, zmm2, zmm14 + +// CHECK: vfmsub231pd zmm17, zmm2, zmm14, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x18,0xba,0xce] + vfmsub231pd zmm17, zmm2, zmm14, {rn-sae} + +// CHECK: vfmsub231pd zmm17, zmm2, zmm14, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x58,0xba,0xce] + vfmsub231pd zmm17, zmm2, zmm14, {ru-sae} + +// CHECK: vfmsub231pd zmm17, zmm2, zmm14, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x38,0xba,0xce] + vfmsub231pd zmm17, zmm2, zmm14, {rd-sae} + +// CHECK: vfmsub231pd zmm17, zmm2, zmm14, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x78,0xba,0xce] + vfmsub231pd zmm17, zmm2, zmm14, {rz-sae} + +// CHECK: vfmsub231pd zmm17, zmm2, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xba,0x09] + vfmsub231pd zmm17, zmm2, zmmword ptr [rcx] + +// CHECK: vfmsub231pd zmm17, zmm2, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xed,0x48,0xba,0x8c,0xf0,0x34,0x12,0x00,0x00] + vfmsub231pd zmm17, zmm2, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub231pd zmm17, zmm2, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xba,0x09] + vfmsub231pd zmm17, zmm2, qword ptr [rcx]{1to8} + +// CHECK: vfmsub231pd zmm17, zmm2, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xba,0x4a,0x7f] + vfmsub231pd zmm17, zmm2, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub231pd zmm17, zmm2, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xba,0x8a,0x00,0x20,0x00,0x00] + vfmsub231pd zmm17, zmm2, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub231pd zmm17, zmm2, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xba,0x4a,0x80] + vfmsub231pd zmm17, zmm2, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub231pd zmm17, zmm2, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xba,0x8a,0xc0,0xdf,0xff,0xff] + vfmsub231pd zmm17, zmm2, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub231pd zmm17, zmm2, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xba,0x4a,0x7f] + vfmsub231pd zmm17, zmm2, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsub231pd zmm17, zmm2, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xba,0x8a,0x00,0x04,0x00,0x00] + vfmsub231pd zmm17, zmm2, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsub231pd zmm17, zmm2, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xba,0x4a,0x80] + vfmsub231pd zmm17, zmm2, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsub231pd zmm17, zmm2, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xba,0x8a,0xf8,0xfb,0xff,0xff] + vfmsub231pd zmm17, zmm2, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsub231ps zmm5, zmm4, zmm20 +// CHECK: encoding: [0x62,0xb2,0x5d,0x48,0xba,0xec] + vfmsub231ps zmm5, zmm4, zmm20 + +// CHECK: vfmsub231ps zmm5 {k1}, zmm4, zmm20 +// CHECK: encoding: [0x62,0xb2,0x5d,0x49,0xba,0xec] + vfmsub231ps zmm5 {k1}, zmm4, zmm20 + +// CHECK: vfmsub231ps zmm5 {k1} {z}, zmm4, zmm20 +// CHECK: encoding: [0x62,0xb2,0x5d,0xc9,0xba,0xec] + vfmsub231ps zmm5 {k1} {z}, zmm4, zmm20 + +// CHECK: vfmsub231ps zmm5, zmm4, zmm20, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0x5d,0x18,0xba,0xec] + vfmsub231ps zmm5, zmm4, zmm20, {rn-sae} + +// CHECK: vfmsub231ps zmm5, zmm4, zmm20, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0x5d,0x58,0xba,0xec] + vfmsub231ps zmm5, zmm4, zmm20, {ru-sae} + +// CHECK: vfmsub231ps zmm5, zmm4, zmm20, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0x5d,0x38,0xba,0xec] + vfmsub231ps zmm5, zmm4, zmm20, {rd-sae} + +// CHECK: vfmsub231ps zmm5, zmm4, zmm20, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0x5d,0x78,0xba,0xec] + vfmsub231ps zmm5, zmm4, zmm20, {rz-sae} + +// CHECK: vfmsub231ps zmm5, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0xba,0x29] + vfmsub231ps zmm5, zmm4, zmmword ptr [rcx] + +// CHECK: vfmsub231ps zmm5, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x5d,0x48,0xba,0xac,0xf0,0x34,0x12,0x00,0x00] + vfmsub231ps zmm5, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub231ps zmm5, zmm4, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0xba,0x29] + vfmsub231ps zmm5, zmm4, dword ptr [rcx]{1to16} + +// CHECK: vfmsub231ps zmm5, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0xba,0x6a,0x7f] + vfmsub231ps zmm5, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vfmsub231ps zmm5, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0xba,0xaa,0x00,0x20,0x00,0x00] + vfmsub231ps zmm5, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vfmsub231ps zmm5, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0xba,0x6a,0x80] + vfmsub231ps zmm5, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vfmsub231ps zmm5, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0xba,0xaa,0xc0,0xdf,0xff,0xff] + vfmsub231ps zmm5, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vfmsub231ps zmm5, zmm4, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0xba,0x6a,0x7f] + vfmsub231ps zmm5, zmm4, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsub231ps zmm5, zmm4, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0xba,0xaa,0x00,0x02,0x00,0x00] + vfmsub231ps zmm5, zmm4, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsub231ps zmm5, zmm4, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0xba,0x6a,0x80] + vfmsub231ps zmm5, zmm4, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsub231ps zmm5, zmm4, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0xba,0xaa,0xfc,0xfd,0xff,0xff] + vfmsub231ps zmm5, zmm4, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsub231sd xmm7, xmm2, xmm6 +// CHECK: encoding: [0xc4,0xe2,0xe9,0xbb,0xfe] + vfmsub231sd xmm7, xmm2, xmm6 + +// CHECK: vfmsub231sd xmm7 {k4}, xmm2, xmm6 +// CHECK: encoding: [0x62,0xf2,0xed,0x0c,0xbb,0xfe] + vfmsub231sd xmm7 {k4}, xmm2, xmm6 + +// CHECK: vfmsub231sd xmm7 {k4} {z}, xmm2, xmm6 +// CHECK: encoding: [0x62,0xf2,0xed,0x8c,0xbb,0xfe] + vfmsub231sd xmm7 {k4} {z}, xmm2, xmm6 + +// CHECK: vfmsub231sd xmm7, xmm2, xmm6, {rn-sae} +// CHECK: encoding: [0x62,0xf2,0xed,0x18,0xbb,0xfe] + vfmsub231sd xmm7, xmm2, xmm6, {rn-sae} + +// CHECK: vfmsub231sd xmm7, xmm2, xmm6, {ru-sae} +// CHECK: encoding: [0x62,0xf2,0xed,0x58,0xbb,0xfe] + vfmsub231sd xmm7, xmm2, xmm6, {ru-sae} + +// CHECK: vfmsub231sd xmm7, xmm2, xmm6, {rd-sae} +// CHECK: encoding: [0x62,0xf2,0xed,0x38,0xbb,0xfe] + vfmsub231sd xmm7, xmm2, xmm6, {rd-sae} + +// CHECK: vfmsub231sd xmm7, xmm2, xmm6, {rz-sae} +// CHECK: encoding: [0x62,0xf2,0xed,0x78,0xbb,0xfe] + vfmsub231sd xmm7, xmm2, xmm6, {rz-sae} + +// CHECK: vfmsub231sd xmm7, xmm2, qword ptr [rcx] +// CHECK: encoding: [0xc4,0xe2,0xe9,0xbb,0x39] + vfmsub231sd xmm7, xmm2, qword ptr [rcx] + +// CHECK: vfmsub231sd xmm7, xmm2, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa2,0xe9,0xbb,0xbc,0xf0,0x34,0x12,0x00,0x00] + vfmsub231sd xmm7, xmm2, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub231sd xmm7, xmm2, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0xe2,0xe9,0xbb,0xba,0xf8,0x03,0x00,0x00] + vfmsub231sd xmm7, xmm2, qword ptr [rdx + 1016] + +// CHECK: vfmsub231sd xmm7, xmm2, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0xe2,0xe9,0xbb,0xba,0x00,0x04,0x00,0x00] + vfmsub231sd xmm7, xmm2, qword ptr [rdx + 1024] + +// CHECK: vfmsub231sd xmm7, xmm2, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0xe2,0xe9,0xbb,0xba,0x00,0xfc,0xff,0xff] + vfmsub231sd xmm7, xmm2, qword ptr [rdx - 1024] + +// CHECK: vfmsub231sd xmm7, xmm2, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0xe2,0xe9,0xbb,0xba,0xf8,0xfb,0xff,0xff] + vfmsub231sd xmm7, xmm2, qword ptr [rdx - 1032] + +// CHECK: vfmsub231ss xmm18, xmm18, xmm18 +// CHECK: encoding: [0x62,0xa2,0x6d,0x00,0xbb,0xd2] + vfmsub231ss xmm18, xmm18, xmm18 + +// CHECK: vfmsub231ss xmm18 {k7}, xmm18, xmm18 +// CHECK: encoding: [0x62,0xa2,0x6d,0x07,0xbb,0xd2] + vfmsub231ss xmm18 {k7}, xmm18, xmm18 + +// CHECK: vfmsub231ss xmm18 {k7} {z}, xmm18, xmm18 +// CHECK: encoding: [0x62,0xa2,0x6d,0x87,0xbb,0xd2] + vfmsub231ss xmm18 {k7} {z}, xmm18, xmm18 + +// CHECK: vfmsub231ss xmm18, xmm18, xmm18, {rn-sae} +// CHECK: encoding: [0x62,0xa2,0x6d,0x10,0xbb,0xd2] + vfmsub231ss xmm18, xmm18, xmm18, {rn-sae} + +// CHECK: vfmsub231ss xmm18, xmm18, xmm18, {ru-sae} +// CHECK: encoding: [0x62,0xa2,0x6d,0x50,0xbb,0xd2] + vfmsub231ss xmm18, xmm18, xmm18, {ru-sae} + +// CHECK: vfmsub231ss xmm18, xmm18, xmm18, {rd-sae} +// CHECK: encoding: [0x62,0xa2,0x6d,0x30,0xbb,0xd2] + vfmsub231ss xmm18, xmm18, xmm18, {rd-sae} + +// CHECK: vfmsub231ss xmm18, xmm18, xmm18, {rz-sae} +// CHECK: encoding: [0x62,0xa2,0x6d,0x70,0xbb,0xd2] + vfmsub231ss xmm18, xmm18, xmm18, {rz-sae} + +// CHECK: vfmsub231ss xmm18, xmm18, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x6d,0x00,0xbb,0x11] + vfmsub231ss xmm18, xmm18, dword ptr [rcx] + +// CHECK: vfmsub231ss xmm18, xmm18, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x6d,0x00,0xbb,0x94,0xf0,0x34,0x12,0x00,0x00] + vfmsub231ss xmm18, xmm18, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsub231ss xmm18, xmm18, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x6d,0x00,0xbb,0x52,0x7f] + vfmsub231ss xmm18, xmm18, dword ptr [rdx + 508] + +// CHECK: vfmsub231ss xmm18, xmm18, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x6d,0x00,0xbb,0x92,0x00,0x02,0x00,0x00] + vfmsub231ss xmm18, xmm18, dword ptr [rdx + 512] + +// CHECK: vfmsub231ss xmm18, xmm18, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x6d,0x00,0xbb,0x52,0x80] + vfmsub231ss xmm18, xmm18, dword ptr [rdx - 512] + +// CHECK: vfmsub231ss xmm18, xmm18, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x6d,0x00,0xbb,0x92,0xfc,0xfd,0xff,0xff] + vfmsub231ss xmm18, xmm18, dword ptr [rdx - 516] + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmm7 +// CHECK: encoding: [0x62,0xe2,0xdd,0x48,0x97,0xef] + vfmsubadd132pd zmm21, zmm4, zmm7 + +// CHECK: vfmsubadd132pd zmm21 {k5}, zmm4, zmm7 +// CHECK: encoding: [0x62,0xe2,0xdd,0x4d,0x97,0xef] + vfmsubadd132pd zmm21 {k5}, zmm4, zmm7 + +// CHECK: vfmsubadd132pd zmm21 {k5} {z}, zmm4, zmm7 +// CHECK: encoding: [0x62,0xe2,0xdd,0xcd,0x97,0xef] + vfmsubadd132pd zmm21 {k5} {z}, zmm4, zmm7 + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmm7, {rn-sae} +// CHECK: encoding: [0x62,0xe2,0xdd,0x18,0x97,0xef] + vfmsubadd132pd zmm21, zmm4, zmm7, {rn-sae} + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmm7, {ru-sae} +// CHECK: encoding: [0x62,0xe2,0xdd,0x58,0x97,0xef] + vfmsubadd132pd zmm21, zmm4, zmm7, {ru-sae} + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmm7, {rd-sae} +// CHECK: encoding: [0x62,0xe2,0xdd,0x38,0x97,0xef] + vfmsubadd132pd zmm21, zmm4, zmm7, {rd-sae} + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmm7, {rz-sae} +// CHECK: encoding: [0x62,0xe2,0xdd,0x78,0x97,0xef] + vfmsubadd132pd zmm21, zmm4, zmm7, {rz-sae} + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xdd,0x48,0x97,0x29] + vfmsubadd132pd zmm21, zmm4, zmmword ptr [rcx] + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xdd,0x48,0x97,0xac,0xf0,0x34,0x12,0x00,0x00] + vfmsubadd132pd zmm21, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsubadd132pd zmm21, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x58,0x97,0x29] + vfmsubadd132pd zmm21, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xdd,0x48,0x97,0x6a,0x7f] + vfmsubadd132pd zmm21, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xdd,0x48,0x97,0xaa,0x00,0x20,0x00,0x00] + vfmsubadd132pd zmm21, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xdd,0x48,0x97,0x6a,0x80] + vfmsubadd132pd zmm21, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd132pd zmm21, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xdd,0x48,0x97,0xaa,0xc0,0xdf,0xff,0xff] + vfmsubadd132pd zmm21, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd132pd zmm21, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x58,0x97,0x6a,0x7f] + vfmsubadd132pd zmm21, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsubadd132pd zmm21, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x58,0x97,0xaa,0x00,0x04,0x00,0x00] + vfmsubadd132pd zmm21, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsubadd132pd zmm21, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x58,0x97,0x6a,0x80] + vfmsubadd132pd zmm21, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsubadd132pd zmm21, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xdd,0x58,0x97,0xaa,0xf8,0xfb,0xff,0xff] + vfmsubadd132pd zmm21, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmm16 +// CHECK: encoding: [0x62,0xb2,0x3d,0x40,0x97,0xf0] + vfmsubadd132ps zmm6, zmm24, zmm16 + +// CHECK: vfmsubadd132ps zmm6 {k7}, zmm24, zmm16 +// CHECK: encoding: [0x62,0xb2,0x3d,0x47,0x97,0xf0] + vfmsubadd132ps zmm6 {k7}, zmm24, zmm16 + +// CHECK: vfmsubadd132ps zmm6 {k7} {z}, zmm24, zmm16 +// CHECK: encoding: [0x62,0xb2,0x3d,0xc7,0x97,0xf0] + vfmsubadd132ps zmm6 {k7} {z}, zmm24, zmm16 + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmm16, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0x3d,0x10,0x97,0xf0] + vfmsubadd132ps zmm6, zmm24, zmm16, {rn-sae} + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmm16, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0x3d,0x50,0x97,0xf0] + vfmsubadd132ps zmm6, zmm24, zmm16, {ru-sae} + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmm16, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0x3d,0x30,0x97,0xf0] + vfmsubadd132ps zmm6, zmm24, zmm16, {rd-sae} + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmm16, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0x3d,0x70,0x97,0xf0] + vfmsubadd132ps zmm6, zmm24, zmm16, {rz-sae} + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x97,0x31] + vfmsubadd132ps zmm6, zmm24, zmmword ptr [rcx] + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x3d,0x40,0x97,0xb4,0xf0,0x34,0x12,0x00,0x00] + vfmsubadd132ps zmm6, zmm24, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsubadd132ps zmm6, zmm24, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x97,0x31] + vfmsubadd132ps zmm6, zmm24, dword ptr [rcx]{1to16} + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x97,0x72,0x7f] + vfmsubadd132ps zmm6, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x97,0xb2,0x00,0x20,0x00,0x00] + vfmsubadd132ps zmm6, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x97,0x72,0x80] + vfmsubadd132ps zmm6, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd132ps zmm6, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x97,0xb2,0xc0,0xdf,0xff,0xff] + vfmsubadd132ps zmm6, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd132ps zmm6, zmm24, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x97,0x72,0x7f] + vfmsubadd132ps zmm6, zmm24, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsubadd132ps zmm6, zmm24, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x97,0xb2,0x00,0x02,0x00,0x00] + vfmsubadd132ps zmm6, zmm24, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsubadd132ps zmm6, zmm24, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x97,0x72,0x80] + vfmsubadd132ps zmm6, zmm24, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsubadd132ps zmm6, zmm24, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x97,0xb2,0xfc,0xfd,0xff,0xff] + vfmsubadd132ps zmm6, zmm24, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmm11 +// CHECK: encoding: [0x62,0x52,0xcd,0x40,0xa7,0xdb] + vfmsubadd213pd zmm11, zmm22, zmm11 + +// CHECK: vfmsubadd213pd zmm11 {k4}, zmm22, zmm11 +// CHECK: encoding: [0x62,0x52,0xcd,0x44,0xa7,0xdb] + vfmsubadd213pd zmm11 {k4}, zmm22, zmm11 + +// CHECK: vfmsubadd213pd zmm11 {k4} {z}, zmm22, zmm11 +// CHECK: encoding: [0x62,0x52,0xcd,0xc4,0xa7,0xdb] + vfmsubadd213pd zmm11 {k4} {z}, zmm22, zmm11 + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmm11, {rn-sae} +// CHECK: encoding: [0x62,0x52,0xcd,0x10,0xa7,0xdb] + vfmsubadd213pd zmm11, zmm22, zmm11, {rn-sae} + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmm11, {ru-sae} +// CHECK: encoding: [0x62,0x52,0xcd,0x50,0xa7,0xdb] + vfmsubadd213pd zmm11, zmm22, zmm11, {ru-sae} + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmm11, {rd-sae} +// CHECK: encoding: [0x62,0x52,0xcd,0x30,0xa7,0xdb] + vfmsubadd213pd zmm11, zmm22, zmm11, {rd-sae} + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmm11, {rz-sae} +// CHECK: encoding: [0x62,0x52,0xcd,0x70,0xa7,0xdb] + vfmsubadd213pd zmm11, zmm22, zmm11, {rz-sae} + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0xa7,0x19] + vfmsubadd213pd zmm11, zmm22, zmmword ptr [rcx] + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0xcd,0x40,0xa7,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfmsubadd213pd zmm11, zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsubadd213pd zmm11, zmm22, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0xa7,0x19] + vfmsubadd213pd zmm11, zmm22, qword ptr [rcx]{1to8} + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0xa7,0x5a,0x7f] + vfmsubadd213pd zmm11, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0xa7,0x9a,0x00,0x20,0x00,0x00] + vfmsubadd213pd zmm11, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0xa7,0x5a,0x80] + vfmsubadd213pd zmm11, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd213pd zmm11, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0xa7,0x9a,0xc0,0xdf,0xff,0xff] + vfmsubadd213pd zmm11, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd213pd zmm11, zmm22, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0xa7,0x5a,0x7f] + vfmsubadd213pd zmm11, zmm22, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsubadd213pd zmm11, zmm22, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0xa7,0x9a,0x00,0x04,0x00,0x00] + vfmsubadd213pd zmm11, zmm22, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsubadd213pd zmm11, zmm22, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0xa7,0x5a,0x80] + vfmsubadd213pd zmm11, zmm22, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsubadd213pd zmm11, zmm22, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0xa7,0x9a,0xf8,0xfb,0xff,0xff] + vfmsubadd213pd zmm11, zmm22, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmm10 +// CHECK: encoding: [0x62,0x52,0x35,0x48,0xa7,0xe2] + vfmsubadd213ps zmm12, zmm9, zmm10 + +// CHECK: vfmsubadd213ps zmm12 {k7}, zmm9, zmm10 +// CHECK: encoding: [0x62,0x52,0x35,0x4f,0xa7,0xe2] + vfmsubadd213ps zmm12 {k7}, zmm9, zmm10 + +// CHECK: vfmsubadd213ps zmm12 {k7} {z}, zmm9, zmm10 +// CHECK: encoding: [0x62,0x52,0x35,0xcf,0xa7,0xe2] + vfmsubadd213ps zmm12 {k7} {z}, zmm9, zmm10 + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmm10, {rn-sae} +// CHECK: encoding: [0x62,0x52,0x35,0x18,0xa7,0xe2] + vfmsubadd213ps zmm12, zmm9, zmm10, {rn-sae} + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmm10, {ru-sae} +// CHECK: encoding: [0x62,0x52,0x35,0x58,0xa7,0xe2] + vfmsubadd213ps zmm12, zmm9, zmm10, {ru-sae} + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmm10, {rd-sae} +// CHECK: encoding: [0x62,0x52,0x35,0x38,0xa7,0xe2] + vfmsubadd213ps zmm12, zmm9, zmm10, {rd-sae} + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmm10, {rz-sae} +// CHECK: encoding: [0x62,0x52,0x35,0x78,0xa7,0xe2] + vfmsubadd213ps zmm12, zmm9, zmm10, {rz-sae} + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0xa7,0x21] + vfmsubadd213ps zmm12, zmm9, zmmword ptr [rcx] + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x35,0x48,0xa7,0xa4,0xf0,0x34,0x12,0x00,0x00] + vfmsubadd213ps zmm12, zmm9, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsubadd213ps zmm12, zmm9, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0xa7,0x21] + vfmsubadd213ps zmm12, zmm9, dword ptr [rcx]{1to16} + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0xa7,0x62,0x7f] + vfmsubadd213ps zmm12, zmm9, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0xa7,0xa2,0x00,0x20,0x00,0x00] + vfmsubadd213ps zmm12, zmm9, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0xa7,0x62,0x80] + vfmsubadd213ps zmm12, zmm9, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd213ps zmm12, zmm9, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x35,0x48,0xa7,0xa2,0xc0,0xdf,0xff,0xff] + vfmsubadd213ps zmm12, zmm9, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd213ps zmm12, zmm9, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0xa7,0x62,0x7f] + vfmsubadd213ps zmm12, zmm9, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsubadd213ps zmm12, zmm9, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0xa7,0xa2,0x00,0x02,0x00,0x00] + vfmsubadd213ps zmm12, zmm9, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsubadd213ps zmm12, zmm9, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0xa7,0x62,0x80] + vfmsubadd213ps zmm12, zmm9, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsubadd213ps zmm12, zmm9, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x35,0x58,0xa7,0xa2,0xfc,0xfd,0xff,0xff] + vfmsubadd213ps zmm12, zmm9, dword ptr [rdx - 516]{1to16} + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmm9 +// CHECK: encoding: [0x62,0xc2,0xed,0x48,0xb7,0xe9] + vfmsubadd231pd zmm21, zmm2, zmm9 + +// CHECK: vfmsubadd231pd zmm21 {k6}, zmm2, zmm9 +// CHECK: encoding: [0x62,0xc2,0xed,0x4e,0xb7,0xe9] + vfmsubadd231pd zmm21 {k6}, zmm2, zmm9 + +// CHECK: vfmsubadd231pd zmm21 {k6} {z}, zmm2, zmm9 +// CHECK: encoding: [0x62,0xc2,0xed,0xce,0xb7,0xe9] + vfmsubadd231pd zmm21 {k6} {z}, zmm2, zmm9 + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmm9, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x18,0xb7,0xe9] + vfmsubadd231pd zmm21, zmm2, zmm9, {rn-sae} + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmm9, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x58,0xb7,0xe9] + vfmsubadd231pd zmm21, zmm2, zmm9, {ru-sae} + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmm9, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x38,0xb7,0xe9] + vfmsubadd231pd zmm21, zmm2, zmm9, {rd-sae} + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmm9, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0xed,0x78,0xb7,0xe9] + vfmsubadd231pd zmm21, zmm2, zmm9, {rz-sae} + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xb7,0x29] + vfmsubadd231pd zmm21, zmm2, zmmword ptr [rcx] + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xed,0x48,0xb7,0xac,0xf0,0x34,0x12,0x00,0x00] + vfmsubadd231pd zmm21, zmm2, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsubadd231pd zmm21, zmm2, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xb7,0x29] + vfmsubadd231pd zmm21, zmm2, qword ptr [rcx]{1to8} + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xb7,0x6a,0x7f] + vfmsubadd231pd zmm21, zmm2, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xb7,0xaa,0x00,0x20,0x00,0x00] + vfmsubadd231pd zmm21, zmm2, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xb7,0x6a,0x80] + vfmsubadd231pd zmm21, zmm2, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd231pd zmm21, zmm2, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xed,0x48,0xb7,0xaa,0xc0,0xdf,0xff,0xff] + vfmsubadd231pd zmm21, zmm2, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd231pd zmm21, zmm2, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xb7,0x6a,0x7f] + vfmsubadd231pd zmm21, zmm2, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfmsubadd231pd zmm21, zmm2, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xb7,0xaa,0x00,0x04,0x00,0x00] + vfmsubadd231pd zmm21, zmm2, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfmsubadd231pd zmm21, zmm2, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xb7,0x6a,0x80] + vfmsubadd231pd zmm21, zmm2, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfmsubadd231pd zmm21, zmm2, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xed,0x58,0xb7,0xaa,0xf8,0xfb,0xff,0xff] + vfmsubadd231pd zmm21, zmm2, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmm24 +// CHECK: encoding: [0x62,0x02,0x55,0x40,0xb7,0xd8] + vfmsubadd231ps zmm27, zmm21, zmm24 + +// CHECK: vfmsubadd231ps zmm27 {k6}, zmm21, zmm24 +// CHECK: encoding: [0x62,0x02,0x55,0x46,0xb7,0xd8] + vfmsubadd231ps zmm27 {k6}, zmm21, zmm24 + +// CHECK: vfmsubadd231ps zmm27 {k6} {z}, zmm21, zmm24 +// CHECK: encoding: [0x62,0x02,0x55,0xc6,0xb7,0xd8] + vfmsubadd231ps zmm27 {k6} {z}, zmm21, zmm24 + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmm24, {rn-sae} +// CHECK: encoding: [0x62,0x02,0x55,0x10,0xb7,0xd8] + vfmsubadd231ps zmm27, zmm21, zmm24, {rn-sae} + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmm24, {ru-sae} +// CHECK: encoding: [0x62,0x02,0x55,0x50,0xb7,0xd8] + vfmsubadd231ps zmm27, zmm21, zmm24, {ru-sae} + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmm24, {rd-sae} +// CHECK: encoding: [0x62,0x02,0x55,0x30,0xb7,0xd8] + vfmsubadd231ps zmm27, zmm21, zmm24, {rd-sae} + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmm24, {rz-sae} +// CHECK: encoding: [0x62,0x02,0x55,0x70,0xb7,0xd8] + vfmsubadd231ps zmm27, zmm21, zmm24, {rz-sae} + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x55,0x40,0xb7,0x19] + vfmsubadd231ps zmm27, zmm21, zmmword ptr [rcx] + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x55,0x40,0xb7,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfmsubadd231ps zmm27, zmm21, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfmsubadd231ps zmm27, zmm21, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x55,0x50,0xb7,0x19] + vfmsubadd231ps zmm27, zmm21, dword ptr [rcx]{1to16} + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x55,0x40,0xb7,0x5a,0x7f] + vfmsubadd231ps zmm27, zmm21, zmmword ptr [rdx + 8128] + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x55,0x40,0xb7,0x9a,0x00,0x20,0x00,0x00] + vfmsubadd231ps zmm27, zmm21, zmmword ptr [rdx + 8192] + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x55,0x40,0xb7,0x5a,0x80] + vfmsubadd231ps zmm27, zmm21, zmmword ptr [rdx - 8192] + +// CHECK: vfmsubadd231ps zmm27, zmm21, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x55,0x40,0xb7,0x9a,0xc0,0xdf,0xff,0xff] + vfmsubadd231ps zmm27, zmm21, zmmword ptr [rdx - 8256] + +// CHECK: vfmsubadd231ps zmm27, zmm21, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x55,0x50,0xb7,0x5a,0x7f] + vfmsubadd231ps zmm27, zmm21, dword ptr [rdx + 508]{1to16} + +// CHECK: vfmsubadd231ps zmm27, zmm21, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x55,0x50,0xb7,0x9a,0x00,0x02,0x00,0x00] + vfmsubadd231ps zmm27, zmm21, dword ptr [rdx + 512]{1to16} + +// CHECK: vfmsubadd231ps zmm27, zmm21, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x55,0x50,0xb7,0x5a,0x80] + vfmsubadd231ps zmm27, zmm21, dword ptr [rdx - 512]{1to16} + +// CHECK: vfmsubadd231ps zmm27, zmm21, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x55,0x50,0xb7,0x9a,0xfc,0xfd,0xff,0xff] + vfmsubadd231ps zmm27, zmm21, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmadd132pd zmm11, zmm29, zmm19 +// CHECK: encoding: [0x62,0x32,0x95,0x40,0x9c,0xdb] + vfnmadd132pd zmm11, zmm29, zmm19 + +// CHECK: vfnmadd132pd zmm11 {k2}, zmm29, zmm19 +// CHECK: encoding: [0x62,0x32,0x95,0x42,0x9c,0xdb] + vfnmadd132pd zmm11 {k2}, zmm29, zmm19 + +// CHECK: vfnmadd132pd zmm11 {k2} {z}, zmm29, zmm19 +// CHECK: encoding: [0x62,0x32,0x95,0xc2,0x9c,0xdb] + vfnmadd132pd zmm11 {k2} {z}, zmm29, zmm19 + +// CHECK: vfnmadd132pd zmm11, zmm29, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0x32,0x95,0x10,0x9c,0xdb] + vfnmadd132pd zmm11, zmm29, zmm19, {rn-sae} + +// CHECK: vfnmadd132pd zmm11, zmm29, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0x32,0x95,0x50,0x9c,0xdb] + vfnmadd132pd zmm11, zmm29, zmm19, {ru-sae} + +// CHECK: vfnmadd132pd zmm11, zmm29, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0x32,0x95,0x30,0x9c,0xdb] + vfnmadd132pd zmm11, zmm29, zmm19, {rd-sae} + +// CHECK: vfnmadd132pd zmm11, zmm29, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0x32,0x95,0x70,0x9c,0xdb] + vfnmadd132pd zmm11, zmm29, zmm19, {rz-sae} + +// CHECK: vfnmadd132pd zmm11, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x95,0x40,0x9c,0x19] + vfnmadd132pd zmm11, zmm29, zmmword ptr [rcx] + +// CHECK: vfnmadd132pd zmm11, zmm29, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x95,0x40,0x9c,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfnmadd132pd zmm11, zmm29, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd132pd zmm11, zmm29, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0x95,0x50,0x9c,0x19] + vfnmadd132pd zmm11, zmm29, qword ptr [rcx]{1to8} + +// CHECK: vfnmadd132pd zmm11, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x95,0x40,0x9c,0x5a,0x7f] + vfnmadd132pd zmm11, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd132pd zmm11, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x95,0x40,0x9c,0x9a,0x00,0x20,0x00,0x00] + vfnmadd132pd zmm11, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd132pd zmm11, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x95,0x40,0x9c,0x5a,0x80] + vfnmadd132pd zmm11, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd132pd zmm11, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x95,0x40,0x9c,0x9a,0xc0,0xdf,0xff,0xff] + vfnmadd132pd zmm11, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd132pd zmm11, zmm29, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0x95,0x50,0x9c,0x5a,0x7f] + vfnmadd132pd zmm11, zmm29, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmadd132pd zmm11, zmm29, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0x95,0x50,0x9c,0x9a,0x00,0x04,0x00,0x00] + vfnmadd132pd zmm11, zmm29, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmadd132pd zmm11, zmm29, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0x95,0x50,0x9c,0x5a,0x80] + vfnmadd132pd zmm11, zmm29, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmadd132pd zmm11, zmm29, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0x95,0x50,0x9c,0x9a,0xf8,0xfb,0xff,0xff] + vfnmadd132pd zmm11, zmm29, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmadd132ps zmm17, zmm3, zmm15 +// CHECK: encoding: [0x62,0xc2,0x65,0x48,0x9c,0xcf] + vfnmadd132ps zmm17, zmm3, zmm15 + +// CHECK: vfnmadd132ps zmm17 {k5}, zmm3, zmm15 +// CHECK: encoding: [0x62,0xc2,0x65,0x4d,0x9c,0xcf] + vfnmadd132ps zmm17 {k5}, zmm3, zmm15 + +// CHECK: vfnmadd132ps zmm17 {k5} {z}, zmm3, zmm15 +// CHECK: encoding: [0x62,0xc2,0x65,0xcd,0x9c,0xcf] + vfnmadd132ps zmm17 {k5} {z}, zmm3, zmm15 + +// CHECK: vfnmadd132ps zmm17, zmm3, zmm15, {rn-sae} +// CHECK: encoding: [0x62,0xc2,0x65,0x18,0x9c,0xcf] + vfnmadd132ps zmm17, zmm3, zmm15, {rn-sae} + +// CHECK: vfnmadd132ps zmm17, zmm3, zmm15, {ru-sae} +// CHECK: encoding: [0x62,0xc2,0x65,0x58,0x9c,0xcf] + vfnmadd132ps zmm17, zmm3, zmm15, {ru-sae} + +// CHECK: vfnmadd132ps zmm17, zmm3, zmm15, {rd-sae} +// CHECK: encoding: [0x62,0xc2,0x65,0x38,0x9c,0xcf] + vfnmadd132ps zmm17, zmm3, zmm15, {rd-sae} + +// CHECK: vfnmadd132ps zmm17, zmm3, zmm15, {rz-sae} +// CHECK: encoding: [0x62,0xc2,0x65,0x78,0x9c,0xcf] + vfnmadd132ps zmm17, zmm3, zmm15, {rz-sae} + +// CHECK: vfnmadd132ps zmm17, zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x65,0x48,0x9c,0x09] + vfnmadd132ps zmm17, zmm3, zmmword ptr [rcx] + +// CHECK: vfnmadd132ps zmm17, zmm3, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x65,0x48,0x9c,0x8c,0xf0,0x34,0x12,0x00,0x00] + vfnmadd132ps zmm17, zmm3, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd132ps zmm17, zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x58,0x9c,0x09] + vfnmadd132ps zmm17, zmm3, dword ptr [rcx]{1to16} + +// CHECK: vfnmadd132ps zmm17, zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x65,0x48,0x9c,0x4a,0x7f] + vfnmadd132ps zmm17, zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd132ps zmm17, zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x65,0x48,0x9c,0x8a,0x00,0x20,0x00,0x00] + vfnmadd132ps zmm17, zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd132ps zmm17, zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x65,0x48,0x9c,0x4a,0x80] + vfnmadd132ps zmm17, zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd132ps zmm17, zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x65,0x48,0x9c,0x8a,0xc0,0xdf,0xff,0xff] + vfnmadd132ps zmm17, zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd132ps zmm17, zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x58,0x9c,0x4a,0x7f] + vfnmadd132ps zmm17, zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmadd132ps zmm17, zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x58,0x9c,0x8a,0x00,0x02,0x00,0x00] + vfnmadd132ps zmm17, zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmadd132ps zmm17, zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x58,0x9c,0x4a,0x80] + vfnmadd132ps zmm17, zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmadd132ps zmm17, zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x65,0x58,0x9c,0x8a,0xfc,0xfd,0xff,0xff] + vfnmadd132ps zmm17, zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmadd132sd xmm2, xmm24, xmm1 +// CHECK: encoding: [0x62,0xf2,0xbd,0x00,0x9d,0xd1] + vfnmadd132sd xmm2, xmm24, xmm1 + +// CHECK: vfnmadd132sd xmm2 {k4}, xmm24, xmm1 +// CHECK: encoding: [0x62,0xf2,0xbd,0x04,0x9d,0xd1] + vfnmadd132sd xmm2 {k4}, xmm24, xmm1 + +// CHECK: vfnmadd132sd xmm2 {k4} {z}, xmm24, xmm1 +// CHECK: encoding: [0x62,0xf2,0xbd,0x84,0x9d,0xd1] + vfnmadd132sd xmm2 {k4} {z}, xmm24, xmm1 + +// CHECK: vfnmadd132sd xmm2, xmm24, xmm1, {rn-sae} +// CHECK: encoding: [0x62,0xf2,0xbd,0x10,0x9d,0xd1] + vfnmadd132sd xmm2, xmm24, xmm1, {rn-sae} + +// CHECK: vfnmadd132sd xmm2, xmm24, xmm1, {ru-sae} +// CHECK: encoding: [0x62,0xf2,0xbd,0x50,0x9d,0xd1] + vfnmadd132sd xmm2, xmm24, xmm1, {ru-sae} + +// CHECK: vfnmadd132sd xmm2, xmm24, xmm1, {rd-sae} +// CHECK: encoding: [0x62,0xf2,0xbd,0x30,0x9d,0xd1] + vfnmadd132sd xmm2, xmm24, xmm1, {rd-sae} + +// CHECK: vfnmadd132sd xmm2, xmm24, xmm1, {rz-sae} +// CHECK: encoding: [0x62,0xf2,0xbd,0x70,0x9d,0xd1] + vfnmadd132sd xmm2, xmm24, xmm1, {rz-sae} + +// CHECK: vfnmadd132sd xmm2, xmm24, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xbd,0x00,0x9d,0x11] + vfnmadd132sd xmm2, xmm24, qword ptr [rcx] + +// CHECK: vfnmadd132sd xmm2, xmm24, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xbd,0x00,0x9d,0x94,0xf0,0x34,0x12,0x00,0x00] + vfnmadd132sd xmm2, xmm24, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd132sd xmm2, xmm24, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf2,0xbd,0x00,0x9d,0x52,0x7f] + vfnmadd132sd xmm2, xmm24, qword ptr [rdx + 1016] + +// CHECK: vfnmadd132sd xmm2, xmm24, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf2,0xbd,0x00,0x9d,0x92,0x00,0x04,0x00,0x00] + vfnmadd132sd xmm2, xmm24, qword ptr [rdx + 1024] + +// CHECK: vfnmadd132sd xmm2, xmm24, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf2,0xbd,0x00,0x9d,0x52,0x80] + vfnmadd132sd xmm2, xmm24, qword ptr [rdx - 1024] + +// CHECK: vfnmadd132sd xmm2, xmm24, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf2,0xbd,0x00,0x9d,0x92,0xf8,0xfb,0xff,0xff] + vfnmadd132sd xmm2, xmm24, qword ptr [rdx - 1032] + +// CHECK: vfnmadd132ss xmm13, xmm19, xmm13 +// CHECK: encoding: [0x62,0x52,0x65,0x00,0x9d,0xed] + vfnmadd132ss xmm13, xmm19, xmm13 + +// CHECK: vfnmadd132ss xmm13 {k4}, xmm19, xmm13 +// CHECK: encoding: [0x62,0x52,0x65,0x04,0x9d,0xed] + vfnmadd132ss xmm13 {k4}, xmm19, xmm13 + +// CHECK: vfnmadd132ss xmm13 {k4} {z}, xmm19, xmm13 +// CHECK: encoding: [0x62,0x52,0x65,0x84,0x9d,0xed] + vfnmadd132ss xmm13 {k4} {z}, xmm19, xmm13 + +// CHECK: vfnmadd132ss xmm13, xmm19, xmm13, {rn-sae} +// CHECK: encoding: [0x62,0x52,0x65,0x10,0x9d,0xed] + vfnmadd132ss xmm13, xmm19, xmm13, {rn-sae} + +// CHECK: vfnmadd132ss xmm13, xmm19, xmm13, {ru-sae} +// CHECK: encoding: [0x62,0x52,0x65,0x50,0x9d,0xed] + vfnmadd132ss xmm13, xmm19, xmm13, {ru-sae} + +// CHECK: vfnmadd132ss xmm13, xmm19, xmm13, {rd-sae} +// CHECK: encoding: [0x62,0x52,0x65,0x30,0x9d,0xed] + vfnmadd132ss xmm13, xmm19, xmm13, {rd-sae} + +// CHECK: vfnmadd132ss xmm13, xmm19, xmm13, {rz-sae} +// CHECK: encoding: [0x62,0x52,0x65,0x70,0x9d,0xed] + vfnmadd132ss xmm13, xmm19, xmm13, {rz-sae} + +// CHECK: vfnmadd132ss xmm13, xmm19, dword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x65,0x00,0x9d,0x29] + vfnmadd132ss xmm13, xmm19, dword ptr [rcx] + +// CHECK: vfnmadd132ss xmm13, xmm19, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x65,0x00,0x9d,0xac,0xf0,0x34,0x12,0x00,0x00] + vfnmadd132ss xmm13, xmm19, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd132ss xmm13, xmm19, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x72,0x65,0x00,0x9d,0x6a,0x7f] + vfnmadd132ss xmm13, xmm19, dword ptr [rdx + 508] + +// CHECK: vfnmadd132ss xmm13, xmm19, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x72,0x65,0x00,0x9d,0xaa,0x00,0x02,0x00,0x00] + vfnmadd132ss xmm13, xmm19, dword ptr [rdx + 512] + +// CHECK: vfnmadd132ss xmm13, xmm19, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x72,0x65,0x00,0x9d,0x6a,0x80] + vfnmadd132ss xmm13, xmm19, dword ptr [rdx - 512] + +// CHECK: vfnmadd132ss xmm13, xmm19, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x72,0x65,0x00,0x9d,0xaa,0xfc,0xfd,0xff,0xff] + vfnmadd132ss xmm13, xmm19, dword ptr [rdx - 516] + +// CHECK: vfnmadd213pd zmm15, zmm1, zmm22 +// CHECK: encoding: [0x62,0x32,0xf5,0x48,0xac,0xfe] + vfnmadd213pd zmm15, zmm1, zmm22 + +// CHECK: vfnmadd213pd zmm15 {k3}, zmm1, zmm22 +// CHECK: encoding: [0x62,0x32,0xf5,0x4b,0xac,0xfe] + vfnmadd213pd zmm15 {k3}, zmm1, zmm22 + +// CHECK: vfnmadd213pd zmm15 {k3} {z}, zmm1, zmm22 +// CHECK: encoding: [0x62,0x32,0xf5,0xcb,0xac,0xfe] + vfnmadd213pd zmm15 {k3} {z}, zmm1, zmm22 + +// CHECK: vfnmadd213pd zmm15, zmm1, zmm22, {rn-sae} +// CHECK: encoding: [0x62,0x32,0xf5,0x18,0xac,0xfe] + vfnmadd213pd zmm15, zmm1, zmm22, {rn-sae} + +// CHECK: vfnmadd213pd zmm15, zmm1, zmm22, {ru-sae} +// CHECK: encoding: [0x62,0x32,0xf5,0x58,0xac,0xfe] + vfnmadd213pd zmm15, zmm1, zmm22, {ru-sae} + +// CHECK: vfnmadd213pd zmm15, zmm1, zmm22, {rd-sae} +// CHECK: encoding: [0x62,0x32,0xf5,0x38,0xac,0xfe] + vfnmadd213pd zmm15, zmm1, zmm22, {rd-sae} + +// CHECK: vfnmadd213pd zmm15, zmm1, zmm22, {rz-sae} +// CHECK: encoding: [0x62,0x32,0xf5,0x78,0xac,0xfe] + vfnmadd213pd zmm15, zmm1, zmm22, {rz-sae} + +// CHECK: vfnmadd213pd zmm15, zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xf5,0x48,0xac,0x39] + vfnmadd213pd zmm15, zmm1, zmmword ptr [rcx] + +// CHECK: vfnmadd213pd zmm15, zmm1, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0xf5,0x48,0xac,0xbc,0xf0,0x34,0x12,0x00,0x00] + vfnmadd213pd zmm15, zmm1, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd213pd zmm15, zmm1, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xf5,0x58,0xac,0x39] + vfnmadd213pd zmm15, zmm1, qword ptr [rcx]{1to8} + +// CHECK: vfnmadd213pd zmm15, zmm1, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xf5,0x48,0xac,0x7a,0x7f] + vfnmadd213pd zmm15, zmm1, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd213pd zmm15, zmm1, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xf5,0x48,0xac,0xba,0x00,0x20,0x00,0x00] + vfnmadd213pd zmm15, zmm1, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd213pd zmm15, zmm1, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xf5,0x48,0xac,0x7a,0x80] + vfnmadd213pd zmm15, zmm1, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd213pd zmm15, zmm1, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xf5,0x48,0xac,0xba,0xc0,0xdf,0xff,0xff] + vfnmadd213pd zmm15, zmm1, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd213pd zmm15, zmm1, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xf5,0x58,0xac,0x7a,0x7f] + vfnmadd213pd zmm15, zmm1, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmadd213pd zmm15, zmm1, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xf5,0x58,0xac,0xba,0x00,0x04,0x00,0x00] + vfnmadd213pd zmm15, zmm1, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmadd213pd zmm15, zmm1, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xf5,0x58,0xac,0x7a,0x80] + vfnmadd213pd zmm15, zmm1, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmadd213pd zmm15, zmm1, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xf5,0x58,0xac,0xba,0xf8,0xfb,0xff,0xff] + vfnmadd213pd zmm15, zmm1, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmadd213ps zmm11, zmm4, zmm4 +// CHECK: encoding: [0x62,0x72,0x5d,0x48,0xac,0xdc] + vfnmadd213ps zmm11, zmm4, zmm4 + +// CHECK: vfnmadd213ps zmm11 {k4}, zmm4, zmm4 +// CHECK: encoding: [0x62,0x72,0x5d,0x4c,0xac,0xdc] + vfnmadd213ps zmm11 {k4}, zmm4, zmm4 + +// CHECK: vfnmadd213ps zmm11 {k4} {z}, zmm4, zmm4 +// CHECK: encoding: [0x62,0x72,0x5d,0xcc,0xac,0xdc] + vfnmadd213ps zmm11 {k4} {z}, zmm4, zmm4 + +// CHECK: vfnmadd213ps zmm11, zmm4, zmm4, {rn-sae} +// CHECK: encoding: [0x62,0x72,0x5d,0x18,0xac,0xdc] + vfnmadd213ps zmm11, zmm4, zmm4, {rn-sae} + +// CHECK: vfnmadd213ps zmm11, zmm4, zmm4, {ru-sae} +// CHECK: encoding: [0x62,0x72,0x5d,0x58,0xac,0xdc] + vfnmadd213ps zmm11, zmm4, zmm4, {ru-sae} + +// CHECK: vfnmadd213ps zmm11, zmm4, zmm4, {rd-sae} +// CHECK: encoding: [0x62,0x72,0x5d,0x38,0xac,0xdc] + vfnmadd213ps zmm11, zmm4, zmm4, {rd-sae} + +// CHECK: vfnmadd213ps zmm11, zmm4, zmm4, {rz-sae} +// CHECK: encoding: [0x62,0x72,0x5d,0x78,0xac,0xdc] + vfnmadd213ps zmm11, zmm4, zmm4, {rz-sae} + +// CHECK: vfnmadd213ps zmm11, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x5d,0x48,0xac,0x19] + vfnmadd213ps zmm11, zmm4, zmmword ptr [rcx] + +// CHECK: vfnmadd213ps zmm11, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x5d,0x48,0xac,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfnmadd213ps zmm11, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd213ps zmm11, zmm4, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x58,0xac,0x19] + vfnmadd213ps zmm11, zmm4, dword ptr [rcx]{1to16} + +// CHECK: vfnmadd213ps zmm11, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x5d,0x48,0xac,0x5a,0x7f] + vfnmadd213ps zmm11, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd213ps zmm11, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x5d,0x48,0xac,0x9a,0x00,0x20,0x00,0x00] + vfnmadd213ps zmm11, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd213ps zmm11, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x5d,0x48,0xac,0x5a,0x80] + vfnmadd213ps zmm11, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd213ps zmm11, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x5d,0x48,0xac,0x9a,0xc0,0xdf,0xff,0xff] + vfnmadd213ps zmm11, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd213ps zmm11, zmm4, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x58,0xac,0x5a,0x7f] + vfnmadd213ps zmm11, zmm4, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmadd213ps zmm11, zmm4, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x58,0xac,0x9a,0x00,0x02,0x00,0x00] + vfnmadd213ps zmm11, zmm4, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmadd213ps zmm11, zmm4, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x58,0xac,0x5a,0x80] + vfnmadd213ps zmm11, zmm4, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmadd213ps zmm11, zmm4, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x5d,0x58,0xac,0x9a,0xfc,0xfd,0xff,0xff] + vfnmadd213ps zmm11, zmm4, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmadd213sd xmm30, xmm14, xmm11 +// CHECK: encoding: [0x62,0x42,0x8d,0x08,0xad,0xf3] + vfnmadd213sd xmm30, xmm14, xmm11 + +// CHECK: vfnmadd213sd xmm30 {k4}, xmm14, xmm11 +// CHECK: encoding: [0x62,0x42,0x8d,0x0c,0xad,0xf3] + vfnmadd213sd xmm30 {k4}, xmm14, xmm11 + +// CHECK: vfnmadd213sd xmm30 {k4} {z}, xmm14, xmm11 +// CHECK: encoding: [0x62,0x42,0x8d,0x8c,0xad,0xf3] + vfnmadd213sd xmm30 {k4} {z}, xmm14, xmm11 + +// CHECK: vfnmadd213sd xmm30, xmm14, xmm11, {rn-sae} +// CHECK: encoding: [0x62,0x42,0x8d,0x18,0xad,0xf3] + vfnmadd213sd xmm30, xmm14, xmm11, {rn-sae} + +// CHECK: vfnmadd213sd xmm30, xmm14, xmm11, {ru-sae} +// CHECK: encoding: [0x62,0x42,0x8d,0x58,0xad,0xf3] + vfnmadd213sd xmm30, xmm14, xmm11, {ru-sae} + +// CHECK: vfnmadd213sd xmm30, xmm14, xmm11, {rd-sae} +// CHECK: encoding: [0x62,0x42,0x8d,0x38,0xad,0xf3] + vfnmadd213sd xmm30, xmm14, xmm11, {rd-sae} + +// CHECK: vfnmadd213sd xmm30, xmm14, xmm11, {rz-sae} +// CHECK: encoding: [0x62,0x42,0x8d,0x78,0xad,0xf3] + vfnmadd213sd xmm30, xmm14, xmm11, {rz-sae} + +// CHECK: vfnmadd213sd xmm30, xmm14, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xad,0x31] + vfnmadd213sd xmm30, xmm14, qword ptr [rcx] + +// CHECK: vfnmadd213sd xmm30, xmm14, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x8d,0x08,0xad,0xb4,0xf0,0x34,0x12,0x00,0x00] + vfnmadd213sd xmm30, xmm14, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd213sd xmm30, xmm14, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xad,0x72,0x7f] + vfnmadd213sd xmm30, xmm14, qword ptr [rdx + 1016] + +// CHECK: vfnmadd213sd xmm30, xmm14, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xad,0xb2,0x00,0x04,0x00,0x00] + vfnmadd213sd xmm30, xmm14, qword ptr [rdx + 1024] + +// CHECK: vfnmadd213sd xmm30, xmm14, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xad,0x72,0x80] + vfnmadd213sd xmm30, xmm14, qword ptr [rdx - 1024] + +// CHECK: vfnmadd213sd xmm30, xmm14, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0x8d,0x08,0xad,0xb2,0xf8,0xfb,0xff,0xff] + vfnmadd213sd xmm30, xmm14, qword ptr [rdx - 1032] + +// CHECK: vfnmadd213ss xmm28, xmm3, xmm20 +// CHECK: encoding: [0x62,0x22,0x65,0x08,0xad,0xe4] + vfnmadd213ss xmm28, xmm3, xmm20 + +// CHECK: vfnmadd213ss xmm28 {k3}, xmm3, xmm20 +// CHECK: encoding: [0x62,0x22,0x65,0x0b,0xad,0xe4] + vfnmadd213ss xmm28 {k3}, xmm3, xmm20 + +// CHECK: vfnmadd213ss xmm28 {k3} {z}, xmm3, xmm20 +// CHECK: encoding: [0x62,0x22,0x65,0x8b,0xad,0xe4] + vfnmadd213ss xmm28 {k3} {z}, xmm3, xmm20 + +// CHECK: vfnmadd213ss xmm28, xmm3, xmm20, {rn-sae} +// CHECK: encoding: [0x62,0x22,0x65,0x18,0xad,0xe4] + vfnmadd213ss xmm28, xmm3, xmm20, {rn-sae} + +// CHECK: vfnmadd213ss xmm28, xmm3, xmm20, {ru-sae} +// CHECK: encoding: [0x62,0x22,0x65,0x58,0xad,0xe4] + vfnmadd213ss xmm28, xmm3, xmm20, {ru-sae} + +// CHECK: vfnmadd213ss xmm28, xmm3, xmm20, {rd-sae} +// CHECK: encoding: [0x62,0x22,0x65,0x38,0xad,0xe4] + vfnmadd213ss xmm28, xmm3, xmm20, {rd-sae} + +// CHECK: vfnmadd213ss xmm28, xmm3, xmm20, {rz-sae} +// CHECK: encoding: [0x62,0x22,0x65,0x78,0xad,0xe4] + vfnmadd213ss xmm28, xmm3, xmm20, {rz-sae} + +// CHECK: vfnmadd213ss xmm28, xmm3, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xad,0x21] + vfnmadd213ss xmm28, xmm3, dword ptr [rcx] + +// CHECK: vfnmadd213ss xmm28, xmm3, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x65,0x08,0xad,0xa4,0xf0,0x34,0x12,0x00,0x00] + vfnmadd213ss xmm28, xmm3, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd213ss xmm28, xmm3, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xad,0x62,0x7f] + vfnmadd213ss xmm28, xmm3, dword ptr [rdx + 508] + +// CHECK: vfnmadd213ss xmm28, xmm3, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xad,0xa2,0x00,0x02,0x00,0x00] + vfnmadd213ss xmm28, xmm3, dword ptr [rdx + 512] + +// CHECK: vfnmadd213ss xmm28, xmm3, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xad,0x62,0x80] + vfnmadd213ss xmm28, xmm3, dword ptr [rdx - 512] + +// CHECK: vfnmadd213ss xmm28, xmm3, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x65,0x08,0xad,0xa2,0xfc,0xfd,0xff,0xff] + vfnmadd213ss xmm28, xmm3, dword ptr [rdx - 516] + +// CHECK: vfnmadd231pd zmm15, zmm5, zmm22 +// CHECK: encoding: [0x62,0x32,0xd5,0x48,0xbc,0xfe] + vfnmadd231pd zmm15, zmm5, zmm22 + +// CHECK: vfnmadd231pd zmm15 {k7}, zmm5, zmm22 +// CHECK: encoding: [0x62,0x32,0xd5,0x4f,0xbc,0xfe] + vfnmadd231pd zmm15 {k7}, zmm5, zmm22 + +// CHECK: vfnmadd231pd zmm15 {k7} {z}, zmm5, zmm22 +// CHECK: encoding: [0x62,0x32,0xd5,0xcf,0xbc,0xfe] + vfnmadd231pd zmm15 {k7} {z}, zmm5, zmm22 + +// CHECK: vfnmadd231pd zmm15, zmm5, zmm22, {rn-sae} +// CHECK: encoding: [0x62,0x32,0xd5,0x18,0xbc,0xfe] + vfnmadd231pd zmm15, zmm5, zmm22, {rn-sae} + +// CHECK: vfnmadd231pd zmm15, zmm5, zmm22, {ru-sae} +// CHECK: encoding: [0x62,0x32,0xd5,0x58,0xbc,0xfe] + vfnmadd231pd zmm15, zmm5, zmm22, {ru-sae} + +// CHECK: vfnmadd231pd zmm15, zmm5, zmm22, {rd-sae} +// CHECK: encoding: [0x62,0x32,0xd5,0x38,0xbc,0xfe] + vfnmadd231pd zmm15, zmm5, zmm22, {rd-sae} + +// CHECK: vfnmadd231pd zmm15, zmm5, zmm22, {rz-sae} +// CHECK: encoding: [0x62,0x32,0xd5,0x78,0xbc,0xfe] + vfnmadd231pd zmm15, zmm5, zmm22, {rz-sae} + +// CHECK: vfnmadd231pd zmm15, zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xd5,0x48,0xbc,0x39] + vfnmadd231pd zmm15, zmm5, zmmword ptr [rcx] + +// CHECK: vfnmadd231pd zmm15, zmm5, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0xd5,0x48,0xbc,0xbc,0xf0,0x34,0x12,0x00,0x00] + vfnmadd231pd zmm15, zmm5, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd231pd zmm15, zmm5, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xd5,0x58,0xbc,0x39] + vfnmadd231pd zmm15, zmm5, qword ptr [rcx]{1to8} + +// CHECK: vfnmadd231pd zmm15, zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xd5,0x48,0xbc,0x7a,0x7f] + vfnmadd231pd zmm15, zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd231pd zmm15, zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xd5,0x48,0xbc,0xba,0x00,0x20,0x00,0x00] + vfnmadd231pd zmm15, zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd231pd zmm15, zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xd5,0x48,0xbc,0x7a,0x80] + vfnmadd231pd zmm15, zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd231pd zmm15, zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xd5,0x48,0xbc,0xba,0xc0,0xdf,0xff,0xff] + vfnmadd231pd zmm15, zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd231pd zmm15, zmm5, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xd5,0x58,0xbc,0x7a,0x7f] + vfnmadd231pd zmm15, zmm5, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmadd231pd zmm15, zmm5, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xd5,0x58,0xbc,0xba,0x00,0x04,0x00,0x00] + vfnmadd231pd zmm15, zmm5, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmadd231pd zmm15, zmm5, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xd5,0x58,0xbc,0x7a,0x80] + vfnmadd231pd zmm15, zmm5, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmadd231pd zmm15, zmm5, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xd5,0x58,0xbc,0xba,0xf8,0xfb,0xff,0xff] + vfnmadd231pd zmm15, zmm5, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmadd231ps zmm13, zmm28, zmm9 +// CHECK: encoding: [0x62,0x52,0x1d,0x40,0xbc,0xe9] + vfnmadd231ps zmm13, zmm28, zmm9 + +// CHECK: vfnmadd231ps zmm13 {k3}, zmm28, zmm9 +// CHECK: encoding: [0x62,0x52,0x1d,0x43,0xbc,0xe9] + vfnmadd231ps zmm13 {k3}, zmm28, zmm9 + +// CHECK: vfnmadd231ps zmm13 {k3} {z}, zmm28, zmm9 +// CHECK: encoding: [0x62,0x52,0x1d,0xc3,0xbc,0xe9] + vfnmadd231ps zmm13 {k3} {z}, zmm28, zmm9 + +// CHECK: vfnmadd231ps zmm13, zmm28, zmm9, {rn-sae} +// CHECK: encoding: [0x62,0x52,0x1d,0x10,0xbc,0xe9] + vfnmadd231ps zmm13, zmm28, zmm9, {rn-sae} + +// CHECK: vfnmadd231ps zmm13, zmm28, zmm9, {ru-sae} +// CHECK: encoding: [0x62,0x52,0x1d,0x50,0xbc,0xe9] + vfnmadd231ps zmm13, zmm28, zmm9, {ru-sae} + +// CHECK: vfnmadd231ps zmm13, zmm28, zmm9, {rd-sae} +// CHECK: encoding: [0x62,0x52,0x1d,0x30,0xbc,0xe9] + vfnmadd231ps zmm13, zmm28, zmm9, {rd-sae} + +// CHECK: vfnmadd231ps zmm13, zmm28, zmm9, {rz-sae} +// CHECK: encoding: [0x62,0x52,0x1d,0x70,0xbc,0xe9] + vfnmadd231ps zmm13, zmm28, zmm9, {rz-sae} + +// CHECK: vfnmadd231ps zmm13, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0xbc,0x29] + vfnmadd231ps zmm13, zmm28, zmmword ptr [rcx] + +// CHECK: vfnmadd231ps zmm13, zmm28, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x1d,0x40,0xbc,0xac,0xf0,0x34,0x12,0x00,0x00] + vfnmadd231ps zmm13, zmm28, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd231ps zmm13, zmm28, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0xbc,0x29] + vfnmadd231ps zmm13, zmm28, dword ptr [rcx]{1to16} + +// CHECK: vfnmadd231ps zmm13, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0xbc,0x6a,0x7f] + vfnmadd231ps zmm13, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vfnmadd231ps zmm13, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0xbc,0xaa,0x00,0x20,0x00,0x00] + vfnmadd231ps zmm13, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vfnmadd231ps zmm13, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0xbc,0x6a,0x80] + vfnmadd231ps zmm13, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vfnmadd231ps zmm13, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x1d,0x40,0xbc,0xaa,0xc0,0xdf,0xff,0xff] + vfnmadd231ps zmm13, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vfnmadd231ps zmm13, zmm28, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0xbc,0x6a,0x7f] + vfnmadd231ps zmm13, zmm28, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmadd231ps zmm13, zmm28, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0xbc,0xaa,0x00,0x02,0x00,0x00] + vfnmadd231ps zmm13, zmm28, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmadd231ps zmm13, zmm28, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0xbc,0x6a,0x80] + vfnmadd231ps zmm13, zmm28, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmadd231ps zmm13, zmm28, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x1d,0x50,0xbc,0xaa,0xfc,0xfd,0xff,0xff] + vfnmadd231ps zmm13, zmm28, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmadd231sd xmm14, xmm5, xmm5 +// CHECK: encoding: [0xc4,0x62,0xd1,0xbd,0xf5] + vfnmadd231sd xmm14, xmm5, xmm5 + +// CHECK: vfnmadd231sd xmm14 {k7}, xmm5, xmm5 +// CHECK: encoding: [0x62,0x72,0xd5,0x0f,0xbd,0xf5] + vfnmadd231sd xmm14 {k7}, xmm5, xmm5 + +// CHECK: vfnmadd231sd xmm14 {k7} {z}, xmm5, xmm5 +// CHECK: encoding: [0x62,0x72,0xd5,0x8f,0xbd,0xf5] + vfnmadd231sd xmm14 {k7} {z}, xmm5, xmm5 + +// CHECK: vfnmadd231sd xmm14, xmm5, xmm5, {rn-sae} +// CHECK: encoding: [0x62,0x72,0xd5,0x18,0xbd,0xf5] + vfnmadd231sd xmm14, xmm5, xmm5, {rn-sae} + +// CHECK: vfnmadd231sd xmm14, xmm5, xmm5, {ru-sae} +// CHECK: encoding: [0x62,0x72,0xd5,0x58,0xbd,0xf5] + vfnmadd231sd xmm14, xmm5, xmm5, {ru-sae} + +// CHECK: vfnmadd231sd xmm14, xmm5, xmm5, {rd-sae} +// CHECK: encoding: [0x62,0x72,0xd5,0x38,0xbd,0xf5] + vfnmadd231sd xmm14, xmm5, xmm5, {rd-sae} + +// CHECK: vfnmadd231sd xmm14, xmm5, xmm5, {rz-sae} +// CHECK: encoding: [0x62,0x72,0xd5,0x78,0xbd,0xf5] + vfnmadd231sd xmm14, xmm5, xmm5, {rz-sae} + +// CHECK: vfnmadd231sd xmm14, xmm5, qword ptr [rcx] +// CHECK: encoding: [0xc4,0x62,0xd1,0xbd,0x31] + vfnmadd231sd xmm14, xmm5, qword ptr [rcx] + +// CHECK: vfnmadd231sd xmm14, xmm5, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0x22,0xd1,0xbd,0xb4,0xf0,0x34,0x12,0x00,0x00] + vfnmadd231sd xmm14, xmm5, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd231sd xmm14, xmm5, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0x62,0xd1,0xbd,0xb2,0xf8,0x03,0x00,0x00] + vfnmadd231sd xmm14, xmm5, qword ptr [rdx + 1016] + +// CHECK: vfnmadd231sd xmm14, xmm5, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0x62,0xd1,0xbd,0xb2,0x00,0x04,0x00,0x00] + vfnmadd231sd xmm14, xmm5, qword ptr [rdx + 1024] + +// CHECK: vfnmadd231sd xmm14, xmm5, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0x62,0xd1,0xbd,0xb2,0x00,0xfc,0xff,0xff] + vfnmadd231sd xmm14, xmm5, qword ptr [rdx - 1024] + +// CHECK: vfnmadd231sd xmm14, xmm5, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0x62,0xd1,0xbd,0xb2,0xf8,0xfb,0xff,0xff] + vfnmadd231sd xmm14, xmm5, qword ptr [rdx - 1032] + +// CHECK: vfnmadd231ss xmm25, xmm16, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x00,0xbd,0xc9] + vfnmadd231ss xmm25, xmm16, xmm25 + +// CHECK: vfnmadd231ss xmm25 {k6}, xmm16, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x06,0xbd,0xc9] + vfnmadd231ss xmm25 {k6}, xmm16, xmm25 + +// CHECK: vfnmadd231ss xmm25 {k6} {z}, xmm16, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x86,0xbd,0xc9] + vfnmadd231ss xmm25 {k6} {z}, xmm16, xmm25 + +// CHECK: vfnmadd231ss xmm25, xmm16, xmm25, {rn-sae} +// CHECK: encoding: [0x62,0x02,0x7d,0x10,0xbd,0xc9] + vfnmadd231ss xmm25, xmm16, xmm25, {rn-sae} + +// CHECK: vfnmadd231ss xmm25, xmm16, xmm25, {ru-sae} +// CHECK: encoding: [0x62,0x02,0x7d,0x50,0xbd,0xc9] + vfnmadd231ss xmm25, xmm16, xmm25, {ru-sae} + +// CHECK: vfnmadd231ss xmm25, xmm16, xmm25, {rd-sae} +// CHECK: encoding: [0x62,0x02,0x7d,0x30,0xbd,0xc9] + vfnmadd231ss xmm25, xmm16, xmm25, {rd-sae} + +// CHECK: vfnmadd231ss xmm25, xmm16, xmm25, {rz-sae} +// CHECK: encoding: [0x62,0x02,0x7d,0x70,0xbd,0xc9] + vfnmadd231ss xmm25, xmm16, xmm25, {rz-sae} + +// CHECK: vfnmadd231ss xmm25, xmm16, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x00,0xbd,0x09] + vfnmadd231ss xmm25, xmm16, dword ptr [rcx] + +// CHECK: vfnmadd231ss xmm25, xmm16, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x7d,0x00,0xbd,0x8c,0xf0,0x34,0x12,0x00,0x00] + vfnmadd231ss xmm25, xmm16, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmadd231ss xmm25, xmm16, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x7d,0x00,0xbd,0x4a,0x7f] + vfnmadd231ss xmm25, xmm16, dword ptr [rdx + 508] + +// CHECK: vfnmadd231ss xmm25, xmm16, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x7d,0x00,0xbd,0x8a,0x00,0x02,0x00,0x00] + vfnmadd231ss xmm25, xmm16, dword ptr [rdx + 512] + +// CHECK: vfnmadd231ss xmm25, xmm16, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x7d,0x00,0xbd,0x4a,0x80] + vfnmadd231ss xmm25, xmm16, dword ptr [rdx - 512] + +// CHECK: vfnmadd231ss xmm25, xmm16, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x7d,0x00,0xbd,0x8a,0xfc,0xfd,0xff,0xff] + vfnmadd231ss xmm25, xmm16, dword ptr [rdx - 516] + +// CHECK: vfnmsub132pd zmm27, zmm8, zmm9 +// CHECK: encoding: [0x62,0x42,0xbd,0x48,0x9e,0xd9] + vfnmsub132pd zmm27, zmm8, zmm9 + +// CHECK: vfnmsub132pd zmm27 {k4}, zmm8, zmm9 +// CHECK: encoding: [0x62,0x42,0xbd,0x4c,0x9e,0xd9] + vfnmsub132pd zmm27 {k4}, zmm8, zmm9 + +// CHECK: vfnmsub132pd zmm27 {k4} {z}, zmm8, zmm9 +// CHECK: encoding: [0x62,0x42,0xbd,0xcc,0x9e,0xd9] + vfnmsub132pd zmm27 {k4} {z}, zmm8, zmm9 + +// CHECK: vfnmsub132pd zmm27, zmm8, zmm9, {rn-sae} +// CHECK: encoding: [0x62,0x42,0xbd,0x18,0x9e,0xd9] + vfnmsub132pd zmm27, zmm8, zmm9, {rn-sae} + +// CHECK: vfnmsub132pd zmm27, zmm8, zmm9, {ru-sae} +// CHECK: encoding: [0x62,0x42,0xbd,0x58,0x9e,0xd9] + vfnmsub132pd zmm27, zmm8, zmm9, {ru-sae} + +// CHECK: vfnmsub132pd zmm27, zmm8, zmm9, {rd-sae} +// CHECK: encoding: [0x62,0x42,0xbd,0x38,0x9e,0xd9] + vfnmsub132pd zmm27, zmm8, zmm9, {rd-sae} + +// CHECK: vfnmsub132pd zmm27, zmm8, zmm9, {rz-sae} +// CHECK: encoding: [0x62,0x42,0xbd,0x78,0x9e,0xd9] + vfnmsub132pd zmm27, zmm8, zmm9, {rz-sae} + +// CHECK: vfnmsub132pd zmm27, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xbd,0x48,0x9e,0x19] + vfnmsub132pd zmm27, zmm8, zmmword ptr [rcx] + +// CHECK: vfnmsub132pd zmm27, zmm8, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xbd,0x48,0x9e,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfnmsub132pd zmm27, zmm8, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub132pd zmm27, zmm8, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xbd,0x58,0x9e,0x19] + vfnmsub132pd zmm27, zmm8, qword ptr [rcx]{1to8} + +// CHECK: vfnmsub132pd zmm27, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xbd,0x48,0x9e,0x5a,0x7f] + vfnmsub132pd zmm27, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub132pd zmm27, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xbd,0x48,0x9e,0x9a,0x00,0x20,0x00,0x00] + vfnmsub132pd zmm27, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub132pd zmm27, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xbd,0x48,0x9e,0x5a,0x80] + vfnmsub132pd zmm27, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub132pd zmm27, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xbd,0x48,0x9e,0x9a,0xc0,0xdf,0xff,0xff] + vfnmsub132pd zmm27, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub132pd zmm27, zmm8, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xbd,0x58,0x9e,0x5a,0x7f] + vfnmsub132pd zmm27, zmm8, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmsub132pd zmm27, zmm8, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xbd,0x58,0x9e,0x9a,0x00,0x04,0x00,0x00] + vfnmsub132pd zmm27, zmm8, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmsub132pd zmm27, zmm8, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xbd,0x58,0x9e,0x5a,0x80] + vfnmsub132pd zmm27, zmm8, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmsub132pd zmm27, zmm8, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xbd,0x58,0x9e,0x9a,0xf8,0xfb,0xff,0xff] + vfnmsub132pd zmm27, zmm8, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmsub132ps zmm26, zmm11, zmm9 +// CHECK: encoding: [0x62,0x42,0x25,0x48,0x9e,0xd1] + vfnmsub132ps zmm26, zmm11, zmm9 + +// CHECK: vfnmsub132ps zmm26 {k4}, zmm11, zmm9 +// CHECK: encoding: [0x62,0x42,0x25,0x4c,0x9e,0xd1] + vfnmsub132ps zmm26 {k4}, zmm11, zmm9 + +// CHECK: vfnmsub132ps zmm26 {k4} {z}, zmm11, zmm9 +// CHECK: encoding: [0x62,0x42,0x25,0xcc,0x9e,0xd1] + vfnmsub132ps zmm26 {k4} {z}, zmm11, zmm9 + +// CHECK: vfnmsub132ps zmm26, zmm11, zmm9, {rn-sae} +// CHECK: encoding: [0x62,0x42,0x25,0x18,0x9e,0xd1] + vfnmsub132ps zmm26, zmm11, zmm9, {rn-sae} + +// CHECK: vfnmsub132ps zmm26, zmm11, zmm9, {ru-sae} +// CHECK: encoding: [0x62,0x42,0x25,0x58,0x9e,0xd1] + vfnmsub132ps zmm26, zmm11, zmm9, {ru-sae} + +// CHECK: vfnmsub132ps zmm26, zmm11, zmm9, {rd-sae} +// CHECK: encoding: [0x62,0x42,0x25,0x38,0x9e,0xd1] + vfnmsub132ps zmm26, zmm11, zmm9, {rd-sae} + +// CHECK: vfnmsub132ps zmm26, zmm11, zmm9, {rz-sae} +// CHECK: encoding: [0x62,0x42,0x25,0x78,0x9e,0xd1] + vfnmsub132ps zmm26, zmm11, zmm9, {rz-sae} + +// CHECK: vfnmsub132ps zmm26, zmm11, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x25,0x48,0x9e,0x11] + vfnmsub132ps zmm26, zmm11, zmmword ptr [rcx] + +// CHECK: vfnmsub132ps zmm26, zmm11, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x25,0x48,0x9e,0x94,0xf0,0x34,0x12,0x00,0x00] + vfnmsub132ps zmm26, zmm11, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub132ps zmm26, zmm11, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x25,0x58,0x9e,0x11] + vfnmsub132ps zmm26, zmm11, dword ptr [rcx]{1to16} + +// CHECK: vfnmsub132ps zmm26, zmm11, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x25,0x48,0x9e,0x52,0x7f] + vfnmsub132ps zmm26, zmm11, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub132ps zmm26, zmm11, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x25,0x48,0x9e,0x92,0x00,0x20,0x00,0x00] + vfnmsub132ps zmm26, zmm11, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub132ps zmm26, zmm11, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x25,0x48,0x9e,0x52,0x80] + vfnmsub132ps zmm26, zmm11, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub132ps zmm26, zmm11, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x25,0x48,0x9e,0x92,0xc0,0xdf,0xff,0xff] + vfnmsub132ps zmm26, zmm11, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub132ps zmm26, zmm11, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x25,0x58,0x9e,0x52,0x7f] + vfnmsub132ps zmm26, zmm11, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmsub132ps zmm26, zmm11, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x25,0x58,0x9e,0x92,0x00,0x02,0x00,0x00] + vfnmsub132ps zmm26, zmm11, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmsub132ps zmm26, zmm11, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x25,0x58,0x9e,0x52,0x80] + vfnmsub132ps zmm26, zmm11, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmsub132ps zmm26, zmm11, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x25,0x58,0x9e,0x92,0xfc,0xfd,0xff,0xff] + vfnmsub132ps zmm26, zmm11, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmsub132sd xmm3, xmm8, xmm19 +// CHECK: encoding: [0x62,0xb2,0xbd,0x08,0x9f,0xdb] + vfnmsub132sd xmm3, xmm8, xmm19 + +// CHECK: vfnmsub132sd xmm3 {k3}, xmm8, xmm19 +// CHECK: encoding: [0x62,0xb2,0xbd,0x0b,0x9f,0xdb] + vfnmsub132sd xmm3 {k3}, xmm8, xmm19 + +// CHECK: vfnmsub132sd xmm3 {k3} {z}, xmm8, xmm19 +// CHECK: encoding: [0x62,0xb2,0xbd,0x8b,0x9f,0xdb] + vfnmsub132sd xmm3 {k3} {z}, xmm8, xmm19 + +// CHECK: vfnmsub132sd xmm3, xmm8, xmm19, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0xbd,0x18,0x9f,0xdb] + vfnmsub132sd xmm3, xmm8, xmm19, {rn-sae} + +// CHECK: vfnmsub132sd xmm3, xmm8, xmm19, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0xbd,0x58,0x9f,0xdb] + vfnmsub132sd xmm3, xmm8, xmm19, {ru-sae} + +// CHECK: vfnmsub132sd xmm3, xmm8, xmm19, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0xbd,0x38,0x9f,0xdb] + vfnmsub132sd xmm3, xmm8, xmm19, {rd-sae} + +// CHECK: vfnmsub132sd xmm3, xmm8, xmm19, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0xbd,0x78,0x9f,0xdb] + vfnmsub132sd xmm3, xmm8, xmm19, {rz-sae} + +// CHECK: vfnmsub132sd xmm3, xmm8, qword ptr [rcx] +// CHECK: encoding: [0xc4,0xe2,0xb9,0x9f,0x19] + vfnmsub132sd xmm3, xmm8, qword ptr [rcx] + +// CHECK: vfnmsub132sd xmm3, xmm8, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa2,0xb9,0x9f,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfnmsub132sd xmm3, xmm8, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub132sd xmm3, xmm8, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc4,0xe2,0xb9,0x9f,0x9a,0xf8,0x03,0x00,0x00] + vfnmsub132sd xmm3, xmm8, qword ptr [rdx + 1016] + +// CHECK: vfnmsub132sd xmm3, xmm8, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc4,0xe2,0xb9,0x9f,0x9a,0x00,0x04,0x00,0x00] + vfnmsub132sd xmm3, xmm8, qword ptr [rdx + 1024] + +// CHECK: vfnmsub132sd xmm3, xmm8, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc4,0xe2,0xb9,0x9f,0x9a,0x00,0xfc,0xff,0xff] + vfnmsub132sd xmm3, xmm8, qword ptr [rdx - 1024] + +// CHECK: vfnmsub132sd xmm3, xmm8, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc4,0xe2,0xb9,0x9f,0x9a,0xf8,0xfb,0xff,0xff] + vfnmsub132sd xmm3, xmm8, qword ptr [rdx - 1032] + +// CHECK: vfnmsub132ss xmm19, xmm17, xmm6 +// CHECK: encoding: [0x62,0xe2,0x75,0x00,0x9f,0xde] + vfnmsub132ss xmm19, xmm17, xmm6 + +// CHECK: vfnmsub132ss xmm19 {k1}, xmm17, xmm6 +// CHECK: encoding: [0x62,0xe2,0x75,0x01,0x9f,0xde] + vfnmsub132ss xmm19 {k1}, xmm17, xmm6 + +// CHECK: vfnmsub132ss xmm19 {k1} {z}, xmm17, xmm6 +// CHECK: encoding: [0x62,0xe2,0x75,0x81,0x9f,0xde] + vfnmsub132ss xmm19 {k1} {z}, xmm17, xmm6 + +// CHECK: vfnmsub132ss xmm19, xmm17, xmm6, {rn-sae} +// CHECK: encoding: [0x62,0xe2,0x75,0x10,0x9f,0xde] + vfnmsub132ss xmm19, xmm17, xmm6, {rn-sae} + +// CHECK: vfnmsub132ss xmm19, xmm17, xmm6, {ru-sae} +// CHECK: encoding: [0x62,0xe2,0x75,0x50,0x9f,0xde] + vfnmsub132ss xmm19, xmm17, xmm6, {ru-sae} + +// CHECK: vfnmsub132ss xmm19, xmm17, xmm6, {rd-sae} +// CHECK: encoding: [0x62,0xe2,0x75,0x30,0x9f,0xde] + vfnmsub132ss xmm19, xmm17, xmm6, {rd-sae} + +// CHECK: vfnmsub132ss xmm19, xmm17, xmm6, {rz-sae} +// CHECK: encoding: [0x62,0xe2,0x75,0x70,0x9f,0xde] + vfnmsub132ss xmm19, xmm17, xmm6, {rz-sae} + +// CHECK: vfnmsub132ss xmm19, xmm17, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x75,0x00,0x9f,0x19] + vfnmsub132ss xmm19, xmm17, dword ptr [rcx] + +// CHECK: vfnmsub132ss xmm19, xmm17, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x75,0x00,0x9f,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfnmsub132ss xmm19, xmm17, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub132ss xmm19, xmm17, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x75,0x00,0x9f,0x5a,0x7f] + vfnmsub132ss xmm19, xmm17, dword ptr [rdx + 508] + +// CHECK: vfnmsub132ss xmm19, xmm17, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x75,0x00,0x9f,0x9a,0x00,0x02,0x00,0x00] + vfnmsub132ss xmm19, xmm17, dword ptr [rdx + 512] + +// CHECK: vfnmsub132ss xmm19, xmm17, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x75,0x00,0x9f,0x5a,0x80] + vfnmsub132ss xmm19, xmm17, dword ptr [rdx - 512] + +// CHECK: vfnmsub132ss xmm19, xmm17, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x75,0x00,0x9f,0x9a,0xfc,0xfd,0xff,0xff] + vfnmsub132ss xmm19, xmm17, dword ptr [rdx - 516] + +// CHECK: vfnmsub213pd zmm7, zmm8, zmm7 +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0xae,0xff] + vfnmsub213pd zmm7, zmm8, zmm7 + +// CHECK: vfnmsub213pd zmm7 {k5}, zmm8, zmm7 +// CHECK: encoding: [0x62,0xf2,0xbd,0x4d,0xae,0xff] + vfnmsub213pd zmm7 {k5}, zmm8, zmm7 + +// CHECK: vfnmsub213pd zmm7 {k5} {z}, zmm8, zmm7 +// CHECK: encoding: [0x62,0xf2,0xbd,0xcd,0xae,0xff] + vfnmsub213pd zmm7 {k5} {z}, zmm8, zmm7 + +// CHECK: vfnmsub213pd zmm7, zmm8, zmm7, {rn-sae} +// CHECK: encoding: [0x62,0xf2,0xbd,0x18,0xae,0xff] + vfnmsub213pd zmm7, zmm8, zmm7, {rn-sae} + +// CHECK: vfnmsub213pd zmm7, zmm8, zmm7, {ru-sae} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0xae,0xff] + vfnmsub213pd zmm7, zmm8, zmm7, {ru-sae} + +// CHECK: vfnmsub213pd zmm7, zmm8, zmm7, {rd-sae} +// CHECK: encoding: [0x62,0xf2,0xbd,0x38,0xae,0xff] + vfnmsub213pd zmm7, zmm8, zmm7, {rd-sae} + +// CHECK: vfnmsub213pd zmm7, zmm8, zmm7, {rz-sae} +// CHECK: encoding: [0x62,0xf2,0xbd,0x78,0xae,0xff] + vfnmsub213pd zmm7, zmm8, zmm7, {rz-sae} + +// CHECK: vfnmsub213pd zmm7, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0xae,0x39] + vfnmsub213pd zmm7, zmm8, zmmword ptr [rcx] + +// CHECK: vfnmsub213pd zmm7, zmm8, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xbd,0x48,0xae,0xbc,0xf0,0x34,0x12,0x00,0x00] + vfnmsub213pd zmm7, zmm8, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub213pd zmm7, zmm8, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0xae,0x39] + vfnmsub213pd zmm7, zmm8, qword ptr [rcx]{1to8} + +// CHECK: vfnmsub213pd zmm7, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0xae,0x7a,0x7f] + vfnmsub213pd zmm7, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub213pd zmm7, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0xae,0xba,0x00,0x20,0x00,0x00] + vfnmsub213pd zmm7, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub213pd zmm7, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0xae,0x7a,0x80] + vfnmsub213pd zmm7, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub213pd zmm7, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0xae,0xba,0xc0,0xdf,0xff,0xff] + vfnmsub213pd zmm7, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub213pd zmm7, zmm8, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0xae,0x7a,0x7f] + vfnmsub213pd zmm7, zmm8, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmsub213pd zmm7, zmm8, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0xae,0xba,0x00,0x04,0x00,0x00] + vfnmsub213pd zmm7, zmm8, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmsub213pd zmm7, zmm8, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0xae,0x7a,0x80] + vfnmsub213pd zmm7, zmm8, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmsub213pd zmm7, zmm8, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0xae,0xba,0xf8,0xfb,0xff,0xff] + vfnmsub213pd zmm7, zmm8, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmsub213ps zmm29, zmm24, zmm14 +// CHECK: encoding: [0x62,0x42,0x3d,0x40,0xae,0xee] + vfnmsub213ps zmm29, zmm24, zmm14 + +// CHECK: vfnmsub213ps zmm29 {k7}, zmm24, zmm14 +// CHECK: encoding: [0x62,0x42,0x3d,0x47,0xae,0xee] + vfnmsub213ps zmm29 {k7}, zmm24, zmm14 + +// CHECK: vfnmsub213ps zmm29 {k7} {z}, zmm24, zmm14 +// CHECK: encoding: [0x62,0x42,0x3d,0xc7,0xae,0xee] + vfnmsub213ps zmm29 {k7} {z}, zmm24, zmm14 + +// CHECK: vfnmsub213ps zmm29, zmm24, zmm14, {rn-sae} +// CHECK: encoding: [0x62,0x42,0x3d,0x10,0xae,0xee] + vfnmsub213ps zmm29, zmm24, zmm14, {rn-sae} + +// CHECK: vfnmsub213ps zmm29, zmm24, zmm14, {ru-sae} +// CHECK: encoding: [0x62,0x42,0x3d,0x50,0xae,0xee] + vfnmsub213ps zmm29, zmm24, zmm14, {ru-sae} + +// CHECK: vfnmsub213ps zmm29, zmm24, zmm14, {rd-sae} +// CHECK: encoding: [0x62,0x42,0x3d,0x30,0xae,0xee] + vfnmsub213ps zmm29, zmm24, zmm14, {rd-sae} + +// CHECK: vfnmsub213ps zmm29, zmm24, zmm14, {rz-sae} +// CHECK: encoding: [0x62,0x42,0x3d,0x70,0xae,0xee] + vfnmsub213ps zmm29, zmm24, zmm14, {rz-sae} + +// CHECK: vfnmsub213ps zmm29, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x3d,0x40,0xae,0x29] + vfnmsub213ps zmm29, zmm24, zmmword ptr [rcx] + +// CHECK: vfnmsub213ps zmm29, zmm24, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x3d,0x40,0xae,0xac,0xf0,0x34,0x12,0x00,0x00] + vfnmsub213ps zmm29, zmm24, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub213ps zmm29, zmm24, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x3d,0x50,0xae,0x29] + vfnmsub213ps zmm29, zmm24, dword ptr [rcx]{1to16} + +// CHECK: vfnmsub213ps zmm29, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x3d,0x40,0xae,0x6a,0x7f] + vfnmsub213ps zmm29, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub213ps zmm29, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x3d,0x40,0xae,0xaa,0x00,0x20,0x00,0x00] + vfnmsub213ps zmm29, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub213ps zmm29, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x3d,0x40,0xae,0x6a,0x80] + vfnmsub213ps zmm29, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub213ps zmm29, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x3d,0x40,0xae,0xaa,0xc0,0xdf,0xff,0xff] + vfnmsub213ps zmm29, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub213ps zmm29, zmm24, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x3d,0x50,0xae,0x6a,0x7f] + vfnmsub213ps zmm29, zmm24, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmsub213ps zmm29, zmm24, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x3d,0x50,0xae,0xaa,0x00,0x02,0x00,0x00] + vfnmsub213ps zmm29, zmm24, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmsub213ps zmm29, zmm24, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x3d,0x50,0xae,0x6a,0x80] + vfnmsub213ps zmm29, zmm24, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmsub213ps zmm29, zmm24, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x3d,0x50,0xae,0xaa,0xfc,0xfd,0xff,0xff] + vfnmsub213ps zmm29, zmm24, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmsub213sd xmm25, xmm8, xmm23 +// CHECK: encoding: [0x62,0x22,0xbd,0x08,0xaf,0xcf] + vfnmsub213sd xmm25, xmm8, xmm23 + +// CHECK: vfnmsub213sd xmm25 {k1}, xmm8, xmm23 +// CHECK: encoding: [0x62,0x22,0xbd,0x09,0xaf,0xcf] + vfnmsub213sd xmm25 {k1}, xmm8, xmm23 + +// CHECK: vfnmsub213sd xmm25 {k1} {z}, xmm8, xmm23 +// CHECK: encoding: [0x62,0x22,0xbd,0x89,0xaf,0xcf] + vfnmsub213sd xmm25 {k1} {z}, xmm8, xmm23 + +// CHECK: vfnmsub213sd xmm25, xmm8, xmm23, {rn-sae} +// CHECK: encoding: [0x62,0x22,0xbd,0x18,0xaf,0xcf] + vfnmsub213sd xmm25, xmm8, xmm23, {rn-sae} + +// CHECK: vfnmsub213sd xmm25, xmm8, xmm23, {ru-sae} +// CHECK: encoding: [0x62,0x22,0xbd,0x58,0xaf,0xcf] + vfnmsub213sd xmm25, xmm8, xmm23, {ru-sae} + +// CHECK: vfnmsub213sd xmm25, xmm8, xmm23, {rd-sae} +// CHECK: encoding: [0x62,0x22,0xbd,0x38,0xaf,0xcf] + vfnmsub213sd xmm25, xmm8, xmm23, {rd-sae} + +// CHECK: vfnmsub213sd xmm25, xmm8, xmm23, {rz-sae} +// CHECK: encoding: [0x62,0x22,0xbd,0x78,0xaf,0xcf] + vfnmsub213sd xmm25, xmm8, xmm23, {rz-sae} + +// CHECK: vfnmsub213sd xmm25, xmm8, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xbd,0x08,0xaf,0x09] + vfnmsub213sd xmm25, xmm8, qword ptr [rcx] + +// CHECK: vfnmsub213sd xmm25, xmm8, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xbd,0x08,0xaf,0x8c,0xf0,0x34,0x12,0x00,0x00] + vfnmsub213sd xmm25, xmm8, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub213sd xmm25, xmm8, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xbd,0x08,0xaf,0x4a,0x7f] + vfnmsub213sd xmm25, xmm8, qword ptr [rdx + 1016] + +// CHECK: vfnmsub213sd xmm25, xmm8, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xbd,0x08,0xaf,0x8a,0x00,0x04,0x00,0x00] + vfnmsub213sd xmm25, xmm8, qword ptr [rdx + 1024] + +// CHECK: vfnmsub213sd xmm25, xmm8, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xbd,0x08,0xaf,0x4a,0x80] + vfnmsub213sd xmm25, xmm8, qword ptr [rdx - 1024] + +// CHECK: vfnmsub213sd xmm25, xmm8, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xbd,0x08,0xaf,0x8a,0xf8,0xfb,0xff,0xff] + vfnmsub213sd xmm25, xmm8, qword ptr [rdx - 1032] + +// CHECK: vfnmsub213ss xmm24, xmm20, xmm15 +// CHECK: encoding: [0x62,0x42,0x5d,0x00,0xaf,0xc7] + vfnmsub213ss xmm24, xmm20, xmm15 + +// CHECK: vfnmsub213ss xmm24 {k6}, xmm20, xmm15 +// CHECK: encoding: [0x62,0x42,0x5d,0x06,0xaf,0xc7] + vfnmsub213ss xmm24 {k6}, xmm20, xmm15 + +// CHECK: vfnmsub213ss xmm24 {k6} {z}, xmm20, xmm15 +// CHECK: encoding: [0x62,0x42,0x5d,0x86,0xaf,0xc7] + vfnmsub213ss xmm24 {k6} {z}, xmm20, xmm15 + +// CHECK: vfnmsub213ss xmm24, xmm20, xmm15, {rn-sae} +// CHECK: encoding: [0x62,0x42,0x5d,0x10,0xaf,0xc7] + vfnmsub213ss xmm24, xmm20, xmm15, {rn-sae} + +// CHECK: vfnmsub213ss xmm24, xmm20, xmm15, {ru-sae} +// CHECK: encoding: [0x62,0x42,0x5d,0x50,0xaf,0xc7] + vfnmsub213ss xmm24, xmm20, xmm15, {ru-sae} + +// CHECK: vfnmsub213ss xmm24, xmm20, xmm15, {rd-sae} +// CHECK: encoding: [0x62,0x42,0x5d,0x30,0xaf,0xc7] + vfnmsub213ss xmm24, xmm20, xmm15, {rd-sae} + +// CHECK: vfnmsub213ss xmm24, xmm20, xmm15, {rz-sae} +// CHECK: encoding: [0x62,0x42,0x5d,0x70,0xaf,0xc7] + vfnmsub213ss xmm24, xmm20, xmm15, {rz-sae} + +// CHECK: vfnmsub213ss xmm24, xmm20, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0xaf,0x01] + vfnmsub213ss xmm24, xmm20, dword ptr [rcx] + +// CHECK: vfnmsub213ss xmm24, xmm20, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x5d,0x00,0xaf,0x84,0xf0,0x34,0x12,0x00,0x00] + vfnmsub213ss xmm24, xmm20, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub213ss xmm24, xmm20, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0xaf,0x42,0x7f] + vfnmsub213ss xmm24, xmm20, dword ptr [rdx + 508] + +// CHECK: vfnmsub213ss xmm24, xmm20, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0xaf,0x82,0x00,0x02,0x00,0x00] + vfnmsub213ss xmm24, xmm20, dword ptr [rdx + 512] + +// CHECK: vfnmsub213ss xmm24, xmm20, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0xaf,0x42,0x80] + vfnmsub213ss xmm24, xmm20, dword ptr [rdx - 512] + +// CHECK: vfnmsub213ss xmm24, xmm20, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x5d,0x00,0xaf,0x82,0xfc,0xfd,0xff,0xff] + vfnmsub213ss xmm24, xmm20, dword ptr [rdx - 516] + +// CHECK: vfnmsub231pd zmm1, zmm10, zmm12 +// CHECK: encoding: [0x62,0xd2,0xad,0x48,0xbe,0xcc] + vfnmsub231pd zmm1, zmm10, zmm12 + +// CHECK: vfnmsub231pd zmm1 {k5}, zmm10, zmm12 +// CHECK: encoding: [0x62,0xd2,0xad,0x4d,0xbe,0xcc] + vfnmsub231pd zmm1 {k5}, zmm10, zmm12 + +// CHECK: vfnmsub231pd zmm1 {k5} {z}, zmm10, zmm12 +// CHECK: encoding: [0x62,0xd2,0xad,0xcd,0xbe,0xcc] + vfnmsub231pd zmm1 {k5} {z}, zmm10, zmm12 + +// CHECK: vfnmsub231pd zmm1, zmm10, zmm12, {rn-sae} +// CHECK: encoding: [0x62,0xd2,0xad,0x18,0xbe,0xcc] + vfnmsub231pd zmm1, zmm10, zmm12, {rn-sae} + +// CHECK: vfnmsub231pd zmm1, zmm10, zmm12, {ru-sae} +// CHECK: encoding: [0x62,0xd2,0xad,0x58,0xbe,0xcc] + vfnmsub231pd zmm1, zmm10, zmm12, {ru-sae} + +// CHECK: vfnmsub231pd zmm1, zmm10, zmm12, {rd-sae} +// CHECK: encoding: [0x62,0xd2,0xad,0x38,0xbe,0xcc] + vfnmsub231pd zmm1, zmm10, zmm12, {rd-sae} + +// CHECK: vfnmsub231pd zmm1, zmm10, zmm12, {rz-sae} +// CHECK: encoding: [0x62,0xd2,0xad,0x78,0xbe,0xcc] + vfnmsub231pd zmm1, zmm10, zmm12, {rz-sae} + +// CHECK: vfnmsub231pd zmm1, zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xbe,0x09] + vfnmsub231pd zmm1, zmm10, zmmword ptr [rcx] + +// CHECK: vfnmsub231pd zmm1, zmm10, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xad,0x48,0xbe,0x8c,0xf0,0x34,0x12,0x00,0x00] + vfnmsub231pd zmm1, zmm10, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub231pd zmm1, zmm10, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xbe,0x09] + vfnmsub231pd zmm1, zmm10, qword ptr [rcx]{1to8} + +// CHECK: vfnmsub231pd zmm1, zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xbe,0x4a,0x7f] + vfnmsub231pd zmm1, zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub231pd zmm1, zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xbe,0x8a,0x00,0x20,0x00,0x00] + vfnmsub231pd zmm1, zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub231pd zmm1, zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xbe,0x4a,0x80] + vfnmsub231pd zmm1, zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub231pd zmm1, zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xad,0x48,0xbe,0x8a,0xc0,0xdf,0xff,0xff] + vfnmsub231pd zmm1, zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub231pd zmm1, zmm10, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xbe,0x4a,0x7f] + vfnmsub231pd zmm1, zmm10, qword ptr [rdx + 1016]{1to8} + +// CHECK: vfnmsub231pd zmm1, zmm10, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xbe,0x8a,0x00,0x04,0x00,0x00] + vfnmsub231pd zmm1, zmm10, qword ptr [rdx + 1024]{1to8} + +// CHECK: vfnmsub231pd zmm1, zmm10, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xbe,0x4a,0x80] + vfnmsub231pd zmm1, zmm10, qword ptr [rdx - 1024]{1to8} + +// CHECK: vfnmsub231pd zmm1, zmm10, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xad,0x58,0xbe,0x8a,0xf8,0xfb,0xff,0xff] + vfnmsub231pd zmm1, zmm10, qword ptr [rdx - 1032]{1to8} + +// CHECK: vfnmsub231ps zmm17, zmm26, zmm19 +// CHECK: encoding: [0x62,0xa2,0x2d,0x40,0xbe,0xcb] + vfnmsub231ps zmm17, zmm26, zmm19 + +// CHECK: vfnmsub231ps zmm17 {k4}, zmm26, zmm19 +// CHECK: encoding: [0x62,0xa2,0x2d,0x44,0xbe,0xcb] + vfnmsub231ps zmm17 {k4}, zmm26, zmm19 + +// CHECK: vfnmsub231ps zmm17 {k4} {z}, zmm26, zmm19 +// CHECK: encoding: [0x62,0xa2,0x2d,0xc4,0xbe,0xcb] + vfnmsub231ps zmm17 {k4} {z}, zmm26, zmm19 + +// CHECK: vfnmsub231ps zmm17, zmm26, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0xa2,0x2d,0x10,0xbe,0xcb] + vfnmsub231ps zmm17, zmm26, zmm19, {rn-sae} + +// CHECK: vfnmsub231ps zmm17, zmm26, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0xa2,0x2d,0x50,0xbe,0xcb] + vfnmsub231ps zmm17, zmm26, zmm19, {ru-sae} + +// CHECK: vfnmsub231ps zmm17, zmm26, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0xa2,0x2d,0x30,0xbe,0xcb] + vfnmsub231ps zmm17, zmm26, zmm19, {rd-sae} + +// CHECK: vfnmsub231ps zmm17, zmm26, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0xa2,0x2d,0x70,0xbe,0xcb] + vfnmsub231ps zmm17, zmm26, zmm19, {rz-sae} + +// CHECK: vfnmsub231ps zmm17, zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x2d,0x40,0xbe,0x09] + vfnmsub231ps zmm17, zmm26, zmmword ptr [rcx] + +// CHECK: vfnmsub231ps zmm17, zmm26, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x2d,0x40,0xbe,0x8c,0xf0,0x34,0x12,0x00,0x00] + vfnmsub231ps zmm17, zmm26, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub231ps zmm17, zmm26, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x2d,0x50,0xbe,0x09] + vfnmsub231ps zmm17, zmm26, dword ptr [rcx]{1to16} + +// CHECK: vfnmsub231ps zmm17, zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x2d,0x40,0xbe,0x4a,0x7f] + vfnmsub231ps zmm17, zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vfnmsub231ps zmm17, zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x2d,0x40,0xbe,0x8a,0x00,0x20,0x00,0x00] + vfnmsub231ps zmm17, zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vfnmsub231ps zmm17, zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x2d,0x40,0xbe,0x4a,0x80] + vfnmsub231ps zmm17, zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vfnmsub231ps zmm17, zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x2d,0x40,0xbe,0x8a,0xc0,0xdf,0xff,0xff] + vfnmsub231ps zmm17, zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vfnmsub231ps zmm17, zmm26, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x2d,0x50,0xbe,0x4a,0x7f] + vfnmsub231ps zmm17, zmm26, dword ptr [rdx + 508]{1to16} + +// CHECK: vfnmsub231ps zmm17, zmm26, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x2d,0x50,0xbe,0x8a,0x00,0x02,0x00,0x00] + vfnmsub231ps zmm17, zmm26, dword ptr [rdx + 512]{1to16} + +// CHECK: vfnmsub231ps zmm17, zmm26, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x2d,0x50,0xbe,0x4a,0x80] + vfnmsub231ps zmm17, zmm26, dword ptr [rdx - 512]{1to16} + +// CHECK: vfnmsub231ps zmm17, zmm26, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x2d,0x50,0xbe,0x8a,0xfc,0xfd,0xff,0xff] + vfnmsub231ps zmm17, zmm26, dword ptr [rdx - 516]{1to16} + +// CHECK: vfnmsub231sd xmm19, xmm6, xmm26 +// CHECK: encoding: [0x62,0x82,0xcd,0x08,0xbf,0xda] + vfnmsub231sd xmm19, xmm6, xmm26 + +// CHECK: vfnmsub231sd xmm19 {k7}, xmm6, xmm26 +// CHECK: encoding: [0x62,0x82,0xcd,0x0f,0xbf,0xda] + vfnmsub231sd xmm19 {k7}, xmm6, xmm26 + +// CHECK: vfnmsub231sd xmm19 {k7} {z}, xmm6, xmm26 +// CHECK: encoding: [0x62,0x82,0xcd,0x8f,0xbf,0xda] + vfnmsub231sd xmm19 {k7} {z}, xmm6, xmm26 + +// CHECK: vfnmsub231sd xmm19, xmm6, xmm26, {rn-sae} +// CHECK: encoding: [0x62,0x82,0xcd,0x18,0xbf,0xda] + vfnmsub231sd xmm19, xmm6, xmm26, {rn-sae} + +// CHECK: vfnmsub231sd xmm19, xmm6, xmm26, {ru-sae} +// CHECK: encoding: [0x62,0x82,0xcd,0x58,0xbf,0xda] + vfnmsub231sd xmm19, xmm6, xmm26, {ru-sae} + +// CHECK: vfnmsub231sd xmm19, xmm6, xmm26, {rd-sae} +// CHECK: encoding: [0x62,0x82,0xcd,0x38,0xbf,0xda] + vfnmsub231sd xmm19, xmm6, xmm26, {rd-sae} + +// CHECK: vfnmsub231sd xmm19, xmm6, xmm26, {rz-sae} +// CHECK: encoding: [0x62,0x82,0xcd,0x78,0xbf,0xda] + vfnmsub231sd xmm19, xmm6, xmm26, {rz-sae} + +// CHECK: vfnmsub231sd xmm19, xmm6, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xcd,0x08,0xbf,0x19] + vfnmsub231sd xmm19, xmm6, qword ptr [rcx] + +// CHECK: vfnmsub231sd xmm19, xmm6, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xcd,0x08,0xbf,0x9c,0xf0,0x34,0x12,0x00,0x00] + vfnmsub231sd xmm19, xmm6, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub231sd xmm19, xmm6, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe2,0xcd,0x08,0xbf,0x5a,0x7f] + vfnmsub231sd xmm19, xmm6, qword ptr [rdx + 1016] + +// CHECK: vfnmsub231sd xmm19, xmm6, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe2,0xcd,0x08,0xbf,0x9a,0x00,0x04,0x00,0x00] + vfnmsub231sd xmm19, xmm6, qword ptr [rdx + 1024] + +// CHECK: vfnmsub231sd xmm19, xmm6, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe2,0xcd,0x08,0xbf,0x5a,0x80] + vfnmsub231sd xmm19, xmm6, qword ptr [rdx - 1024] + +// CHECK: vfnmsub231sd xmm19, xmm6, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe2,0xcd,0x08,0xbf,0x9a,0xf8,0xfb,0xff,0xff] + vfnmsub231sd xmm19, xmm6, qword ptr [rdx - 1032] + +// CHECK: vfnmsub231ss xmm13, xmm18, xmm1 +// CHECK: encoding: [0x62,0x72,0x6d,0x00,0xbf,0xe9] + vfnmsub231ss xmm13, xmm18, xmm1 + +// CHECK: vfnmsub231ss xmm13 {k5}, xmm18, xmm1 +// CHECK: encoding: [0x62,0x72,0x6d,0x05,0xbf,0xe9] + vfnmsub231ss xmm13 {k5}, xmm18, xmm1 + +// CHECK: vfnmsub231ss xmm13 {k5} {z}, xmm18, xmm1 +// CHECK: encoding: [0x62,0x72,0x6d,0x85,0xbf,0xe9] + vfnmsub231ss xmm13 {k5} {z}, xmm18, xmm1 + +// CHECK: vfnmsub231ss xmm13, xmm18, xmm1, {rn-sae} +// CHECK: encoding: [0x62,0x72,0x6d,0x10,0xbf,0xe9] + vfnmsub231ss xmm13, xmm18, xmm1, {rn-sae} + +// CHECK: vfnmsub231ss xmm13, xmm18, xmm1, {ru-sae} +// CHECK: encoding: [0x62,0x72,0x6d,0x50,0xbf,0xe9] + vfnmsub231ss xmm13, xmm18, xmm1, {ru-sae} + +// CHECK: vfnmsub231ss xmm13, xmm18, xmm1, {rd-sae} +// CHECK: encoding: [0x62,0x72,0x6d,0x30,0xbf,0xe9] + vfnmsub231ss xmm13, xmm18, xmm1, {rd-sae} + +// CHECK: vfnmsub231ss xmm13, xmm18, xmm1, {rz-sae} +// CHECK: encoding: [0x62,0x72,0x6d,0x70,0xbf,0xe9] + vfnmsub231ss xmm13, xmm18, xmm1, {rz-sae} + +// CHECK: vfnmsub231ss xmm13, xmm18, dword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x6d,0x00,0xbf,0x29] + vfnmsub231ss xmm13, xmm18, dword ptr [rcx] + +// CHECK: vfnmsub231ss xmm13, xmm18, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x6d,0x00,0xbf,0xac,0xf0,0x34,0x12,0x00,0x00] + vfnmsub231ss xmm13, xmm18, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vfnmsub231ss xmm13, xmm18, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x72,0x6d,0x00,0xbf,0x6a,0x7f] + vfnmsub231ss xmm13, xmm18, dword ptr [rdx + 508] + +// CHECK: vfnmsub231ss xmm13, xmm18, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x72,0x6d,0x00,0xbf,0xaa,0x00,0x02,0x00,0x00] + vfnmsub231ss xmm13, xmm18, dword ptr [rdx + 512] + +// CHECK: vfnmsub231ss xmm13, xmm18, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x72,0x6d,0x00,0xbf,0x6a,0x80] + vfnmsub231ss xmm13, xmm18, dword ptr [rdx - 512] + +// CHECK: vfnmsub231ss xmm13, xmm18, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x72,0x6d,0x00,0xbf,0xaa,0xfc,0xfd,0xff,0xff] + vfnmsub231ss xmm13, xmm18, dword ptr [rdx - 516] + +// CHECK: vgetexppd zmm6, zmm25 +// CHECK: encoding: [0x62,0x92,0xfd,0x48,0x42,0xf1] + vgetexppd zmm6, zmm25 + +// CHECK: vgetexppd zmm6 {k3}, zmm25 +// CHECK: encoding: [0x62,0x92,0xfd,0x4b,0x42,0xf1] + vgetexppd zmm6 {k3}, zmm25 + +// CHECK: vgetexppd zmm6 {k3} {z}, zmm25 +// CHECK: encoding: [0x62,0x92,0xfd,0xcb,0x42,0xf1] + vgetexppd zmm6 {k3} {z}, zmm25 + +// CHECK: vgetexppd zmm6, zmm25, {sae} +// CHECK: encoding: [0x62,0x92,0xfd,0x18,0x42,0xf1] + vgetexppd zmm6, zmm25, {sae} + +// CHECK: vgetexppd zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x42,0x31] + vgetexppd zmm6, zmmword ptr [rcx] + +// CHECK: vgetexppd zmm6, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xfd,0x48,0x42,0xb4,0xf0,0x34,0x12,0x00,0x00] + vgetexppd zmm6, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vgetexppd zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x42,0x31] + vgetexppd zmm6, qword ptr [rcx]{1to8} + +// CHECK: vgetexppd zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x42,0x72,0x7f] + vgetexppd zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vgetexppd zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x42,0xb2,0x00,0x20,0x00,0x00] + vgetexppd zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vgetexppd zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x42,0x72,0x80] + vgetexppd zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vgetexppd zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x42,0xb2,0xc0,0xdf,0xff,0xff] + vgetexppd zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vgetexppd zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x42,0x72,0x7f] + vgetexppd zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vgetexppd zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x42,0xb2,0x00,0x04,0x00,0x00] + vgetexppd zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vgetexppd zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x42,0x72,0x80] + vgetexppd zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vgetexppd zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xfd,0x58,0x42,0xb2,0xf8,0xfb,0xff,0xff] + vgetexppd zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vgetexpps zmm7, zmm16 +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x42,0xf8] + vgetexpps zmm7, zmm16 + +// CHECK: vgetexpps zmm7 {k2}, zmm16 +// CHECK: encoding: [0x62,0xb2,0x7d,0x4a,0x42,0xf8] + vgetexpps zmm7 {k2}, zmm16 + +// CHECK: vgetexpps zmm7 {k2} {z}, zmm16 +// CHECK: encoding: [0x62,0xb2,0x7d,0xca,0x42,0xf8] + vgetexpps zmm7 {k2} {z}, zmm16 + +// CHECK: vgetexpps zmm7, zmm16, {sae} +// CHECK: encoding: [0x62,0xb2,0x7d,0x18,0x42,0xf8] + vgetexpps zmm7, zmm16, {sae} + +// CHECK: vgetexpps zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0x39] + vgetexpps zmm7, zmmword ptr [rcx] + +// CHECK: vgetexpps zmm7, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x42,0xbc,0xf0,0x34,0x12,0x00,0x00] + vgetexpps zmm7, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vgetexpps zmm7, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0x39] + vgetexpps zmm7, dword ptr [rcx]{1to16} + +// CHECK: vgetexpps zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0x7a,0x7f] + vgetexpps zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vgetexpps zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0xba,0x00,0x20,0x00,0x00] + vgetexpps zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vgetexpps zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0x7a,0x80] + vgetexpps zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vgetexpps zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x42,0xba,0xc0,0xdf,0xff,0xff] + vgetexpps zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vgetexpps zmm7, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0x7a,0x7f] + vgetexpps zmm7, dword ptr [rdx + 508]{1to16} + +// CHECK: vgetexpps zmm7, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0xba,0x00,0x02,0x00,0x00] + vgetexpps zmm7, dword ptr [rdx + 512]{1to16} + +// CHECK: vgetexpps zmm7, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0x7a,0x80] + vgetexpps zmm7, dword ptr [rdx - 512]{1to16} + +// CHECK: vgetexpps zmm7, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x42,0xba,0xfc,0xfd,0xff,0xff] + vgetexpps zmm7, dword ptr [rdx - 516]{1to16} + +// CHECK: vgetexpsd xmm10, xmm14, xmm5 +// CHECK: encoding: [0x62,0x72,0x8d,0x08,0x43,0xd5] + vgetexpsd xmm10, xmm14, xmm5 + +// CHECK: vgetexpsd xmm10 {k4}, xmm14, xmm5 +// CHECK: encoding: [0x62,0x72,0x8d,0x0c,0x43,0xd5] + vgetexpsd xmm10 {k4}, xmm14, xmm5 + +// CHECK: vgetexpsd xmm10 {k4} {z}, xmm14, xmm5 +// CHECK: encoding: [0x62,0x72,0x8d,0x8c,0x43,0xd5] + vgetexpsd xmm10 {k4} {z}, xmm14, xmm5 + +// CHECK: vgetexpsd xmm10, xmm14, xmm5, {sae} +// CHECK: encoding: [0x62,0x72,0x8d,0x18,0x43,0xd5] + vgetexpsd xmm10, xmm14, xmm5, {sae} + +// CHECK: vgetexpsd xmm10, xmm14, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x8d,0x08,0x43,0x11] + vgetexpsd xmm10, xmm14, qword ptr [rcx] + +// CHECK: vgetexpsd xmm10, xmm14, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x8d,0x08,0x43,0x94,0xf0,0x34,0x12,0x00,0x00] + vgetexpsd xmm10, xmm14, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vgetexpsd xmm10, xmm14, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x72,0x8d,0x08,0x43,0x52,0x7f] + vgetexpsd xmm10, xmm14, qword ptr [rdx + 1016] + +// CHECK: vgetexpsd xmm10, xmm14, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x72,0x8d,0x08,0x43,0x92,0x00,0x04,0x00,0x00] + vgetexpsd xmm10, xmm14, qword ptr [rdx + 1024] + +// CHECK: vgetexpsd xmm10, xmm14, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x72,0x8d,0x08,0x43,0x52,0x80] + vgetexpsd xmm10, xmm14, qword ptr [rdx - 1024] + +// CHECK: vgetexpsd xmm10, xmm14, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x72,0x8d,0x08,0x43,0x92,0xf8,0xfb,0xff,0xff] + vgetexpsd xmm10, xmm14, qword ptr [rdx - 1032] + +// CHECK: vgetexpss xmm16, xmm21, xmm23 +// CHECK: encoding: [0x62,0xa2,0x55,0x00,0x43,0xc7] + vgetexpss xmm16, xmm21, xmm23 + +// CHECK: vgetexpss xmm16 {k2}, xmm21, xmm23 +// CHECK: encoding: [0x62,0xa2,0x55,0x02,0x43,0xc7] + vgetexpss xmm16 {k2}, xmm21, xmm23 + +// CHECK: vgetexpss xmm16 {k2} {z}, xmm21, xmm23 +// CHECK: encoding: [0x62,0xa2,0x55,0x82,0x43,0xc7] + vgetexpss xmm16 {k2} {z}, xmm21, xmm23 + +// CHECK: vgetexpss xmm16, xmm21, xmm23, {sae} +// CHECK: encoding: [0x62,0xa2,0x55,0x10,0x43,0xc7] + vgetexpss xmm16, xmm21, xmm23, {sae} + +// CHECK: vgetexpss xmm16, xmm21, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x55,0x00,0x43,0x01] + vgetexpss xmm16, xmm21, dword ptr [rcx] + +// CHECK: vgetexpss xmm16, xmm21, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x55,0x00,0x43,0x84,0xf0,0x34,0x12,0x00,0x00] + vgetexpss xmm16, xmm21, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vgetexpss xmm16, xmm21, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x55,0x00,0x43,0x42,0x7f] + vgetexpss xmm16, xmm21, dword ptr [rdx + 508] + +// CHECK: vgetexpss xmm16, xmm21, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x55,0x00,0x43,0x82,0x00,0x02,0x00,0x00] + vgetexpss xmm16, xmm21, dword ptr [rdx + 512] + +// CHECK: vgetexpss xmm16, xmm21, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x55,0x00,0x43,0x42,0x80] + vgetexpss xmm16, xmm21, dword ptr [rdx - 512] + +// CHECK: vgetexpss xmm16, xmm21, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x55,0x00,0x43,0x82,0xfc,0xfd,0xff,0xff] + vgetexpss xmm16, xmm21, dword ptr [rdx - 516] + +// CHECK: vgetmantpd zmm9, zmm10, 171 +// CHECK: encoding: [0x62,0x53,0xfd,0x48,0x26,0xca,0xab] + vgetmantpd zmm9, zmm10, 171 + +// CHECK: vgetmantpd zmm9 {k5}, zmm10, 171 +// CHECK: encoding: [0x62,0x53,0xfd,0x4d,0x26,0xca,0xab] + vgetmantpd zmm9 {k5}, zmm10, 171 + +// CHECK: vgetmantpd zmm9 {k5} {z}, zmm10, 171 +// CHECK: encoding: [0x62,0x53,0xfd,0xcd,0x26,0xca,0xab] + vgetmantpd zmm9 {k5} {z}, zmm10, 171 + +// CHECK: vgetmantpd zmm9, zmm10, {sae}, 171 +// CHECK: encoding: [0x62,0x53,0xfd,0x18,0x26,0xca,0xab] + vgetmantpd zmm9, zmm10, {sae}, 171 + +// CHECK: vgetmantpd zmm9, zmm10, 123 +// CHECK: encoding: [0x62,0x53,0xfd,0x48,0x26,0xca,0x7b] + vgetmantpd zmm9, zmm10, 123 + +// CHECK: vgetmantpd zmm9, zmm10, {sae}, 123 +// CHECK: encoding: [0x62,0x53,0xfd,0x18,0x26,0xca,0x7b] + vgetmantpd zmm9, zmm10, {sae}, 123 + +// CHECK: vgetmantpd zmm9, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x26,0x09,0x7b] + vgetmantpd zmm9, zmmword ptr [rcx], 123 + +// CHECK: vgetmantpd zmm9, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x33,0xfd,0x48,0x26,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vgetmantpd zmm9, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vgetmantpd zmm9, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x26,0x09,0x7b] + vgetmantpd zmm9, qword ptr [rcx]{1to8}, 123 + +// CHECK: vgetmantpd zmm9, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x26,0x4a,0x7f,0x7b] + vgetmantpd zmm9, zmmword ptr [rdx + 8128], 123 + +// CHECK: vgetmantpd zmm9, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x26,0x8a,0x00,0x20,0x00,0x00,0x7b] + vgetmantpd zmm9, zmmword ptr [rdx + 8192], 123 + +// CHECK: vgetmantpd zmm9, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x26,0x4a,0x80,0x7b] + vgetmantpd zmm9, zmmword ptr [rdx - 8192], 123 + +// CHECK: vgetmantpd zmm9, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x26,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vgetmantpd zmm9, zmmword ptr [rdx - 8256], 123 + +// CHECK: vgetmantpd zmm9, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x26,0x4a,0x7f,0x7b] + vgetmantpd zmm9, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vgetmantpd zmm9, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x26,0x8a,0x00,0x04,0x00,0x00,0x7b] + vgetmantpd zmm9, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vgetmantpd zmm9, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x26,0x4a,0x80,0x7b] + vgetmantpd zmm9, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vgetmantpd zmm9, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x26,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + vgetmantpd zmm9, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vgetmantps zmm29, zmm25, 171 +// CHECK: encoding: [0x62,0x03,0x7d,0x48,0x26,0xe9,0xab] + vgetmantps zmm29, zmm25, 171 + +// CHECK: vgetmantps zmm29 {k3}, zmm25, 171 +// CHECK: encoding: [0x62,0x03,0x7d,0x4b,0x26,0xe9,0xab] + vgetmantps zmm29 {k3}, zmm25, 171 + +// CHECK: vgetmantps zmm29 {k3} {z}, zmm25, 171 +// CHECK: encoding: [0x62,0x03,0x7d,0xcb,0x26,0xe9,0xab] + vgetmantps zmm29 {k3} {z}, zmm25, 171 + +// CHECK: vgetmantps zmm29, zmm25, {sae}, 171 +// CHECK: encoding: [0x62,0x03,0x7d,0x18,0x26,0xe9,0xab] + vgetmantps zmm29, zmm25, {sae}, 171 + +// CHECK: vgetmantps zmm29, zmm25, 123 +// CHECK: encoding: [0x62,0x03,0x7d,0x48,0x26,0xe9,0x7b] + vgetmantps zmm29, zmm25, 123 + +// CHECK: vgetmantps zmm29, zmm25, {sae}, 123 +// CHECK: encoding: [0x62,0x03,0x7d,0x18,0x26,0xe9,0x7b] + vgetmantps zmm29, zmm25, {sae}, 123 + +// CHECK: vgetmantps zmm29, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x26,0x29,0x7b] + vgetmantps zmm29, zmmword ptr [rcx], 123 + +// CHECK: vgetmantps zmm29, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0x7d,0x48,0x26,0xac,0xf0,0x34,0x12,0x00,0x00,0x7b] + vgetmantps zmm29, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vgetmantps zmm29, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x26,0x29,0x7b] + vgetmantps zmm29, dword ptr [rcx]{1to16}, 123 + +// CHECK: vgetmantps zmm29, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x26,0x6a,0x7f,0x7b] + vgetmantps zmm29, zmmword ptr [rdx + 8128], 123 + +// CHECK: vgetmantps zmm29, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x26,0xaa,0x00,0x20,0x00,0x00,0x7b] + vgetmantps zmm29, zmmword ptr [rdx + 8192], 123 + +// CHECK: vgetmantps zmm29, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x26,0x6a,0x80,0x7b] + vgetmantps zmm29, zmmword ptr [rdx - 8192], 123 + +// CHECK: vgetmantps zmm29, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x26,0xaa,0xc0,0xdf,0xff,0xff,0x7b] + vgetmantps zmm29, zmmword ptr [rdx - 8256], 123 + +// CHECK: vgetmantps zmm29, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x26,0x6a,0x7f,0x7b] + vgetmantps zmm29, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vgetmantps zmm29, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x26,0xaa,0x00,0x02,0x00,0x00,0x7b] + vgetmantps zmm29, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vgetmantps zmm29, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x26,0x6a,0x80,0x7b] + vgetmantps zmm29, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vgetmantps zmm29, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x26,0xaa,0xfc,0xfd,0xff,0xff,0x7b] + vgetmantps zmm29, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vgetmantsd xmm20, xmm3, xmm17, 171 +// CHECK: encoding: [0x62,0xa3,0xe5,0x08,0x27,0xe1,0xab] + vgetmantsd xmm20, xmm3, xmm17, 171 + +// CHECK: vgetmantsd xmm20 {k7}, xmm3, xmm17, 171 +// CHECK: encoding: [0x62,0xa3,0xe5,0x0f,0x27,0xe1,0xab] + vgetmantsd xmm20 {k7}, xmm3, xmm17, 171 + +// CHECK: vgetmantsd xmm20 {k7} {z}, xmm3, xmm17, 171 +// CHECK: encoding: [0x62,0xa3,0xe5,0x8f,0x27,0xe1,0xab] + vgetmantsd xmm20 {k7} {z}, xmm3, xmm17, 171 + +// CHECK: vgetmantsd xmm20, xmm3, xmm17, {sae}, 171 +// CHECK: encoding: [0x62,0xa3,0xe5,0x18,0x27,0xe1,0xab] + vgetmantsd xmm20, xmm3, xmm17, {sae}, 171 + +// CHECK: vgetmantsd xmm20, xmm3, xmm17, 123 +// CHECK: encoding: [0x62,0xa3,0xe5,0x08,0x27,0xe1,0x7b] + vgetmantsd xmm20, xmm3, xmm17, 123 + +// CHECK: vgetmantsd xmm20, xmm3, xmm17, {sae}, 123 +// CHECK: encoding: [0x62,0xa3,0xe5,0x18,0x27,0xe1,0x7b] + vgetmantsd xmm20, xmm3, xmm17, {sae}, 123 + +// CHECK: vgetmantsd xmm20, xmm3, qword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0xe5,0x08,0x27,0x21,0x7b] + vgetmantsd xmm20, xmm3, qword ptr [rcx], 123 + +// CHECK: vgetmantsd xmm20, xmm3, qword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xa3,0xe5,0x08,0x27,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vgetmantsd xmm20, xmm3, qword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vgetmantsd xmm20, xmm3, qword ptr [rdx + 1016], 123 +// CHECK: encoding: [0x62,0xe3,0xe5,0x08,0x27,0x62,0x7f,0x7b] + vgetmantsd xmm20, xmm3, qword ptr [rdx + 1016], 123 + +// CHECK: vgetmantsd xmm20, xmm3, qword ptr [rdx + 1024], 123 +// CHECK: encoding: [0x62,0xe3,0xe5,0x08,0x27,0xa2,0x00,0x04,0x00,0x00,0x7b] + vgetmantsd xmm20, xmm3, qword ptr [rdx + 1024], 123 + +// CHECK: vgetmantsd xmm20, xmm3, qword ptr [rdx - 1024], 123 +// CHECK: encoding: [0x62,0xe3,0xe5,0x08,0x27,0x62,0x80,0x7b] + vgetmantsd xmm20, xmm3, qword ptr [rdx - 1024], 123 + +// CHECK: vgetmantsd xmm20, xmm3, qword ptr [rdx - 1032], 123 +// CHECK: encoding: [0x62,0xe3,0xe5,0x08,0x27,0xa2,0xf8,0xfb,0xff,0xff,0x7b] + vgetmantsd xmm20, xmm3, qword ptr [rdx - 1032], 123 + +// CHECK: vgetmantss xmm13, xmm12, xmm6, 171 +// CHECK: encoding: [0x62,0x73,0x1d,0x08,0x27,0xee,0xab] + vgetmantss xmm13, xmm12, xmm6, 171 + +// CHECK: vgetmantss xmm13 {k2}, xmm12, xmm6, 171 +// CHECK: encoding: [0x62,0x73,0x1d,0x0a,0x27,0xee,0xab] + vgetmantss xmm13 {k2}, xmm12, xmm6, 171 + +// CHECK: vgetmantss xmm13 {k2} {z}, xmm12, xmm6, 171 +// CHECK: encoding: [0x62,0x73,0x1d,0x8a,0x27,0xee,0xab] + vgetmantss xmm13 {k2} {z}, xmm12, xmm6, 171 + +// CHECK: vgetmantss xmm13, xmm12, xmm6, {sae}, 171 +// CHECK: encoding: [0x62,0x73,0x1d,0x18,0x27,0xee,0xab] + vgetmantss xmm13, xmm12, xmm6, {sae}, 171 + +// CHECK: vgetmantss xmm13, xmm12, xmm6, 123 +// CHECK: encoding: [0x62,0x73,0x1d,0x08,0x27,0xee,0x7b] + vgetmantss xmm13, xmm12, xmm6, 123 + +// CHECK: vgetmantss xmm13, xmm12, xmm6, {sae}, 123 +// CHECK: encoding: [0x62,0x73,0x1d,0x18,0x27,0xee,0x7b] + vgetmantss xmm13, xmm12, xmm6, {sae}, 123 + +// CHECK: vgetmantss xmm13, xmm12, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x1d,0x08,0x27,0x29,0x7b] + vgetmantss xmm13, xmm12, dword ptr [rcx], 123 + +// CHECK: vgetmantss xmm13, xmm12, dword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x33,0x1d,0x08,0x27,0xac,0xf0,0x34,0x12,0x00,0x00,0x7b] + vgetmantss xmm13, xmm12, dword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vgetmantss xmm13, xmm12, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0x73,0x1d,0x08,0x27,0x6a,0x7f,0x7b] + vgetmantss xmm13, xmm12, dword ptr [rdx + 508], 123 + +// CHECK: vgetmantss xmm13, xmm12, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0x73,0x1d,0x08,0x27,0xaa,0x00,0x02,0x00,0x00,0x7b] + vgetmantss xmm13, xmm12, dword ptr [rdx + 512], 123 + +// CHECK: vgetmantss xmm13, xmm12, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0x73,0x1d,0x08,0x27,0x6a,0x80,0x7b] + vgetmantss xmm13, xmm12, dword ptr [rdx - 512], 123 + +// CHECK: vgetmantss xmm13, xmm12, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0x73,0x1d,0x08,0x27,0xaa,0xfc,0xfd,0xff,0xff,0x7b] + vgetmantss xmm13, xmm12, dword ptr [rdx - 516], 123 + +// CHECK: vinsertf32x4 zmm8, zmm16, xmm22, 171 +// CHECK: encoding: [0x62,0x33,0x7d,0x40,0x18,0xc6,0xab] + vinsertf32x4 zmm8, zmm16, xmm22, 171 + +// CHECK: vinsertf32x4 zmm8 {k5}, zmm16, xmm22, 171 +// CHECK: encoding: [0x62,0x33,0x7d,0x45,0x18,0xc6,0xab] + vinsertf32x4 zmm8 {k5}, zmm16, xmm22, 171 + +// CHECK: vinsertf32x4 zmm8 {k5} {z}, zmm16, xmm22, 171 +// CHECK: encoding: [0x62,0x33,0x7d,0xc5,0x18,0xc6,0xab] + vinsertf32x4 zmm8 {k5} {z}, zmm16, xmm22, 171 + +// CHECK: vinsertf32x4 zmm8, zmm16, xmm22, 123 +// CHECK: encoding: [0x62,0x33,0x7d,0x40,0x18,0xc6,0x7b] + vinsertf32x4 zmm8, zmm16, xmm22, 123 + +// CHECK: vinsertf32x4 zmm8, zmm16, xmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x40,0x18,0x01,0x7b] + vinsertf32x4 zmm8, zmm16, xmmword ptr [rcx], 123 + +// CHECK: vinsertf32x4 zmm8, zmm16, xmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x33,0x7d,0x40,0x18,0x84,0xf0,0x34,0x12,0x00,0x00,0x7b] + vinsertf32x4 zmm8, zmm16, xmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vinsertf32x4 zmm8, zmm16, xmmword ptr [rdx + 2032], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x40,0x18,0x42,0x7f,0x7b] + vinsertf32x4 zmm8, zmm16, xmmword ptr [rdx + 2032], 123 + +// CHECK: vinsertf32x4 zmm8, zmm16, xmmword ptr [rdx + 2048], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x40,0x18,0x82,0x00,0x08,0x00,0x00,0x7b] + vinsertf32x4 zmm8, zmm16, xmmword ptr [rdx + 2048], 123 + +// CHECK: vinsertf32x4 zmm8, zmm16, xmmword ptr [rdx - 2048], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x40,0x18,0x42,0x80,0x7b] + vinsertf32x4 zmm8, zmm16, xmmword ptr [rdx - 2048], 123 + +// CHECK: vinsertf32x4 zmm8, zmm16, xmmword ptr [rdx - 2064], 123 +// CHECK: encoding: [0x62,0x73,0x7d,0x40,0x18,0x82,0xf0,0xf7,0xff,0xff,0x7b] + vinsertf32x4 zmm8, zmm16, xmmword ptr [rdx - 2064], 123 + +// CHECK: vinsertf64x4 zmm22, zmm9, ymm12, 171 +// CHECK: encoding: [0x62,0xc3,0xb5,0x48,0x1a,0xf4,0xab] + vinsertf64x4 zmm22, zmm9, ymm12, 171 + +// CHECK: vinsertf64x4 zmm22 {k6}, zmm9, ymm12, 171 +// CHECK: encoding: [0x62,0xc3,0xb5,0x4e,0x1a,0xf4,0xab] + vinsertf64x4 zmm22 {k6}, zmm9, ymm12, 171 + +// CHECK: vinsertf64x4 zmm22 {k6} {z}, zmm9, ymm12, 171 +// CHECK: encoding: [0x62,0xc3,0xb5,0xce,0x1a,0xf4,0xab] + vinsertf64x4 zmm22 {k6} {z}, zmm9, ymm12, 171 + +// CHECK: vinsertf64x4 zmm22, zmm9, ymm12, 123 +// CHECK: encoding: [0x62,0xc3,0xb5,0x48,0x1a,0xf4,0x7b] + vinsertf64x4 zmm22, zmm9, ymm12, 123 + +// CHECK: vinsertf64x4 zmm22, zmm9, ymmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0xb5,0x48,0x1a,0x31,0x7b] + vinsertf64x4 zmm22, zmm9, ymmword ptr [rcx], 123 + +// CHECK: vinsertf64x4 zmm22, zmm9, ymmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xa3,0xb5,0x48,0x1a,0xb4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vinsertf64x4 zmm22, zmm9, ymmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vinsertf64x4 zmm22, zmm9, ymmword ptr [rdx + 4064], 123 +// CHECK: encoding: [0x62,0xe3,0xb5,0x48,0x1a,0x72,0x7f,0x7b] + vinsertf64x4 zmm22, zmm9, ymmword ptr [rdx + 4064], 123 + +// CHECK: vinsertf64x4 zmm22, zmm9, ymmword ptr [rdx + 4096], 123 +// CHECK: encoding: [0x62,0xe3,0xb5,0x48,0x1a,0xb2,0x00,0x10,0x00,0x00,0x7b] + vinsertf64x4 zmm22, zmm9, ymmword ptr [rdx + 4096], 123 + +// CHECK: vinsertf64x4 zmm22, zmm9, ymmword ptr [rdx - 4096], 123 +// CHECK: encoding: [0x62,0xe3,0xb5,0x48,0x1a,0x72,0x80,0x7b] + vinsertf64x4 zmm22, zmm9, ymmword ptr [rdx - 4096], 123 + +// CHECK: vinsertf64x4 zmm22, zmm9, ymmword ptr [rdx - 4128], 123 +// CHECK: encoding: [0x62,0xe3,0xb5,0x48,0x1a,0xb2,0xe0,0xef,0xff,0xff,0x7b] + vinsertf64x4 zmm22, zmm9, ymmword ptr [rdx - 4128], 123 + +// CHECK: vinserti32x4 zmm7, zmm4, xmm24, 171 +// CHECK: encoding: [0x62,0x93,0x5d,0x48,0x38,0xf8,0xab] + vinserti32x4 zmm7, zmm4, xmm24, 171 + +// CHECK: vinserti32x4 zmm7 {k7}, zmm4, xmm24, 171 +// CHECK: encoding: [0x62,0x93,0x5d,0x4f,0x38,0xf8,0xab] + vinserti32x4 zmm7 {k7}, zmm4, xmm24, 171 + +// CHECK: vinserti32x4 zmm7 {k7} {z}, zmm4, xmm24, 171 +// CHECK: encoding: [0x62,0x93,0x5d,0xcf,0x38,0xf8,0xab] + vinserti32x4 zmm7 {k7} {z}, zmm4, xmm24, 171 + +// CHECK: vinserti32x4 zmm7, zmm4, xmm24, 123 +// CHECK: encoding: [0x62,0x93,0x5d,0x48,0x38,0xf8,0x7b] + vinserti32x4 zmm7, zmm4, xmm24, 123 + +// CHECK: vinserti32x4 zmm7, zmm4, xmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x5d,0x48,0x38,0x39,0x7b] + vinserti32x4 zmm7, zmm4, xmmword ptr [rcx], 123 + +// CHECK: vinserti32x4 zmm7, zmm4, xmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0x5d,0x48,0x38,0xbc,0xf0,0x34,0x12,0x00,0x00,0x7b] + vinserti32x4 zmm7, zmm4, xmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vinserti32x4 zmm7, zmm4, xmmword ptr [rdx + 2032], 123 +// CHECK: encoding: [0x62,0xf3,0x5d,0x48,0x38,0x7a,0x7f,0x7b] + vinserti32x4 zmm7, zmm4, xmmword ptr [rdx + 2032], 123 + +// CHECK: vinserti32x4 zmm7, zmm4, xmmword ptr [rdx + 2048], 123 +// CHECK: encoding: [0x62,0xf3,0x5d,0x48,0x38,0xba,0x00,0x08,0x00,0x00,0x7b] + vinserti32x4 zmm7, zmm4, xmmword ptr [rdx + 2048], 123 + +// CHECK: vinserti32x4 zmm7, zmm4, xmmword ptr [rdx - 2048], 123 +// CHECK: encoding: [0x62,0xf3,0x5d,0x48,0x38,0x7a,0x80,0x7b] + vinserti32x4 zmm7, zmm4, xmmword ptr [rdx - 2048], 123 + +// CHECK: vinserti32x4 zmm7, zmm4, xmmword ptr [rdx - 2064], 123 +// CHECK: encoding: [0x62,0xf3,0x5d,0x48,0x38,0xba,0xf0,0xf7,0xff,0xff,0x7b] + vinserti32x4 zmm7, zmm4, xmmword ptr [rdx - 2064], 123 + +// CHECK: vinserti64x4 zmm18, zmm5, ymm23, 171 +// CHECK: encoding: [0x62,0xa3,0xd5,0x48,0x3a,0xd7,0xab] + vinserti64x4 zmm18, zmm5, ymm23, 171 + +// CHECK: vinserti64x4 zmm18 {k2}, zmm5, ymm23, 171 +// CHECK: encoding: [0x62,0xa3,0xd5,0x4a,0x3a,0xd7,0xab] + vinserti64x4 zmm18 {k2}, zmm5, ymm23, 171 + +// CHECK: vinserti64x4 zmm18 {k2} {z}, zmm5, ymm23, 171 +// CHECK: encoding: [0x62,0xa3,0xd5,0xca,0x3a,0xd7,0xab] + vinserti64x4 zmm18 {k2} {z}, zmm5, ymm23, 171 + +// CHECK: vinserti64x4 zmm18, zmm5, ymm23, 123 +// CHECK: encoding: [0x62,0xa3,0xd5,0x48,0x3a,0xd7,0x7b] + vinserti64x4 zmm18, zmm5, ymm23, 123 + +// CHECK: vinserti64x4 zmm18, zmm5, ymmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0xd5,0x48,0x3a,0x11,0x7b] + vinserti64x4 zmm18, zmm5, ymmword ptr [rcx], 123 + +// CHECK: vinserti64x4 zmm18, zmm5, ymmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xa3,0xd5,0x48,0x3a,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vinserti64x4 zmm18, zmm5, ymmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vinserti64x4 zmm18, zmm5, ymmword ptr [rdx + 4064], 123 +// CHECK: encoding: [0x62,0xe3,0xd5,0x48,0x3a,0x52,0x7f,0x7b] + vinserti64x4 zmm18, zmm5, ymmword ptr [rdx + 4064], 123 + +// CHECK: vinserti64x4 zmm18, zmm5, ymmword ptr [rdx + 4096], 123 +// CHECK: encoding: [0x62,0xe3,0xd5,0x48,0x3a,0x92,0x00,0x10,0x00,0x00,0x7b] + vinserti64x4 zmm18, zmm5, ymmword ptr [rdx + 4096], 123 + +// CHECK: vinserti64x4 zmm18, zmm5, ymmword ptr [rdx - 4096], 123 +// CHECK: encoding: [0x62,0xe3,0xd5,0x48,0x3a,0x52,0x80,0x7b] + vinserti64x4 zmm18, zmm5, ymmword ptr [rdx - 4096], 123 + +// CHECK: vinserti64x4 zmm18, zmm5, ymmword ptr [rdx - 4128], 123 +// CHECK: encoding: [0x62,0xe3,0xd5,0x48,0x3a,0x92,0xe0,0xef,0xff,0xff,0x7b] + vinserti64x4 zmm18, zmm5, ymmword ptr [rdx - 4128], 123 + +// CHECK: vinsertps xmm24, xmm6, xmm28, 171 +// CHECK: encoding: [0x62,0x03,0x4d,0x08,0x21,0xc4,0xab] + vinsertps xmm24, xmm6, xmm28, 171 + +// CHECK: vinsertps xmm24, xmm6, xmm28, 123 +// CHECK: encoding: [0x62,0x03,0x4d,0x08,0x21,0xc4,0x7b] + vinsertps xmm24, xmm6, xmm28, 123 + +// CHECK: vinsertps xmm24, xmm6, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x4d,0x08,0x21,0x01,0x7b] + vinsertps xmm24, xmm6, dword ptr [rcx], 123 + +// CHECK: vinsertps xmm24, xmm6, dword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0x4d,0x08,0x21,0x84,0xf0,0x34,0x12,0x00,0x00,0x7b] + vinsertps xmm24, xmm6, dword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vinsertps xmm24, xmm6, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0x63,0x4d,0x08,0x21,0x42,0x7f,0x7b] + vinsertps xmm24, xmm6, dword ptr [rdx + 508], 123 + +// CHECK: vinsertps xmm24, xmm6, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0x63,0x4d,0x08,0x21,0x82,0x00,0x02,0x00,0x00,0x7b] + vinsertps xmm24, xmm6, dword ptr [rdx + 512], 123 + +// CHECK: vinsertps xmm24, xmm6, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0x63,0x4d,0x08,0x21,0x42,0x80,0x7b] + vinsertps xmm24, xmm6, dword ptr [rdx - 512], 123 + +// CHECK: vinsertps xmm24, xmm6, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0x63,0x4d,0x08,0x21,0x82,0xfc,0xfd,0xff,0xff,0x7b] + vinsertps xmm24, xmm6, dword ptr [rdx - 516], 123 + +// CHECK: vmaxpd zmm9, zmm12, zmm21 +// CHECK: encoding: [0x62,0x31,0x9d,0x48,0x5f,0xcd] + vmaxpd zmm9, zmm12, zmm21 + +// CHECK: vmaxpd zmm9 {k6}, zmm12, zmm21 +// CHECK: encoding: [0x62,0x31,0x9d,0x4e,0x5f,0xcd] + vmaxpd zmm9 {k6}, zmm12, zmm21 + +// CHECK: vmaxpd zmm9 {k6} {z}, zmm12, zmm21 +// CHECK: encoding: [0x62,0x31,0x9d,0xce,0x5f,0xcd] + vmaxpd zmm9 {k6} {z}, zmm12, zmm21 + +// CHECK: vmaxpd zmm9, zmm12, zmm21, {sae} +// CHECK: encoding: [0x62,0x31,0x9d,0x18,0x5f,0xcd] + vmaxpd zmm9, zmm12, zmm21, {sae} + +// CHECK: vmaxpd zmm9, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5f,0x09] + vmaxpd zmm9, zmm12, zmmword ptr [rcx] + +// CHECK: vmaxpd zmm9, zmm12, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x9d,0x48,0x5f,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmaxpd zmm9, zmm12, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmaxpd zmm9, zmm12, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5f,0x09] + vmaxpd zmm9, zmm12, qword ptr [rcx]{1to8} + +// CHECK: vmaxpd zmm9, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5f,0x4a,0x7f] + vmaxpd zmm9, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vmaxpd zmm9, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5f,0x8a,0x00,0x20,0x00,0x00] + vmaxpd zmm9, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vmaxpd zmm9, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5f,0x4a,0x80] + vmaxpd zmm9, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vmaxpd zmm9, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x9d,0x48,0x5f,0x8a,0xc0,0xdf,0xff,0xff] + vmaxpd zmm9, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vmaxpd zmm9, zmm12, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5f,0x4a,0x7f] + vmaxpd zmm9, zmm12, qword ptr [rdx + 1016]{1to8} + +// CHECK: vmaxpd zmm9, zmm12, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5f,0x8a,0x00,0x04,0x00,0x00] + vmaxpd zmm9, zmm12, qword ptr [rdx + 1024]{1to8} + +// CHECK: vmaxpd zmm9, zmm12, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5f,0x4a,0x80] + vmaxpd zmm9, zmm12, qword ptr [rdx - 1024]{1to8} + +// CHECK: vmaxpd zmm9, zmm12, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0x9d,0x58,0x5f,0x8a,0xf8,0xfb,0xff,0xff] + vmaxpd zmm9, zmm12, qword ptr [rdx - 1032]{1to8} + +// CHECK: vmaxps zmm17, zmm24, zmm24 +// CHECK: encoding: [0x62,0x81,0x3c,0x40,0x5f,0xc8] + vmaxps zmm17, zmm24, zmm24 + +// CHECK: vmaxps zmm17 {k4}, zmm24, zmm24 +// CHECK: encoding: [0x62,0x81,0x3c,0x44,0x5f,0xc8] + vmaxps zmm17 {k4}, zmm24, zmm24 + +// CHECK: vmaxps zmm17 {k4} {z}, zmm24, zmm24 +// CHECK: encoding: [0x62,0x81,0x3c,0xc4,0x5f,0xc8] + vmaxps zmm17 {k4} {z}, zmm24, zmm24 + +// CHECK: vmaxps zmm17, zmm24, zmm24, {sae} +// CHECK: encoding: [0x62,0x81,0x3c,0x10,0x5f,0xc8] + vmaxps zmm17, zmm24, zmm24, {sae} + +// CHECK: vmaxps zmm17, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x3c,0x40,0x5f,0x09] + vmaxps zmm17, zmm24, zmmword ptr [rcx] + +// CHECK: vmaxps zmm17, zmm24, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x3c,0x40,0x5f,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmaxps zmm17, zmm24, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmaxps zmm17, zmm24, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x3c,0x50,0x5f,0x09] + vmaxps zmm17, zmm24, dword ptr [rcx]{1to16} + +// CHECK: vmaxps zmm17, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x3c,0x40,0x5f,0x4a,0x7f] + vmaxps zmm17, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vmaxps zmm17, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x3c,0x40,0x5f,0x8a,0x00,0x20,0x00,0x00] + vmaxps zmm17, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vmaxps zmm17, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x3c,0x40,0x5f,0x4a,0x80] + vmaxps zmm17, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vmaxps zmm17, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x3c,0x40,0x5f,0x8a,0xc0,0xdf,0xff,0xff] + vmaxps zmm17, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vmaxps zmm17, zmm24, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x3c,0x50,0x5f,0x4a,0x7f] + vmaxps zmm17, zmm24, dword ptr [rdx + 508]{1to16} + +// CHECK: vmaxps zmm17, zmm24, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x3c,0x50,0x5f,0x8a,0x00,0x02,0x00,0x00] + vmaxps zmm17, zmm24, dword ptr [rdx + 512]{1to16} + +// CHECK: vmaxps zmm17, zmm24, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x3c,0x50,0x5f,0x4a,0x80] + vmaxps zmm17, zmm24, dword ptr [rdx - 512]{1to16} + +// CHECK: vmaxps zmm17, zmm24, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x3c,0x50,0x5f,0x8a,0xfc,0xfd,0xff,0xff] + vmaxps zmm17, zmm24, dword ptr [rdx - 516]{1to16} + +// CHECK: vmaxsd xmm23, xmm21, xmm16 +// CHECK: encoding: [0x62,0xa1,0xd7,0x00,0x5f,0xf8] + vmaxsd xmm23, xmm21, xmm16 + +// CHECK: vmaxsd xmm23 {k3}, xmm21, xmm16 +// CHECK: encoding: [0x62,0xa1,0xd7,0x03,0x5f,0xf8] + vmaxsd xmm23 {k3}, xmm21, xmm16 + +// CHECK: vmaxsd xmm23 {k3} {z}, xmm21, xmm16 +// CHECK: encoding: [0x62,0xa1,0xd7,0x83,0x5f,0xf8] + vmaxsd xmm23 {k3} {z}, xmm21, xmm16 + +// CHECK: vmaxsd xmm23, xmm21, xmm16, {sae} +// CHECK: encoding: [0x62,0xa1,0xd7,0x10,0x5f,0xf8] + vmaxsd xmm23, xmm21, xmm16, {sae} + +// CHECK: vmaxsd xmm23, xmm21, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xd7,0x00,0x5f,0x39] + vmaxsd xmm23, xmm21, qword ptr [rcx] + +// CHECK: vmaxsd xmm23, xmm21, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xd7,0x00,0x5f,0xbc,0xf0,0x34,0x12,0x00,0x00] + vmaxsd xmm23, xmm21, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vmaxsd xmm23, xmm21, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xd7,0x00,0x5f,0x7a,0x7f] + vmaxsd xmm23, xmm21, qword ptr [rdx + 1016] + +// CHECK: vmaxsd xmm23, xmm21, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xd7,0x00,0x5f,0xba,0x00,0x04,0x00,0x00] + vmaxsd xmm23, xmm21, qword ptr [rdx + 1024] + +// CHECK: vmaxsd xmm23, xmm21, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xd7,0x00,0x5f,0x7a,0x80] + vmaxsd xmm23, xmm21, qword ptr [rdx - 1024] + +// CHECK: vmaxsd xmm23, xmm21, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xd7,0x00,0x5f,0xba,0xf8,0xfb,0xff,0xff] + vmaxsd xmm23, xmm21, qword ptr [rdx - 1032] + +// CHECK: vmaxss xmm22, xmm17, xmm16 +// CHECK: encoding: [0x62,0xa1,0x76,0x00,0x5f,0xf0] + vmaxss xmm22, xmm17, xmm16 + +// CHECK: vmaxss xmm22 {k7}, xmm17, xmm16 +// CHECK: encoding: [0x62,0xa1,0x76,0x07,0x5f,0xf0] + vmaxss xmm22 {k7}, xmm17, xmm16 + +// CHECK: vmaxss xmm22 {k7} {z}, xmm17, xmm16 +// CHECK: encoding: [0x62,0xa1,0x76,0x87,0x5f,0xf0] + vmaxss xmm22 {k7} {z}, xmm17, xmm16 + +// CHECK: vmaxss xmm22, xmm17, xmm16, {sae} +// CHECK: encoding: [0x62,0xa1,0x76,0x10,0x5f,0xf0] + vmaxss xmm22, xmm17, xmm16, {sae} + +// CHECK: vmaxss xmm22, xmm17, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x76,0x00,0x5f,0x31] + vmaxss xmm22, xmm17, dword ptr [rcx] + +// CHECK: vmaxss xmm22, xmm17, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x76,0x00,0x5f,0xb4,0xf0,0x34,0x12,0x00,0x00] + vmaxss xmm22, xmm17, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vmaxss xmm22, xmm17, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe1,0x76,0x00,0x5f,0x72,0x7f] + vmaxss xmm22, xmm17, dword ptr [rdx + 508] + +// CHECK: vmaxss xmm22, xmm17, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe1,0x76,0x00,0x5f,0xb2,0x00,0x02,0x00,0x00] + vmaxss xmm22, xmm17, dword ptr [rdx + 512] + +// CHECK: vmaxss xmm22, xmm17, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe1,0x76,0x00,0x5f,0x72,0x80] + vmaxss xmm22, xmm17, dword ptr [rdx - 512] + +// CHECK: vmaxss xmm22, xmm17, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe1,0x76,0x00,0x5f,0xb2,0xfc,0xfd,0xff,0xff] + vmaxss xmm22, xmm17, dword ptr [rdx - 516] + +// CHECK: vminpd zmm10, zmm25, zmm27 +// CHECK: encoding: [0x62,0x11,0xb5,0x40,0x5d,0xd3] + vminpd zmm10, zmm25, zmm27 + +// CHECK: vminpd zmm10 {k4}, zmm25, zmm27 +// CHECK: encoding: [0x62,0x11,0xb5,0x44,0x5d,0xd3] + vminpd zmm10 {k4}, zmm25, zmm27 + +// CHECK: vminpd zmm10 {k4} {z}, zmm25, zmm27 +// CHECK: encoding: [0x62,0x11,0xb5,0xc4,0x5d,0xd3] + vminpd zmm10 {k4} {z}, zmm25, zmm27 + +// CHECK: vminpd zmm10, zmm25, zmm27, {sae} +// CHECK: encoding: [0x62,0x11,0xb5,0x10,0x5d,0xd3] + vminpd zmm10, zmm25, zmm27, {sae} + +// CHECK: vminpd zmm10, zmm25, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0x5d,0x11] + vminpd zmm10, zmm25, zmmword ptr [rcx] + +// CHECK: vminpd zmm10, zmm25, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xb5,0x40,0x5d,0x94,0xf0,0x34,0x12,0x00,0x00] + vminpd zmm10, zmm25, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vminpd zmm10, zmm25, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0x5d,0x11] + vminpd zmm10, zmm25, qword ptr [rcx]{1to8} + +// CHECK: vminpd zmm10, zmm25, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0x5d,0x52,0x7f] + vminpd zmm10, zmm25, zmmword ptr [rdx + 8128] + +// CHECK: vminpd zmm10, zmm25, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0x5d,0x92,0x00,0x20,0x00,0x00] + vminpd zmm10, zmm25, zmmword ptr [rdx + 8192] + +// CHECK: vminpd zmm10, zmm25, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0x5d,0x52,0x80] + vminpd zmm10, zmm25, zmmword ptr [rdx - 8192] + +// CHECK: vminpd zmm10, zmm25, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xb5,0x40,0x5d,0x92,0xc0,0xdf,0xff,0xff] + vminpd zmm10, zmm25, zmmword ptr [rdx - 8256] + +// CHECK: vminpd zmm10, zmm25, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0x5d,0x52,0x7f] + vminpd zmm10, zmm25, qword ptr [rdx + 1016]{1to8} + +// CHECK: vminpd zmm10, zmm25, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0x5d,0x92,0x00,0x04,0x00,0x00] + vminpd zmm10, zmm25, qword ptr [rdx + 1024]{1to8} + +// CHECK: vminpd zmm10, zmm25, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0x5d,0x52,0x80] + vminpd zmm10, zmm25, qword ptr [rdx - 1024]{1to8} + +// CHECK: vminpd zmm10, zmm25, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0xb5,0x50,0x5d,0x92,0xf8,0xfb,0xff,0xff] + vminpd zmm10, zmm25, qword ptr [rdx - 1032]{1to8} + +// CHECK: vminps zmm3, zmm14, zmm16 +// CHECK: encoding: [0x62,0xb1,0x0c,0x48,0x5d,0xd8] + vminps zmm3, zmm14, zmm16 + +// CHECK: vminps zmm3 {k7}, zmm14, zmm16 +// CHECK: encoding: [0x62,0xb1,0x0c,0x4f,0x5d,0xd8] + vminps zmm3 {k7}, zmm14, zmm16 + +// CHECK: vminps zmm3 {k7} {z}, zmm14, zmm16 +// CHECK: encoding: [0x62,0xb1,0x0c,0xcf,0x5d,0xd8] + vminps zmm3 {k7} {z}, zmm14, zmm16 + +// CHECK: vminps zmm3, zmm14, zmm16, {sae} +// CHECK: encoding: [0x62,0xb1,0x0c,0x18,0x5d,0xd8] + vminps zmm3, zmm14, zmm16, {sae} + +// CHECK: vminps zmm3, zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x5d,0x19] + vminps zmm3, zmm14, zmmword ptr [rcx] + +// CHECK: vminps zmm3, zmm14, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x0c,0x48,0x5d,0x9c,0xf0,0x34,0x12,0x00,0x00] + vminps zmm3, zmm14, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vminps zmm3, zmm14, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x5d,0x19] + vminps zmm3, zmm14, dword ptr [rcx]{1to16} + +// CHECK: vminps zmm3, zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x5d,0x5a,0x7f] + vminps zmm3, zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vminps zmm3, zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x5d,0x9a,0x00,0x20,0x00,0x00] + vminps zmm3, zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vminps zmm3, zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x5d,0x5a,0x80] + vminps zmm3, zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vminps zmm3, zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x0c,0x48,0x5d,0x9a,0xc0,0xdf,0xff,0xff] + vminps zmm3, zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vminps zmm3, zmm14, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x5d,0x5a,0x7f] + vminps zmm3, zmm14, dword ptr [rdx + 508]{1to16} + +// CHECK: vminps zmm3, zmm14, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x5d,0x9a,0x00,0x02,0x00,0x00] + vminps zmm3, zmm14, dword ptr [rdx + 512]{1to16} + +// CHECK: vminps zmm3, zmm14, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x5d,0x5a,0x80] + vminps zmm3, zmm14, dword ptr [rdx - 512]{1to16} + +// CHECK: vminps zmm3, zmm14, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x0c,0x58,0x5d,0x9a,0xfc,0xfd,0xff,0xff] + vminps zmm3, zmm14, dword ptr [rdx - 516]{1to16} + +// CHECK: vminsd xmm10, xmm1, xmm28 +// CHECK: encoding: [0x62,0x11,0xf7,0x08,0x5d,0xd4] + vminsd xmm10, xmm1, xmm28 + +// CHECK: vminsd xmm10 {k2}, xmm1, xmm28 +// CHECK: encoding: [0x62,0x11,0xf7,0x0a,0x5d,0xd4] + vminsd xmm10 {k2}, xmm1, xmm28 + +// CHECK: vminsd xmm10 {k2} {z}, xmm1, xmm28 +// CHECK: encoding: [0x62,0x11,0xf7,0x8a,0x5d,0xd4] + vminsd xmm10 {k2} {z}, xmm1, xmm28 + +// CHECK: vminsd xmm10, xmm1, xmm28, {sae} +// CHECK: encoding: [0x62,0x11,0xf7,0x18,0x5d,0xd4] + vminsd xmm10, xmm1, xmm28, {sae} + +// CHECK: vminsd xmm10, xmm1, qword ptr [rcx] +// CHECK: encoding: [0xc5,0x73,0x5d,0x11] + vminsd xmm10, xmm1, qword ptr [rcx] + +// CHECK: vminsd xmm10, xmm1, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0x21,0x73,0x5d,0x94,0xf0,0x34,0x12,0x00,0x00] + vminsd xmm10, xmm1, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vminsd xmm10, xmm1, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc5,0x73,0x5d,0x92,0xf8,0x03,0x00,0x00] + vminsd xmm10, xmm1, qword ptr [rdx + 1016] + +// CHECK: vminsd xmm10, xmm1, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc5,0x73,0x5d,0x92,0x00,0x04,0x00,0x00] + vminsd xmm10, xmm1, qword ptr [rdx + 1024] + +// CHECK: vminsd xmm10, xmm1, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc5,0x73,0x5d,0x92,0x00,0xfc,0xff,0xff] + vminsd xmm10, xmm1, qword ptr [rdx - 1024] + +// CHECK: vminsd xmm10, xmm1, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc5,0x73,0x5d,0x92,0xf8,0xfb,0xff,0xff] + vminsd xmm10, xmm1, qword ptr [rdx - 1032] + +// CHECK: vminss xmm28, xmm5, xmm8 +// CHECK: encoding: [0x62,0x41,0x56,0x08,0x5d,0xe0] + vminss xmm28, xmm5, xmm8 + +// CHECK: vminss xmm28 {k4}, xmm5, xmm8 +// CHECK: encoding: [0x62,0x41,0x56,0x0c,0x5d,0xe0] + vminss xmm28 {k4}, xmm5, xmm8 + +// CHECK: vminss xmm28 {k4} {z}, xmm5, xmm8 +// CHECK: encoding: [0x62,0x41,0x56,0x8c,0x5d,0xe0] + vminss xmm28 {k4} {z}, xmm5, xmm8 + +// CHECK: vminss xmm28, xmm5, xmm8, {sae} +// CHECK: encoding: [0x62,0x41,0x56,0x18,0x5d,0xe0] + vminss xmm28, xmm5, xmm8, {sae} + +// CHECK: vminss xmm28, xmm5, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x56,0x08,0x5d,0x21] + vminss xmm28, xmm5, dword ptr [rcx] + +// CHECK: vminss xmm28, xmm5, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x56,0x08,0x5d,0xa4,0xf0,0x34,0x12,0x00,0x00] + vminss xmm28, xmm5, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vminss xmm28, xmm5, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x56,0x08,0x5d,0x62,0x7f] + vminss xmm28, xmm5, dword ptr [rdx + 508] + +// CHECK: vminss xmm28, xmm5, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x56,0x08,0x5d,0xa2,0x00,0x02,0x00,0x00] + vminss xmm28, xmm5, dword ptr [rdx + 512] + +// CHECK: vminss xmm28, xmm5, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x56,0x08,0x5d,0x62,0x80] + vminss xmm28, xmm5, dword ptr [rdx - 512] + +// CHECK: vminss xmm28, xmm5, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x56,0x08,0x5d,0xa2,0xfc,0xfd,0xff,0xff] + vminss xmm28, xmm5, dword ptr [rdx - 516] + +// CHECK: vmovapd zmm23, zmm9 +// CHECK: encoding: [0x62,0xc1,0xfd,0x48,0x28,0xf9] + vmovapd zmm23, zmm9 + +// CHECK: vmovapd zmm23 {k5}, zmm9 +// CHECK: encoding: [0x62,0xc1,0xfd,0x4d,0x28,0xf9] + vmovapd zmm23 {k5}, zmm9 + +// CHECK: vmovapd zmm23 {k5} {z}, zmm9 +// CHECK: encoding: [0x62,0xc1,0xfd,0xcd,0x28,0xf9] + vmovapd zmm23 {k5} {z}, zmm9 + +// CHECK: vmovapd zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x28,0x39] + vmovapd zmm23, zmmword ptr [rcx] + +// CHECK: vmovapd zmm23, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x28,0xbc,0xf0,0x34,0x12,0x00,0x00] + vmovapd zmm23, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovapd zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x28,0x7a,0x7f] + vmovapd zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vmovapd zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x28,0xba,0x00,0x20,0x00,0x00] + vmovapd zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vmovapd zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x28,0x7a,0x80] + vmovapd zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vmovapd zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x28,0xba,0xc0,0xdf,0xff,0xff] + vmovapd zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vmovaps zmm26, zmm11 +// CHECK: encoding: [0x62,0x41,0x7c,0x48,0x28,0xd3] + vmovaps zmm26, zmm11 + +// CHECK: vmovaps zmm26 {k7}, zmm11 +// CHECK: encoding: [0x62,0x41,0x7c,0x4f,0x28,0xd3] + vmovaps zmm26 {k7}, zmm11 + +// CHECK: vmovaps zmm26 {k7} {z}, zmm11 +// CHECK: encoding: [0x62,0x41,0x7c,0xcf,0x28,0xd3] + vmovaps zmm26 {k7} {z}, zmm11 + +// CHECK: vmovaps zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x28,0x11] + vmovaps zmm26, zmmword ptr [rcx] + +// CHECK: vmovaps zmm26, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x7c,0x48,0x28,0x94,0xf0,0x34,0x12,0x00,0x00] + vmovaps zmm26, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovaps zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x28,0x52,0x7f] + vmovaps zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vmovaps zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x28,0x92,0x00,0x20,0x00,0x00] + vmovaps zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vmovaps zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x28,0x52,0x80] + vmovaps zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vmovaps zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x28,0x92,0xc0,0xdf,0xff,0xff] + vmovaps zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vmovd xmm14, eax +// CHECK: encoding: [0xc5,0x79,0x6e,0xf0] + vmovd xmm14, eax + +// CHECK: vmovd xmm14, ebp +// CHECK: encoding: [0xc5,0x79,0x6e,0xf5] + vmovd xmm14, ebp + +// CHECK: vmovd xmm14, r13d +// CHECK: encoding: [0xc4,0x41,0x79,0x6e,0xf5] + vmovd xmm14, r13d + +// CHECK: vmovd xmm14, dword ptr [rcx] +// CHECK: encoding: [0xc5,0x79,0x6e,0x31] + vmovd xmm14, dword ptr [rcx] + +// CHECK: vmovd xmm14, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0x21,0x79,0x6e,0xb4,0xf0,0x34,0x12,0x00,0x00] + vmovd xmm14, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovd xmm14, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0x79,0x6e,0xb2,0xfc,0x01,0x00,0x00] + vmovd xmm14, dword ptr [rdx + 508] + +// CHECK: vmovd xmm14, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0x79,0x6e,0xb2,0x00,0x02,0x00,0x00] + vmovd xmm14, dword ptr [rdx + 512] + +// CHECK: vmovd xmm14, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0x79,0x6e,0xb2,0x00,0xfe,0xff,0xff] + vmovd xmm14, dword ptr [rdx - 512] + +// CHECK: vmovd xmm14, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0x79,0x6e,0xb2,0xfc,0xfd,0xff,0xff] + vmovd xmm14, dword ptr [rdx - 516] + +// CHECK: vmovd dword ptr [rcx], xmm14 +// CHECK: encoding: [0xc5,0x79,0x7e,0x31] + vmovd dword ptr [rcx], xmm14 + +// CHECK: vmovd dword ptr [rax + 8*r14 + 4660], xmm14 +// CHECK: encoding: [0xc4,0x21,0x79,0x7e,0xb4,0xf0,0x34,0x12,0x00,0x00] + vmovd dword ptr [rax + 8*r14 + 4660], xmm14 + +// CHECK: vmovd dword ptr [rdx + 508], xmm14 +// CHECK: encoding: [0xc5,0x79,0x7e,0xb2,0xfc,0x01,0x00,0x00] + vmovd dword ptr [rdx + 508], xmm14 + +// CHECK: vmovd dword ptr [rdx + 512], xmm14 +// CHECK: encoding: [0xc5,0x79,0x7e,0xb2,0x00,0x02,0x00,0x00] + vmovd dword ptr [rdx + 512], xmm14 + +// CHECK: vmovd dword ptr [rdx - 512], xmm14 +// CHECK: encoding: [0xc5,0x79,0x7e,0xb2,0x00,0xfe,0xff,0xff] + vmovd dword ptr [rdx - 512], xmm14 + +// CHECK: vmovd dword ptr [rdx - 516], xmm14 +// CHECK: encoding: [0xc5,0x79,0x7e,0xb2,0xfc,0xfd,0xff,0xff] + vmovd dword ptr [rdx - 516], xmm14 + +// CHECK: vmovddup zmm1, zmm10 +// CHECK: encoding: [0x62,0xd1,0xff,0x48,0x12,0xca] + vmovddup zmm1, zmm10 + +// CHECK: vmovddup zmm1 {k3}, zmm10 +// CHECK: encoding: [0x62,0xd1,0xff,0x4b,0x12,0xca] + vmovddup zmm1 {k3}, zmm10 + +// CHECK: vmovddup zmm1 {k3} {z}, zmm10 +// CHECK: encoding: [0x62,0xd1,0xff,0xcb,0x12,0xca] + vmovddup zmm1 {k3} {z}, zmm10 + +// CHECK: vmovddup zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0x09] + vmovddup zmm1, zmmword ptr [rcx] + +// CHECK: vmovddup zmm1, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xff,0x48,0x12,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovddup zmm1, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovddup zmm1, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0x4a,0x7f] + vmovddup zmm1, zmmword ptr [rdx + 8128] + +// CHECK: vmovddup zmm1, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0x8a,0x00,0x20,0x00,0x00] + vmovddup zmm1, zmmword ptr [rdx + 8192] + +// CHECK: vmovddup zmm1, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0x4a,0x80] + vmovddup zmm1, zmmword ptr [rdx - 8192] + +// CHECK: vmovddup zmm1, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xff,0x48,0x12,0x8a,0xc0,0xdf,0xff,0xff] + vmovddup zmm1, zmmword ptr [rdx - 8256] + +// CHECK: vmovdqa32 zmm22, zmm29 +// CHECK: encoding: [0x62,0x81,0x7d,0x48,0x6f,0xf5] + vmovdqa32 zmm22, zmm29 + +// CHECK: vmovdqa32 zmm22 {k5}, zmm29 +// CHECK: encoding: [0x62,0x81,0x7d,0x4d,0x6f,0xf5] + vmovdqa32 zmm22 {k5}, zmm29 + +// CHECK: vmovdqa32 zmm22 {k5} {z}, zmm29 +// CHECK: encoding: [0x62,0x81,0x7d,0xcd,0x6f,0xf5] + vmovdqa32 zmm22 {k5} {z}, zmm29 + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0x31] + vmovdqa32 zmm22, zmmword ptr [rcx] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x7d,0x48,0x6f,0xb4,0xf0,0x34,0x12,0x00,0x00] + vmovdqa32 zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0x72,0x7f] + vmovdqa32 zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0xb2,0x00,0x20,0x00,0x00] + vmovdqa32 zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0x72,0x80] + vmovdqa32 zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vmovdqa32 zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x6f,0xb2,0xc0,0xdf,0xff,0xff] + vmovdqa32 zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vmovdqa64 zmm9, zmm7 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x6f,0xcf] + vmovdqa64 zmm9, zmm7 + +// CHECK: vmovdqa64 zmm9 {k2}, zmm7 +// CHECK: encoding: [0x62,0x71,0xfd,0x4a,0x6f,0xcf] + vmovdqa64 zmm9 {k2}, zmm7 + +// CHECK: vmovdqa64 zmm9 {k2} {z}, zmm7 +// CHECK: encoding: [0x62,0x71,0xfd,0xca,0x6f,0xcf] + vmovdqa64 zmm9 {k2} {z}, zmm7 + +// CHECK: vmovdqa64 zmm9, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x6f,0x09] + vmovdqa64 zmm9, zmmword ptr [rcx] + +// CHECK: vmovdqa64 zmm9, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xfd,0x48,0x6f,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovdqa64 zmm9, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovdqa64 zmm9, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x6f,0x4a,0x7f] + vmovdqa64 zmm9, zmmword ptr [rdx + 8128] + +// CHECK: vmovdqa64 zmm9, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x6f,0x8a,0x00,0x20,0x00,0x00] + vmovdqa64 zmm9, zmmword ptr [rdx + 8192] + +// CHECK: vmovdqa64 zmm9, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x6f,0x4a,0x80] + vmovdqa64 zmm9, zmmword ptr [rdx - 8192] + +// CHECK: vmovdqa64 zmm9, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x6f,0x8a,0xc0,0xdf,0xff,0xff] + vmovdqa64 zmm9, zmmword ptr [rdx - 8256] + +// CHECK: vmovdqu32 zmm5, zmm22 +// CHECK: encoding: [0x62,0xb1,0x7e,0x48,0x6f,0xee] + vmovdqu32 zmm5, zmm22 + +// CHECK: vmovdqu32 zmm5 {k5}, zmm22 +// CHECK: encoding: [0x62,0xb1,0x7e,0x4d,0x6f,0xee] + vmovdqu32 zmm5 {k5}, zmm22 + +// CHECK: vmovdqu32 zmm5 {k5} {z}, zmm22 +// CHECK: encoding: [0x62,0xb1,0x7e,0xcd,0x6f,0xee] + vmovdqu32 zmm5 {k5} {z}, zmm22 + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0x29] + vmovdqu32 zmm5, zmmword ptr [rcx] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7e,0x48,0x6f,0xac,0xf0,0x34,0x12,0x00,0x00] + vmovdqu32 zmm5, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0x6a,0x7f] + vmovdqu32 zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0xaa,0x00,0x20,0x00,0x00] + vmovdqu32 zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0x6a,0x80] + vmovdqu32 zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vmovdqu32 zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x6f,0xaa,0xc0,0xdf,0xff,0xff] + vmovdqu32 zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vmovdqu64 zmm28, zmm5 +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x6f,0xe5] + vmovdqu64 zmm28, zmm5 + +// CHECK: vmovdqu64 zmm28 {k3}, zmm5 +// CHECK: encoding: [0x62,0x61,0xfe,0x4b,0x6f,0xe5] + vmovdqu64 zmm28 {k3}, zmm5 + +// CHECK: vmovdqu64 zmm28 {k3} {z}, zmm5 +// CHECK: encoding: [0x62,0x61,0xfe,0xcb,0x6f,0xe5] + vmovdqu64 zmm28 {k3} {z}, zmm5 + +// CHECK: vmovdqu64 zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x6f,0x21] + vmovdqu64 zmm28, zmmword ptr [rcx] + +// CHECK: vmovdqu64 zmm28, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0xfe,0x48,0x6f,0xa4,0xf0,0x34,0x12,0x00,0x00] + vmovdqu64 zmm28, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovdqu64 zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x6f,0x62,0x7f] + vmovdqu64 zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vmovdqu64 zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x6f,0xa2,0x00,0x20,0x00,0x00] + vmovdqu64 zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vmovdqu64 zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x6f,0x62,0x80] + vmovdqu64 zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vmovdqu64 zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xfe,0x48,0x6f,0xa2,0xc0,0xdf,0xff,0xff] + vmovdqu64 zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vmovhlps xmm22, xmm16, xmm25 +// CHECK: encoding: [0x62,0x81,0x7c,0x00,0x12,0xf1] + vmovhlps xmm22, xmm16, xmm25 + +// CHECK: vmovhpd xmm25, xmm1, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xf5,0x08,0x16,0x09] + vmovhpd xmm25, xmm1, qword ptr [rcx] + +// CHECK: vmovhpd xmm25, xmm1, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0xf5,0x08,0x16,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovhpd xmm25, xmm1, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovhpd xmm25, xmm1, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x61,0xf5,0x08,0x16,0x4a,0x7f] + vmovhpd xmm25, xmm1, qword ptr [rdx + 1016] + +// CHECK: vmovhpd xmm25, xmm1, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x61,0xf5,0x08,0x16,0x8a,0x00,0x04,0x00,0x00] + vmovhpd xmm25, xmm1, qword ptr [rdx + 1024] + +// CHECK: vmovhpd xmm25, xmm1, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x61,0xf5,0x08,0x16,0x4a,0x80] + vmovhpd xmm25, xmm1, qword ptr [rdx - 1024] + +// CHECK: vmovhpd xmm25, xmm1, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x61,0xf5,0x08,0x16,0x8a,0xf8,0xfb,0xff,0xff] + vmovhpd xmm25, xmm1, qword ptr [rdx - 1032] + +// CHECK: vmovhpd qword ptr [rcx], xmm9 +// CHECK: encoding: [0xc5,0x79,0x17,0x09] + vmovhpd qword ptr [rcx], xmm9 + +// CHECK: vmovhpd qword ptr [rax + 8*r14 + 4660], xmm9 +// CHECK: encoding: [0xc4,0x21,0x79,0x17,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovhpd qword ptr [rax + 8*r14 + 4660], xmm9 + +// CHECK: vmovhpd qword ptr [rdx + 1016], xmm9 +// CHECK: encoding: [0xc5,0x79,0x17,0x8a,0xf8,0x03,0x00,0x00] + vmovhpd qword ptr [rdx + 1016], xmm9 + +// CHECK: vmovhpd qword ptr [rdx + 1024], xmm9 +// CHECK: encoding: [0xc5,0x79,0x17,0x8a,0x00,0x04,0x00,0x00] + vmovhpd qword ptr [rdx + 1024], xmm9 + +// CHECK: vmovhpd qword ptr [rdx - 1024], xmm9 +// CHECK: encoding: [0xc5,0x79,0x17,0x8a,0x00,0xfc,0xff,0xff] + vmovhpd qword ptr [rdx - 1024], xmm9 + +// CHECK: vmovhpd qword ptr [rdx - 1032], xmm9 +// CHECK: encoding: [0xc5,0x79,0x17,0x8a,0xf8,0xfb,0xff,0xff] + vmovhpd qword ptr [rdx - 1032], xmm9 + +// CHECK: vmovhps xmm28, xmm17, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x74,0x00,0x16,0x21] + vmovhps xmm28, xmm17, qword ptr [rcx] + +// CHECK: vmovhps xmm28, xmm17, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x74,0x00,0x16,0xa4,0xf0,0x34,0x12,0x00,0x00] + vmovhps xmm28, xmm17, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovhps xmm28, xmm17, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x61,0x74,0x00,0x16,0x62,0x7f] + vmovhps xmm28, xmm17, qword ptr [rdx + 1016] + +// CHECK: vmovhps xmm28, xmm17, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x61,0x74,0x00,0x16,0xa2,0x00,0x04,0x00,0x00] + vmovhps xmm28, xmm17, qword ptr [rdx + 1024] + +// CHECK: vmovhps xmm28, xmm17, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x61,0x74,0x00,0x16,0x62,0x80] + vmovhps xmm28, xmm17, qword ptr [rdx - 1024] + +// CHECK: vmovhps xmm28, xmm17, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x61,0x74,0x00,0x16,0xa2,0xf8,0xfb,0xff,0xff] + vmovhps xmm28, xmm17, qword ptr [rdx - 1032] + +// CHECK: vmovhps qword ptr [rcx], xmm13 +// CHECK: encoding: [0xc5,0x78,0x17,0x29] + vmovhps qword ptr [rcx], xmm13 + +// CHECK: vmovhps qword ptr [rax + 8*r14 + 4660], xmm13 +// CHECK: encoding: [0xc4,0x21,0x78,0x17,0xac,0xf0,0x34,0x12,0x00,0x00] + vmovhps qword ptr [rax + 8*r14 + 4660], xmm13 + +// CHECK: vmovhps qword ptr [rdx + 1016], xmm13 +// CHECK: encoding: [0xc5,0x78,0x17,0xaa,0xf8,0x03,0x00,0x00] + vmovhps qword ptr [rdx + 1016], xmm13 + +// CHECK: vmovhps qword ptr [rdx + 1024], xmm13 +// CHECK: encoding: [0xc5,0x78,0x17,0xaa,0x00,0x04,0x00,0x00] + vmovhps qword ptr [rdx + 1024], xmm13 + +// CHECK: vmovhps qword ptr [rdx - 1024], xmm13 +// CHECK: encoding: [0xc5,0x78,0x17,0xaa,0x00,0xfc,0xff,0xff] + vmovhps qword ptr [rdx - 1024], xmm13 + +// CHECK: vmovhps qword ptr [rdx - 1032], xmm13 +// CHECK: encoding: [0xc5,0x78,0x17,0xaa,0xf8,0xfb,0xff,0xff] + vmovhps qword ptr [rdx - 1032], xmm13 + +// CHECK: vmovlhps xmm6, xmm12, xmm6 +// CHECK: encoding: [0xc5,0x98,0x16,0xf6] + vmovlhps xmm6, xmm12, xmm6 + +// CHECK: vmovlpd xmm17, xmm20, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x12,0x09] + vmovlpd xmm17, xmm20, qword ptr [rcx] + +// CHECK: vmovlpd xmm17, xmm20, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xdd,0x00,0x12,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovlpd xmm17, xmm20, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovlpd xmm17, xmm20, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x12,0x4a,0x7f] + vmovlpd xmm17, xmm20, qword ptr [rdx + 1016] + +// CHECK: vmovlpd xmm17, xmm20, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x12,0x8a,0x00,0x04,0x00,0x00] + vmovlpd xmm17, xmm20, qword ptr [rdx + 1024] + +// CHECK: vmovlpd xmm17, xmm20, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x12,0x4a,0x80] + vmovlpd xmm17, xmm20, qword ptr [rdx - 1024] + +// CHECK: vmovlpd xmm17, xmm20, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x12,0x8a,0xf8,0xfb,0xff,0xff] + vmovlpd xmm17, xmm20, qword ptr [rdx - 1032] + +// CHECK: vmovlpd qword ptr [rcx], xmm7 +// CHECK: encoding: [0xc5,0xf9,0x13,0x39] + vmovlpd qword ptr [rcx], xmm7 + +// CHECK: vmovlpd qword ptr [rax + 8*r14 + 4660], xmm7 +// CHECK: encoding: [0xc4,0xa1,0x79,0x13,0xbc,0xf0,0x34,0x12,0x00,0x00] + vmovlpd qword ptr [rax + 8*r14 + 4660], xmm7 + +// CHECK: vmovlpd qword ptr [rdx + 1016], xmm7 +// CHECK: encoding: [0xc5,0xf9,0x13,0xba,0xf8,0x03,0x00,0x00] + vmovlpd qword ptr [rdx + 1016], xmm7 + +// CHECK: vmovlpd qword ptr [rdx + 1024], xmm7 +// CHECK: encoding: [0xc5,0xf9,0x13,0xba,0x00,0x04,0x00,0x00] + vmovlpd qword ptr [rdx + 1024], xmm7 + +// CHECK: vmovlpd qword ptr [rdx - 1024], xmm7 +// CHECK: encoding: [0xc5,0xf9,0x13,0xba,0x00,0xfc,0xff,0xff] + vmovlpd qword ptr [rdx - 1024], xmm7 + +// CHECK: vmovlpd qword ptr [rdx - 1032], xmm7 +// CHECK: encoding: [0xc5,0xf9,0x13,0xba,0xf8,0xfb,0xff,0xff] + vmovlpd qword ptr [rdx - 1032], xmm7 + +// CHECK: vmovlps xmm11, xmm11, qword ptr [rcx] +// CHECK: encoding: [0xc5,0x20,0x12,0x19] + vmovlps xmm11, xmm11, qword ptr [rcx] + +// CHECK: vmovlps xmm11, xmm11, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0x21,0x20,0x12,0x9c,0xf0,0x34,0x12,0x00,0x00] + vmovlps xmm11, xmm11, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovlps xmm11, xmm11, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc5,0x20,0x12,0x9a,0xf8,0x03,0x00,0x00] + vmovlps xmm11, xmm11, qword ptr [rdx + 1016] + +// CHECK: vmovlps xmm11, xmm11, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc5,0x20,0x12,0x9a,0x00,0x04,0x00,0x00] + vmovlps xmm11, xmm11, qword ptr [rdx + 1024] + +// CHECK: vmovlps xmm11, xmm11, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc5,0x20,0x12,0x9a,0x00,0xfc,0xff,0xff] + vmovlps xmm11, xmm11, qword ptr [rdx - 1024] + +// CHECK: vmovlps xmm11, xmm11, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc5,0x20,0x12,0x9a,0xf8,0xfb,0xff,0xff] + vmovlps xmm11, xmm11, qword ptr [rdx - 1032] + +// CHECK: vmovlps qword ptr [rcx], xmm21 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x13,0x29] + vmovlps qword ptr [rcx], xmm21 + +// CHECK: vmovlps qword ptr [rax + 8*r14 + 4660], xmm21 +// CHECK: encoding: [0x62,0xa1,0x7c,0x08,0x13,0xac,0xf0,0x34,0x12,0x00,0x00] + vmovlps qword ptr [rax + 8*r14 + 4660], xmm21 + +// CHECK: vmovlps qword ptr [rdx + 1016], xmm21 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x13,0x6a,0x7f] + vmovlps qword ptr [rdx + 1016], xmm21 + +// CHECK: vmovlps qword ptr [rdx + 1024], xmm21 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x13,0xaa,0x00,0x04,0x00,0x00] + vmovlps qword ptr [rdx + 1024], xmm21 + +// CHECK: vmovlps qword ptr [rdx - 1024], xmm21 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x13,0x6a,0x80] + vmovlps qword ptr [rdx - 1024], xmm21 + +// CHECK: vmovlps qword ptr [rdx - 1032], xmm21 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x13,0xaa,0xf8,0xfb,0xff,0xff] + vmovlps qword ptr [rdx - 1032], xmm21 + +// CHECK: vmovntdq zmmword ptr [rcx], zmm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0xe7,0x21] + vmovntdq zmmword ptr [rcx], zmm20 + +// CHECK: vmovntdq zmmword ptr [rax + 8*r14 + 4660], zmm20 +// CHECK: encoding: [0x62,0xa1,0x7d,0x48,0xe7,0xa4,0xf0,0x34,0x12,0x00,0x00] + vmovntdq zmmword ptr [rax + 8*r14 + 4660], zmm20 + +// CHECK: vmovntdq zmmword ptr [rdx + 8128], zmm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0xe7,0x62,0x7f] + vmovntdq zmmword ptr [rdx + 8128], zmm20 + +// CHECK: vmovntdq zmmword ptr [rdx + 8192], zmm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0xe7,0xa2,0x00,0x20,0x00,0x00] + vmovntdq zmmword ptr [rdx + 8192], zmm20 + +// CHECK: vmovntdq zmmword ptr [rdx - 8192], zmm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0xe7,0x62,0x80] + vmovntdq zmmword ptr [rdx - 8192], zmm20 + +// CHECK: vmovntdq zmmword ptr [rdx - 8256], zmm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0xe7,0xa2,0xc0,0xdf,0xff,0xff] + vmovntdq zmmword ptr [rdx - 8256], zmm20 + +// CHECK: vmovntdqa zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x2a,0x11] + vmovntdqa zmm10, zmmword ptr [rcx] + +// CHECK: vmovntdqa zmm10, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x2a,0x94,0xf0,0x34,0x12,0x00,0x00] + vmovntdqa zmm10, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovntdqa zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x2a,0x52,0x7f] + vmovntdqa zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vmovntdqa zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x2a,0x92,0x00,0x20,0x00,0x00] + vmovntdqa zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vmovntdqa zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x2a,0x52,0x80] + vmovntdqa zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vmovntdqa zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x2a,0x92,0xc0,0xdf,0xff,0xff] + vmovntdqa zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vmovntpd zmmword ptr [rcx], zmm21 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0x29] + vmovntpd zmmword ptr [rcx], zmm21 + +// CHECK: vmovntpd zmmword ptr [rax + 8*r14 + 4660], zmm21 +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x2b,0xac,0xf0,0x34,0x12,0x00,0x00] + vmovntpd zmmword ptr [rax + 8*r14 + 4660], zmm21 + +// CHECK: vmovntpd zmmword ptr [rdx + 8128], zmm21 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0x6a,0x7f] + vmovntpd zmmword ptr [rdx + 8128], zmm21 + +// CHECK: vmovntpd zmmword ptr [rdx + 8192], zmm21 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0xaa,0x00,0x20,0x00,0x00] + vmovntpd zmmword ptr [rdx + 8192], zmm21 + +// CHECK: vmovntpd zmmword ptr [rdx - 8192], zmm21 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0x6a,0x80] + vmovntpd zmmword ptr [rdx - 8192], zmm21 + +// CHECK: vmovntpd zmmword ptr [rdx - 8256], zmm21 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x2b,0xaa,0xc0,0xdf,0xff,0xff] + vmovntpd zmmword ptr [rdx - 8256], zmm21 + +// CHECK: vmovntps zmmword ptr [rcx], zmm23 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x2b,0x39] + vmovntps zmmword ptr [rcx], zmm23 + +// CHECK: vmovntps zmmword ptr [rax + 8*r14 + 4660], zmm23 +// CHECK: encoding: [0x62,0xa1,0x7c,0x48,0x2b,0xbc,0xf0,0x34,0x12,0x00,0x00] + vmovntps zmmword ptr [rax + 8*r14 + 4660], zmm23 + +// CHECK: vmovntps zmmword ptr [rdx + 8128], zmm23 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x2b,0x7a,0x7f] + vmovntps zmmword ptr [rdx + 8128], zmm23 + +// CHECK: vmovntps zmmword ptr [rdx + 8192], zmm23 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x2b,0xba,0x00,0x20,0x00,0x00] + vmovntps zmmword ptr [rdx + 8192], zmm23 + +// CHECK: vmovntps zmmword ptr [rdx - 8192], zmm23 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x2b,0x7a,0x80] + vmovntps zmmword ptr [rdx - 8192], zmm23 + +// CHECK: vmovntps zmmword ptr [rdx - 8256], zmm23 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x2b,0xba,0xc0,0xdf,0xff,0xff] + vmovntps zmmword ptr [rdx - 8256], zmm23 + +// CHECK: vmovq xmm24, rax +// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x6e,0xc0] + vmovq xmm24, rax + +// CHECK: vmovq xmm24, r8 +// CHECK: encoding: [0x62,0x41,0xfd,0x08,0x6e,0xc0] + vmovq xmm24, r8 + +// CHECK: vmovsd xmm5, qword ptr [rcx] +// CHECK: encoding: [0xc5,0xfb,0x10,0x29] + vmovsd xmm5, qword ptr [rcx] + +// CHECK: vmovsd xmm5 {k3}, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x0b,0x10,0x29] + vmovsd xmm5 {k3}, qword ptr [rcx] + +// CHECK: vmovsd xmm5 {k3} {z}, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x8b,0x10,0x29] + vmovsd xmm5 {k3} {z}, qword ptr [rcx] + +// CHECK: vmovsd xmm5, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa1,0x7b,0x10,0xac,0xf0,0x34,0x12,0x00,0x00] + vmovsd xmm5, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovsd xmm5, qword ptr [rdx + 1016] +// CHECK: encoding: [0xc5,0xfb,0x10,0xaa,0xf8,0x03,0x00,0x00] + vmovsd xmm5, qword ptr [rdx + 1016] + +// CHECK: vmovsd xmm5, qword ptr [rdx + 1024] +// CHECK: encoding: [0xc5,0xfb,0x10,0xaa,0x00,0x04,0x00,0x00] + vmovsd xmm5, qword ptr [rdx + 1024] + +// CHECK: vmovsd xmm5, qword ptr [rdx - 1024] +// CHECK: encoding: [0xc5,0xfb,0x10,0xaa,0x00,0xfc,0xff,0xff] + vmovsd xmm5, qword ptr [rdx - 1024] + +// CHECK: vmovsd xmm5, qword ptr [rdx - 1032] +// CHECK: encoding: [0xc5,0xfb,0x10,0xaa,0xf8,0xfb,0xff,0xff] + vmovsd xmm5, qword ptr [rdx - 1032] + +// CHECK: vmovsd qword ptr [rcx], xmm17 +// CHECK: encoding: [0x62,0xe1,0xff,0x08,0x11,0x09] + vmovsd qword ptr [rcx], xmm17 + +// CHECK: vmovsd qword ptr [rcx] {k3}, xmm17 +// CHECK: encoding: [0x62,0xe1,0xff,0x0b,0x11,0x09] + vmovsd qword ptr [rcx] {k3}, xmm17 + +// CHECK: vmovsd qword ptr [rax + 8*r14 + 4660], xmm17 +// CHECK: encoding: [0x62,0xa1,0xff,0x08,0x11,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovsd qword ptr [rax + 8*r14 + 4660], xmm17 + +// CHECK: vmovsd qword ptr [rdx + 1016], xmm17 +// CHECK: encoding: [0x62,0xe1,0xff,0x08,0x11,0x4a,0x7f] + vmovsd qword ptr [rdx + 1016], xmm17 + +// CHECK: vmovsd qword ptr [rdx + 1024], xmm17 +// CHECK: encoding: [0x62,0xe1,0xff,0x08,0x11,0x8a,0x00,0x04,0x00,0x00] + vmovsd qword ptr [rdx + 1024], xmm17 + +// CHECK: vmovsd qword ptr [rdx - 1024], xmm17 +// CHECK: encoding: [0x62,0xe1,0xff,0x08,0x11,0x4a,0x80] + vmovsd qword ptr [rdx - 1024], xmm17 + +// CHECK: vmovsd qword ptr [rdx - 1032], xmm17 +// CHECK: encoding: [0x62,0xe1,0xff,0x08,0x11,0x8a,0xf8,0xfb,0xff,0xff] + vmovsd qword ptr [rdx - 1032], xmm17 + +// CHECK: vmovsd xmm21, xmm29, xmm12 +// CHECK: encoding: [0x62,0xc1,0x97,0x00,0x10,0xec] + vmovsd xmm21, xmm29, xmm12 + +// CHECK: vmovsd xmm21 {k7}, xmm29, xmm12 +// CHECK: encoding: [0x62,0xc1,0x97,0x07,0x10,0xec] + vmovsd xmm21 {k7}, xmm29, xmm12 + +// CHECK: vmovsd xmm21 {k7} {z}, xmm29, xmm12 +// CHECK: encoding: [0x62,0xc1,0x97,0x87,0x10,0xec] + vmovsd xmm21 {k7} {z}, xmm29, xmm12 + +// CHECK: vmovshdup zmm18, zmm20 +// CHECK: encoding: [0x62,0xa1,0x7e,0x48,0x16,0xd4] + vmovshdup zmm18, zmm20 + +// CHECK: vmovshdup zmm18 {k5}, zmm20 +// CHECK: encoding: [0x62,0xa1,0x7e,0x4d,0x16,0xd4] + vmovshdup zmm18 {k5}, zmm20 + +// CHECK: vmovshdup zmm18 {k5} {z}, zmm20 +// CHECK: encoding: [0x62,0xa1,0x7e,0xcd,0x16,0xd4] + vmovshdup zmm18 {k5} {z}, zmm20 + +// CHECK: vmovshdup zmm18, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x11] + vmovshdup zmm18, zmmword ptr [rcx] + +// CHECK: vmovshdup zmm18, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x7e,0x48,0x16,0x94,0xf0,0x34,0x12,0x00,0x00] + vmovshdup zmm18, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovshdup zmm18, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x52,0x7f] + vmovshdup zmm18, zmmword ptr [rdx + 8128] + +// CHECK: vmovshdup zmm18, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x92,0x00,0x20,0x00,0x00] + vmovshdup zmm18, zmmword ptr [rdx + 8192] + +// CHECK: vmovshdup zmm18, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x52,0x80] + vmovshdup zmm18, zmmword ptr [rdx - 8192] + +// CHECK: vmovshdup zmm18, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7e,0x48,0x16,0x92,0xc0,0xdf,0xff,0xff] + vmovshdup zmm18, zmmword ptr [rdx - 8256] + +// CHECK: vmovsldup zmm9, zmm5 +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0xcd] + vmovsldup zmm9, zmm5 + +// CHECK: vmovsldup zmm9 {k7}, zmm5 +// CHECK: encoding: [0x62,0x71,0x7e,0x4f,0x12,0xcd] + vmovsldup zmm9 {k7}, zmm5 + +// CHECK: vmovsldup zmm9 {k7} {z}, zmm5 +// CHECK: encoding: [0x62,0x71,0x7e,0xcf,0x12,0xcd] + vmovsldup zmm9 {k7} {z}, zmm5 + +// CHECK: vmovsldup zmm9, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0x09] + vmovsldup zmm9, zmmword ptr [rcx] + +// CHECK: vmovsldup zmm9, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x7e,0x48,0x12,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovsldup zmm9, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovsldup zmm9, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0x4a,0x7f] + vmovsldup zmm9, zmmword ptr [rdx + 8128] + +// CHECK: vmovsldup zmm9, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0x8a,0x00,0x20,0x00,0x00] + vmovsldup zmm9, zmmword ptr [rdx + 8192] + +// CHECK: vmovsldup zmm9, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0x4a,0x80] + vmovsldup zmm9, zmmword ptr [rdx - 8192] + +// CHECK: vmovsldup zmm9, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x7e,0x48,0x12,0x8a,0xc0,0xdf,0xff,0xff] + vmovsldup zmm9, zmmword ptr [rdx - 8256] + +// CHECK: vmovss xmm1, dword ptr [rcx] +// CHECK: encoding: [0xc5,0xfa,0x10,0x09] + vmovss xmm1, dword ptr [rcx] + +// CHECK: vmovss xmm1 {k4}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x0c,0x10,0x09] + vmovss xmm1 {k4}, dword ptr [rcx] + +// CHECK: vmovss xmm1 {k4} {z}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x8c,0x10,0x09] + vmovss xmm1 {k4} {z}, dword ptr [rcx] + +// CHECK: vmovss xmm1, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa1,0x7a,0x10,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovss xmm1, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovss xmm1, dword ptr [rdx + 508] +// CHECK: encoding: [0xc5,0xfa,0x10,0x8a,0xfc,0x01,0x00,0x00] + vmovss xmm1, dword ptr [rdx + 508] + +// CHECK: vmovss xmm1, dword ptr [rdx + 512] +// CHECK: encoding: [0xc5,0xfa,0x10,0x8a,0x00,0x02,0x00,0x00] + vmovss xmm1, dword ptr [rdx + 512] + +// CHECK: vmovss xmm1, dword ptr [rdx - 512] +// CHECK: encoding: [0xc5,0xfa,0x10,0x8a,0x00,0xfe,0xff,0xff] + vmovss xmm1, dword ptr [rdx - 512] + +// CHECK: vmovss xmm1, dword ptr [rdx - 516] +// CHECK: encoding: [0xc5,0xfa,0x10,0x8a,0xfc,0xfd,0xff,0xff] + vmovss xmm1, dword ptr [rdx - 516] + +// CHECK: vmovss dword ptr [rcx], xmm13 +// CHECK: encoding: [0xc5,0x7a,0x11,0x29] + vmovss dword ptr [rcx], xmm13 + +// CHECK: vmovss dword ptr [rcx] {k2}, xmm13 +// CHECK: encoding: [0x62,0x71,0x7e,0x0a,0x11,0x29] + vmovss dword ptr [rcx] {k2}, xmm13 + +// CHECK: vmovss dword ptr [rax + 8*r14 + 4660], xmm13 +// CHECK: encoding: [0xc4,0x21,0x7a,0x11,0xac,0xf0,0x34,0x12,0x00,0x00] + vmovss dword ptr [rax + 8*r14 + 4660], xmm13 + +// CHECK: vmovss dword ptr [rdx + 508], xmm13 +// CHECK: encoding: [0xc5,0x7a,0x11,0xaa,0xfc,0x01,0x00,0x00] + vmovss dword ptr [rdx + 508], xmm13 + +// CHECK: vmovss dword ptr [rdx + 512], xmm13 +// CHECK: encoding: [0xc5,0x7a,0x11,0xaa,0x00,0x02,0x00,0x00] + vmovss dword ptr [rdx + 512], xmm13 + +// CHECK: vmovss dword ptr [rdx - 512], xmm13 +// CHECK: encoding: [0xc5,0x7a,0x11,0xaa,0x00,0xfe,0xff,0xff] + vmovss dword ptr [rdx - 512], xmm13 + +// CHECK: vmovss dword ptr [rdx - 516], xmm13 +// CHECK: encoding: [0xc5,0x7a,0x11,0xaa,0xfc,0xfd,0xff,0xff] + vmovss dword ptr [rdx - 516], xmm13 + +// CHECK: vmovss xmm18, xmm27, xmm14 +// CHECK: encoding: [0x62,0xc1,0x26,0x00,0x10,0xd6] + vmovss xmm18, xmm27, xmm14 + +// CHECK: vmovss xmm18 {k2}, xmm27, xmm14 +// CHECK: encoding: [0x62,0xc1,0x26,0x02,0x10,0xd6] + vmovss xmm18 {k2}, xmm27, xmm14 + +// CHECK: vmovss xmm18 {k2} {z}, xmm27, xmm14 +// CHECK: encoding: [0x62,0xc1,0x26,0x82,0x10,0xd6] + vmovss xmm18 {k2} {z}, xmm27, xmm14 + +// CHECK: vmovupd zmm16, zmm6 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x10,0xc6] + vmovupd zmm16, zmm6 + +// CHECK: vmovupd zmm16 {k2}, zmm6 +// CHECK: encoding: [0x62,0xe1,0xfd,0x4a,0x10,0xc6] + vmovupd zmm16 {k2}, zmm6 + +// CHECK: vmovupd zmm16 {k2} {z}, zmm6 +// CHECK: encoding: [0x62,0xe1,0xfd,0xca,0x10,0xc6] + vmovupd zmm16 {k2} {z}, zmm6 + +// CHECK: vmovupd zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x10,0x01] + vmovupd zmm16, zmmword ptr [rcx] + +// CHECK: vmovupd zmm16, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x10,0x84,0xf0,0x34,0x12,0x00,0x00] + vmovupd zmm16, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovupd zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x10,0x42,0x7f] + vmovupd zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vmovupd zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x10,0x82,0x00,0x20,0x00,0x00] + vmovupd zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vmovupd zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x10,0x42,0x80] + vmovupd zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vmovupd zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x10,0x82,0xc0,0xdf,0xff,0xff] + vmovupd zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vmovups zmm22, zmm4 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0xf4] + vmovups zmm22, zmm4 + +// CHECK: vmovups zmm22 {k7}, zmm4 +// CHECK: encoding: [0x62,0xe1,0x7c,0x4f,0x10,0xf4] + vmovups zmm22 {k7}, zmm4 + +// CHECK: vmovups zmm22 {k7} {z}, zmm4 +// CHECK: encoding: [0x62,0xe1,0x7c,0xcf,0x10,0xf4] + vmovups zmm22 {k7} {z}, zmm4 + +// CHECK: vmovups zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0x31] + vmovups zmm22, zmmword ptr [rcx] + +// CHECK: vmovups zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x7c,0x48,0x10,0xb4,0xf0,0x34,0x12,0x00,0x00] + vmovups zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmovups zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0x72,0x7f] + vmovups zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vmovups zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0xb2,0x00,0x20,0x00,0x00] + vmovups zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vmovups zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0x72,0x80] + vmovups zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vmovups zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x10,0xb2,0xc0,0xdf,0xff,0xff] + vmovups zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vmulpd zmm24, zmm25, zmm5 +// CHECK: encoding: [0x62,0x61,0xb5,0x40,0x59,0xc5] + vmulpd zmm24, zmm25, zmm5 + +// CHECK: vmulpd zmm24 {k4}, zmm25, zmm5 +// CHECK: encoding: [0x62,0x61,0xb5,0x44,0x59,0xc5] + vmulpd zmm24 {k4}, zmm25, zmm5 + +// CHECK: vmulpd zmm24 {k4} {z}, zmm25, zmm5 +// CHECK: encoding: [0x62,0x61,0xb5,0xc4,0x59,0xc5] + vmulpd zmm24 {k4} {z}, zmm25, zmm5 + +// CHECK: vmulpd zmm24, zmm25, zmm5, {rn-sae} +// CHECK: encoding: [0x62,0x61,0xb5,0x10,0x59,0xc5] + vmulpd zmm24, zmm25, zmm5, {rn-sae} + +// CHECK: vmulpd zmm24, zmm25, zmm5, {ru-sae} +// CHECK: encoding: [0x62,0x61,0xb5,0x50,0x59,0xc5] + vmulpd zmm24, zmm25, zmm5, {ru-sae} + +// CHECK: vmulpd zmm24, zmm25, zmm5, {rd-sae} +// CHECK: encoding: [0x62,0x61,0xb5,0x30,0x59,0xc5] + vmulpd zmm24, zmm25, zmm5, {rd-sae} + +// CHECK: vmulpd zmm24, zmm25, zmm5, {rz-sae} +// CHECK: encoding: [0x62,0x61,0xb5,0x70,0x59,0xc5] + vmulpd zmm24, zmm25, zmm5, {rz-sae} + +// CHECK: vmulpd zmm24, zmm25, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xb5,0x40,0x59,0x01] + vmulpd zmm24, zmm25, zmmword ptr [rcx] + +// CHECK: vmulpd zmm24, zmm25, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0xb5,0x40,0x59,0x84,0xf0,0x34,0x12,0x00,0x00] + vmulpd zmm24, zmm25, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmulpd zmm24, zmm25, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0xb5,0x50,0x59,0x01] + vmulpd zmm24, zmm25, qword ptr [rcx]{1to8} + +// CHECK: vmulpd zmm24, zmm25, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xb5,0x40,0x59,0x42,0x7f] + vmulpd zmm24, zmm25, zmmword ptr [rdx + 8128] + +// CHECK: vmulpd zmm24, zmm25, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xb5,0x40,0x59,0x82,0x00,0x20,0x00,0x00] + vmulpd zmm24, zmm25, zmmword ptr [rdx + 8192] + +// CHECK: vmulpd zmm24, zmm25, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xb5,0x40,0x59,0x42,0x80] + vmulpd zmm24, zmm25, zmmword ptr [rdx - 8192] + +// CHECK: vmulpd zmm24, zmm25, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xb5,0x40,0x59,0x82,0xc0,0xdf,0xff,0xff] + vmulpd zmm24, zmm25, zmmword ptr [rdx - 8256] + +// CHECK: vmulpd zmm24, zmm25, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0xb5,0x50,0x59,0x42,0x7f] + vmulpd zmm24, zmm25, qword ptr [rdx + 1016]{1to8} + +// CHECK: vmulpd zmm24, zmm25, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xb5,0x50,0x59,0x82,0x00,0x04,0x00,0x00] + vmulpd zmm24, zmm25, qword ptr [rdx + 1024]{1to8} + +// CHECK: vmulpd zmm24, zmm25, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xb5,0x50,0x59,0x42,0x80] + vmulpd zmm24, zmm25, qword ptr [rdx - 1024]{1to8} + +// CHECK: vmulpd zmm24, zmm25, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0xb5,0x50,0x59,0x82,0xf8,0xfb,0xff,0xff] + vmulpd zmm24, zmm25, qword ptr [rdx - 1032]{1to8} + +// CHECK: vmulps zmm6, zmm27, zmm3 +// CHECK: encoding: [0x62,0xf1,0x24,0x40,0x59,0xf3] + vmulps zmm6, zmm27, zmm3 + +// CHECK: vmulps zmm6 {k5}, zmm27, zmm3 +// CHECK: encoding: [0x62,0xf1,0x24,0x45,0x59,0xf3] + vmulps zmm6 {k5}, zmm27, zmm3 + +// CHECK: vmulps zmm6 {k5} {z}, zmm27, zmm3 +// CHECK: encoding: [0x62,0xf1,0x24,0xc5,0x59,0xf3] + vmulps zmm6 {k5} {z}, zmm27, zmm3 + +// CHECK: vmulps zmm6, zmm27, zmm3, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x24,0x10,0x59,0xf3] + vmulps zmm6, zmm27, zmm3, {rn-sae} + +// CHECK: vmulps zmm6, zmm27, zmm3, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x24,0x50,0x59,0xf3] + vmulps zmm6, zmm27, zmm3, {ru-sae} + +// CHECK: vmulps zmm6, zmm27, zmm3, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x24,0x30,0x59,0xf3] + vmulps zmm6, zmm27, zmm3, {rd-sae} + +// CHECK: vmulps zmm6, zmm27, zmm3, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x24,0x70,0x59,0xf3] + vmulps zmm6, zmm27, zmm3, {rz-sae} + +// CHECK: vmulps zmm6, zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x24,0x40,0x59,0x31] + vmulps zmm6, zmm27, zmmword ptr [rcx] + +// CHECK: vmulps zmm6, zmm27, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x24,0x40,0x59,0xb4,0xf0,0x34,0x12,0x00,0x00] + vmulps zmm6, zmm27, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vmulps zmm6, zmm27, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x24,0x50,0x59,0x31] + vmulps zmm6, zmm27, dword ptr [rcx]{1to16} + +// CHECK: vmulps zmm6, zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x24,0x40,0x59,0x72,0x7f] + vmulps zmm6, zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vmulps zmm6, zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x24,0x40,0x59,0xb2,0x00,0x20,0x00,0x00] + vmulps zmm6, zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vmulps zmm6, zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x24,0x40,0x59,0x72,0x80] + vmulps zmm6, zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vmulps zmm6, zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x24,0x40,0x59,0xb2,0xc0,0xdf,0xff,0xff] + vmulps zmm6, zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vmulps zmm6, zmm27, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x24,0x50,0x59,0x72,0x7f] + vmulps zmm6, zmm27, dword ptr [rdx + 508]{1to16} + +// CHECK: vmulps zmm6, zmm27, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x24,0x50,0x59,0xb2,0x00,0x02,0x00,0x00] + vmulps zmm6, zmm27, dword ptr [rdx + 512]{1to16} + +// CHECK: vmulps zmm6, zmm27, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x24,0x50,0x59,0x72,0x80] + vmulps zmm6, zmm27, dword ptr [rdx - 512]{1to16} + +// CHECK: vmulps zmm6, zmm27, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x24,0x50,0x59,0xb2,0xfc,0xfd,0xff,0xff] + vmulps zmm6, zmm27, dword ptr [rdx - 516]{1to16} + +// CHECK: vmulsd xmm23, xmm29, xmm22 +// CHECK: encoding: [0x62,0xa1,0x97,0x00,0x59,0xfe] + vmulsd xmm23, xmm29, xmm22 + +// CHECK: vmulsd xmm23 {k5}, xmm29, xmm22 +// CHECK: encoding: [0x62,0xa1,0x97,0x05,0x59,0xfe] + vmulsd xmm23 {k5}, xmm29, xmm22 + +// CHECK: vmulsd xmm23 {k5} {z}, xmm29, xmm22 +// CHECK: encoding: [0x62,0xa1,0x97,0x85,0x59,0xfe] + vmulsd xmm23 {k5} {z}, xmm29, xmm22 + +// CHECK: vmulsd xmm23, xmm29, xmm22, {rn-sae} +// CHECK: encoding: [0x62,0xa1,0x97,0x10,0x59,0xfe] + vmulsd xmm23, xmm29, xmm22, {rn-sae} + +// CHECK: vmulsd xmm23, xmm29, xmm22, {ru-sae} +// CHECK: encoding: [0x62,0xa1,0x97,0x50,0x59,0xfe] + vmulsd xmm23, xmm29, xmm22, {ru-sae} + +// CHECK: vmulsd xmm23, xmm29, xmm22, {rd-sae} +// CHECK: encoding: [0x62,0xa1,0x97,0x30,0x59,0xfe] + vmulsd xmm23, xmm29, xmm22, {rd-sae} + +// CHECK: vmulsd xmm23, xmm29, xmm22, {rz-sae} +// CHECK: encoding: [0x62,0xa1,0x97,0x70,0x59,0xfe] + vmulsd xmm23, xmm29, xmm22, {rz-sae} + +// CHECK: vmulsd xmm23, xmm29, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x97,0x00,0x59,0x39] + vmulsd xmm23, xmm29, qword ptr [rcx] + +// CHECK: vmulsd xmm23, xmm29, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x97,0x00,0x59,0xbc,0xf0,0x34,0x12,0x00,0x00] + vmulsd xmm23, xmm29, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vmulsd xmm23, xmm29, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0x97,0x00,0x59,0x7a,0x7f] + vmulsd xmm23, xmm29, qword ptr [rdx + 1016] + +// CHECK: vmulsd xmm23, xmm29, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0x97,0x00,0x59,0xba,0x00,0x04,0x00,0x00] + vmulsd xmm23, xmm29, qword ptr [rdx + 1024] + +// CHECK: vmulsd xmm23, xmm29, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0x97,0x00,0x59,0x7a,0x80] + vmulsd xmm23, xmm29, qword ptr [rdx - 1024] + +// CHECK: vmulsd xmm23, xmm29, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0x97,0x00,0x59,0xba,0xf8,0xfb,0xff,0xff] + vmulsd xmm23, xmm29, qword ptr [rdx - 1032] + +// CHECK: vmulss xmm25, xmm26, xmm8 +// CHECK: encoding: [0x62,0x41,0x2e,0x00,0x59,0xc8] + vmulss xmm25, xmm26, xmm8 + +// CHECK: vmulss xmm25 {k5}, xmm26, xmm8 +// CHECK: encoding: [0x62,0x41,0x2e,0x05,0x59,0xc8] + vmulss xmm25 {k5}, xmm26, xmm8 + +// CHECK: vmulss xmm25 {k5} {z}, xmm26, xmm8 +// CHECK: encoding: [0x62,0x41,0x2e,0x85,0x59,0xc8] + vmulss xmm25 {k5} {z}, xmm26, xmm8 + +// CHECK: vmulss xmm25, xmm26, xmm8, {rn-sae} +// CHECK: encoding: [0x62,0x41,0x2e,0x10,0x59,0xc8] + vmulss xmm25, xmm26, xmm8, {rn-sae} + +// CHECK: vmulss xmm25, xmm26, xmm8, {ru-sae} +// CHECK: encoding: [0x62,0x41,0x2e,0x50,0x59,0xc8] + vmulss xmm25, xmm26, xmm8, {ru-sae} + +// CHECK: vmulss xmm25, xmm26, xmm8, {rd-sae} +// CHECK: encoding: [0x62,0x41,0x2e,0x30,0x59,0xc8] + vmulss xmm25, xmm26, xmm8, {rd-sae} + +// CHECK: vmulss xmm25, xmm26, xmm8, {rz-sae} +// CHECK: encoding: [0x62,0x41,0x2e,0x70,0x59,0xc8] + vmulss xmm25, xmm26, xmm8, {rz-sae} + +// CHECK: vmulss xmm25, xmm26, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x2e,0x00,0x59,0x09] + vmulss xmm25, xmm26, dword ptr [rcx] + +// CHECK: vmulss xmm25, xmm26, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x2e,0x00,0x59,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmulss xmm25, xmm26, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vmulss xmm25, xmm26, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x2e,0x00,0x59,0x4a,0x7f] + vmulss xmm25, xmm26, dword ptr [rdx + 508] + +// CHECK: vmulss xmm25, xmm26, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x2e,0x00,0x59,0x8a,0x00,0x02,0x00,0x00] + vmulss xmm25, xmm26, dword ptr [rdx + 512] + +// CHECK: vmulss xmm25, xmm26, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x2e,0x00,0x59,0x4a,0x80] + vmulss xmm25, xmm26, dword ptr [rdx - 512] + +// CHECK: vmulss xmm25, xmm26, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x2e,0x00,0x59,0x8a,0xfc,0xfd,0xff,0xff] + vmulss xmm25, xmm26, dword ptr [rdx - 516] + +// CHECK: vpabsd zmm4, zmm29 +// CHECK: encoding: [0x62,0x92,0x7d,0x48,0x1e,0xe5] + vpabsd zmm4, zmm29 + +// CHECK: vpabsd zmm4 {k4}, zmm29 +// CHECK: encoding: [0x62,0x92,0x7d,0x4c,0x1e,0xe5] + vpabsd zmm4 {k4}, zmm29 + +// CHECK: vpabsd zmm4 {k4} {z}, zmm29 +// CHECK: encoding: [0x62,0x92,0x7d,0xcc,0x1e,0xe5] + vpabsd zmm4 {k4} {z}, zmm29 + +// CHECK: vpabsd zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1e,0x21] + vpabsd zmm4, zmmword ptr [rcx] + +// CHECK: vpabsd zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x1e,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpabsd zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpabsd zmm4, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x1e,0x21] + vpabsd zmm4, dword ptr [rcx]{1to16} + +// CHECK: vpabsd zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1e,0x62,0x7f] + vpabsd zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vpabsd zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1e,0xa2,0x00,0x20,0x00,0x00] + vpabsd zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vpabsd zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1e,0x62,0x80] + vpabsd zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vpabsd zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1e,0xa2,0xc0,0xdf,0xff,0xff] + vpabsd zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vpabsd zmm4, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x1e,0x62,0x7f] + vpabsd zmm4, dword ptr [rdx + 508]{1to16} + +// CHECK: vpabsd zmm4, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x1e,0xa2,0x00,0x02,0x00,0x00] + vpabsd zmm4, dword ptr [rdx + 512]{1to16} + +// CHECK: vpabsd zmm4, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x1e,0x62,0x80] + vpabsd zmm4, dword ptr [rdx - 512]{1to16} + +// CHECK: vpabsd zmm4, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x1e,0xa2,0xfc,0xfd,0xff,0xff] + vpabsd zmm4, dword ptr [rdx - 516]{1to16} + +// CHECK: vpabsq zmm17, zmm3 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x1f,0xcb] + vpabsq zmm17, zmm3 + +// CHECK: vpabsq zmm17 {k2}, zmm3 +// CHECK: encoding: [0x62,0xe2,0xfd,0x4a,0x1f,0xcb] + vpabsq zmm17 {k2}, zmm3 + +// CHECK: vpabsq zmm17 {k2} {z}, zmm3 +// CHECK: encoding: [0x62,0xe2,0xfd,0xca,0x1f,0xcb] + vpabsq zmm17 {k2} {z}, zmm3 + +// CHECK: vpabsq zmm17, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x1f,0x09] + vpabsq zmm17, zmmword ptr [rcx] + +// CHECK: vpabsq zmm17, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xfd,0x48,0x1f,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpabsq zmm17, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpabsq zmm17, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x1f,0x09] + vpabsq zmm17, qword ptr [rcx]{1to8} + +// CHECK: vpabsq zmm17, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x1f,0x4a,0x7f] + vpabsq zmm17, zmmword ptr [rdx + 8128] + +// CHECK: vpabsq zmm17, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x1f,0x8a,0x00,0x20,0x00,0x00] + vpabsq zmm17, zmmword ptr [rdx + 8192] + +// CHECK: vpabsq zmm17, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x1f,0x4a,0x80] + vpabsq zmm17, zmmword ptr [rdx - 8192] + +// CHECK: vpabsq zmm17, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x1f,0x8a,0xc0,0xdf,0xff,0xff] + vpabsq zmm17, zmmword ptr [rdx - 8256] + +// CHECK: vpabsq zmm17, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x1f,0x4a,0x7f] + vpabsq zmm17, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpabsq zmm17, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x1f,0x8a,0x00,0x04,0x00,0x00] + vpabsq zmm17, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpabsq zmm17, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x1f,0x4a,0x80] + vpabsq zmm17, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpabsq zmm17, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xfd,0x58,0x1f,0x8a,0xf8,0xfb,0xff,0xff] + vpabsq zmm17, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpaddd zmm10, zmm8, zmm11 +// CHECK: encoding: [0x62,0x51,0x3d,0x48,0xfe,0xd3] + vpaddd zmm10, zmm8, zmm11 + +// CHECK: vpaddd zmm10 {k7}, zmm8, zmm11 +// CHECK: encoding: [0x62,0x51,0x3d,0x4f,0xfe,0xd3] + vpaddd zmm10 {k7}, zmm8, zmm11 + +// CHECK: vpaddd zmm10 {k7} {z}, zmm8, zmm11 +// CHECK: encoding: [0x62,0x51,0x3d,0xcf,0xfe,0xd3] + vpaddd zmm10 {k7} {z}, zmm8, zmm11 + +// CHECK: vpaddd zmm10, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x3d,0x48,0xfe,0x11] + vpaddd zmm10, zmm8, zmmword ptr [rcx] + +// CHECK: vpaddd zmm10, zmm8, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x3d,0x48,0xfe,0x94,0xf0,0x34,0x12,0x00,0x00] + vpaddd zmm10, zmm8, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpaddd zmm10, zmm8, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x71,0x3d,0x58,0xfe,0x11] + vpaddd zmm10, zmm8, dword ptr [rcx]{1to16} + +// CHECK: vpaddd zmm10, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x3d,0x48,0xfe,0x52,0x7f] + vpaddd zmm10, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vpaddd zmm10, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x3d,0x48,0xfe,0x92,0x00,0x20,0x00,0x00] + vpaddd zmm10, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vpaddd zmm10, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x3d,0x48,0xfe,0x52,0x80] + vpaddd zmm10, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vpaddd zmm10, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x3d,0x48,0xfe,0x92,0xc0,0xdf,0xff,0xff] + vpaddd zmm10, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vpaddd zmm10, zmm8, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x71,0x3d,0x58,0xfe,0x52,0x7f] + vpaddd zmm10, zmm8, dword ptr [rdx + 508]{1to16} + +// CHECK: vpaddd zmm10, zmm8, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x3d,0x58,0xfe,0x92,0x00,0x02,0x00,0x00] + vpaddd zmm10, zmm8, dword ptr [rdx + 512]{1to16} + +// CHECK: vpaddd zmm10, zmm8, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x3d,0x58,0xfe,0x52,0x80] + vpaddd zmm10, zmm8, dword ptr [rdx - 512]{1to16} + +// CHECK: vpaddd zmm10, zmm8, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x71,0x3d,0x58,0xfe,0x92,0xfc,0xfd,0xff,0xff] + vpaddd zmm10, zmm8, dword ptr [rdx - 516]{1to16} + +// CHECK: vpaddq zmm6, zmm4, zmm26 +// CHECK: encoding: [0x62,0x91,0xdd,0x48,0xd4,0xf2] + vpaddq zmm6, zmm4, zmm26 + +// CHECK: vpaddq zmm6 {k3}, zmm4, zmm26 +// CHECK: encoding: [0x62,0x91,0xdd,0x4b,0xd4,0xf2] + vpaddq zmm6 {k3}, zmm4, zmm26 + +// CHECK: vpaddq zmm6 {k3} {z}, zmm4, zmm26 +// CHECK: encoding: [0x62,0x91,0xdd,0xcb,0xd4,0xf2] + vpaddq zmm6 {k3} {z}, zmm4, zmm26 + +// CHECK: vpaddq zmm6, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0xd4,0x31] + vpaddq zmm6, zmm4, zmmword ptr [rcx] + +// CHECK: vpaddq zmm6, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xdd,0x48,0xd4,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpaddq zmm6, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpaddq zmm6, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0xd4,0x31] + vpaddq zmm6, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vpaddq zmm6, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0xd4,0x72,0x7f] + vpaddq zmm6, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vpaddq zmm6, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0xd4,0xb2,0x00,0x20,0x00,0x00] + vpaddq zmm6, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vpaddq zmm6, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0xd4,0x72,0x80] + vpaddq zmm6, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vpaddq zmm6, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0xd4,0xb2,0xc0,0xdf,0xff,0xff] + vpaddq zmm6, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vpaddq zmm6, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0xd4,0x72,0x7f] + vpaddq zmm6, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpaddq zmm6, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0xd4,0xb2,0x00,0x04,0x00,0x00] + vpaddq zmm6, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpaddq zmm6, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0xd4,0x72,0x80] + vpaddq zmm6, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpaddq zmm6, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0xd4,0xb2,0xf8,0xfb,0xff,0xff] + vpaddq zmm6, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpandd zmm1, zmm29, zmm16 +// CHECK: encoding: [0x62,0xb1,0x15,0x40,0xdb,0xc8] + vpandd zmm1, zmm29, zmm16 + +// CHECK: vpandd zmm1 {k2}, zmm29, zmm16 +// CHECK: encoding: [0x62,0xb1,0x15,0x42,0xdb,0xc8] + vpandd zmm1 {k2}, zmm29, zmm16 + +// CHECK: vpandd zmm1 {k2} {z}, zmm29, zmm16 +// CHECK: encoding: [0x62,0xb1,0x15,0xc2,0xdb,0xc8] + vpandd zmm1 {k2} {z}, zmm29, zmm16 + +// CHECK: vpandd zmm1, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0xdb,0x09] + vpandd zmm1, zmm29, zmmword ptr [rcx] + +// CHECK: vpandd zmm1, zmm29, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x15,0x40,0xdb,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpandd zmm1, zmm29, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpandd zmm1, zmm29, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0xdb,0x09] + vpandd zmm1, zmm29, dword ptr [rcx]{1to16} + +// CHECK: vpandd zmm1, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0xdb,0x4a,0x7f] + vpandd zmm1, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vpandd zmm1, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0xdb,0x8a,0x00,0x20,0x00,0x00] + vpandd zmm1, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vpandd zmm1, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0xdb,0x4a,0x80] + vpandd zmm1, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vpandd zmm1, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x15,0x40,0xdb,0x8a,0xc0,0xdf,0xff,0xff] + vpandd zmm1, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vpandd zmm1, zmm29, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0xdb,0x4a,0x7f] + vpandd zmm1, zmm29, dword ptr [rdx + 508]{1to16} + +// CHECK: vpandd zmm1, zmm29, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0xdb,0x8a,0x00,0x02,0x00,0x00] + vpandd zmm1, zmm29, dword ptr [rdx + 512]{1to16} + +// CHECK: vpandd zmm1, zmm29, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0xdb,0x4a,0x80] + vpandd zmm1, zmm29, dword ptr [rdx - 512]{1to16} + +// CHECK: vpandd zmm1, zmm29, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x15,0x50,0xdb,0x8a,0xfc,0xfd,0xff,0xff] + vpandd zmm1, zmm29, dword ptr [rdx - 516]{1to16} + +// CHECK: vpandnd zmm22, zmm17, zmm16 +// CHECK: encoding: [0x62,0xa1,0x75,0x40,0xdf,0xf0] + vpandnd zmm22, zmm17, zmm16 + +// CHECK: vpandnd zmm22 {k5}, zmm17, zmm16 +// CHECK: encoding: [0x62,0xa1,0x75,0x45,0xdf,0xf0] + vpandnd zmm22 {k5}, zmm17, zmm16 + +// CHECK: vpandnd zmm22 {k5} {z}, zmm17, zmm16 +// CHECK: encoding: [0x62,0xa1,0x75,0xc5,0xdf,0xf0] + vpandnd zmm22 {k5} {z}, zmm17, zmm16 + +// CHECK: vpandnd zmm22, zmm17, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x75,0x40,0xdf,0x31] + vpandnd zmm22, zmm17, zmmword ptr [rcx] + +// CHECK: vpandnd zmm22, zmm17, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x75,0x40,0xdf,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpandnd zmm22, zmm17, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpandnd zmm22, zmm17, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x75,0x50,0xdf,0x31] + vpandnd zmm22, zmm17, dword ptr [rcx]{1to16} + +// CHECK: vpandnd zmm22, zmm17, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x75,0x40,0xdf,0x72,0x7f] + vpandnd zmm22, zmm17, zmmword ptr [rdx + 8128] + +// CHECK: vpandnd zmm22, zmm17, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x75,0x40,0xdf,0xb2,0x00,0x20,0x00,0x00] + vpandnd zmm22, zmm17, zmmword ptr [rdx + 8192] + +// CHECK: vpandnd zmm22, zmm17, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x75,0x40,0xdf,0x72,0x80] + vpandnd zmm22, zmm17, zmmword ptr [rdx - 8192] + +// CHECK: vpandnd zmm22, zmm17, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x75,0x40,0xdf,0xb2,0xc0,0xdf,0xff,0xff] + vpandnd zmm22, zmm17, zmmword ptr [rdx - 8256] + +// CHECK: vpandnd zmm22, zmm17, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x75,0x50,0xdf,0x72,0x7f] + vpandnd zmm22, zmm17, dword ptr [rdx + 508]{1to16} + +// CHECK: vpandnd zmm22, zmm17, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x75,0x50,0xdf,0xb2,0x00,0x02,0x00,0x00] + vpandnd zmm22, zmm17, dword ptr [rdx + 512]{1to16} + +// CHECK: vpandnd zmm22, zmm17, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x75,0x50,0xdf,0x72,0x80] + vpandnd zmm22, zmm17, dword ptr [rdx - 512]{1to16} + +// CHECK: vpandnd zmm22, zmm17, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x75,0x50,0xdf,0xb2,0xfc,0xfd,0xff,0xff] + vpandnd zmm22, zmm17, dword ptr [rdx - 516]{1to16} + +// CHECK: vpandnq zmm25, zmm4, zmm2 +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0xdf,0xca] + vpandnq zmm25, zmm4, zmm2 + +// CHECK: vpandnq zmm25 {k3}, zmm4, zmm2 +// CHECK: encoding: [0x62,0x61,0xdd,0x4b,0xdf,0xca] + vpandnq zmm25 {k3}, zmm4, zmm2 + +// CHECK: vpandnq zmm25 {k3} {z}, zmm4, zmm2 +// CHECK: encoding: [0x62,0x61,0xdd,0xcb,0xdf,0xca] + vpandnq zmm25 {k3} {z}, zmm4, zmm2 + +// CHECK: vpandnq zmm25, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0xdf,0x09] + vpandnq zmm25, zmm4, zmmword ptr [rcx] + +// CHECK: vpandnq zmm25, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0xdd,0x48,0xdf,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpandnq zmm25, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpandnq zmm25, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0xdf,0x09] + vpandnq zmm25, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vpandnq zmm25, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0xdf,0x4a,0x7f] + vpandnq zmm25, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vpandnq zmm25, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0xdf,0x8a,0x00,0x20,0x00,0x00] + vpandnq zmm25, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vpandnq zmm25, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0xdf,0x4a,0x80] + vpandnq zmm25, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vpandnq zmm25, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0xdd,0x48,0xdf,0x8a,0xc0,0xdf,0xff,0xff] + vpandnq zmm25, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vpandnq zmm25, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0xdf,0x4a,0x7f] + vpandnq zmm25, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpandnq zmm25, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0xdf,0x8a,0x00,0x04,0x00,0x00] + vpandnq zmm25, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpandnq zmm25, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0xdf,0x4a,0x80] + vpandnq zmm25, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpandnq zmm25, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0xdd,0x58,0xdf,0x8a,0xf8,0xfb,0xff,0xff] + vpandnq zmm25, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpandq zmm27, zmm12, zmm9 +// CHECK: encoding: [0x62,0x41,0x9d,0x48,0xdb,0xd9] + vpandq zmm27, zmm12, zmm9 + +// CHECK: vpandq zmm27 {k2}, zmm12, zmm9 +// CHECK: encoding: [0x62,0x41,0x9d,0x4a,0xdb,0xd9] + vpandq zmm27 {k2}, zmm12, zmm9 + +// CHECK: vpandq zmm27 {k2} {z}, zmm12, zmm9 +// CHECK: encoding: [0x62,0x41,0x9d,0xca,0xdb,0xd9] + vpandq zmm27 {k2} {z}, zmm12, zmm9 + +// CHECK: vpandq zmm27, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x9d,0x48,0xdb,0x19] + vpandq zmm27, zmm12, zmmword ptr [rcx] + +// CHECK: vpandq zmm27, zmm12, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x9d,0x48,0xdb,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpandq zmm27, zmm12, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpandq zmm27, zmm12, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x58,0xdb,0x19] + vpandq zmm27, zmm12, qword ptr [rcx]{1to8} + +// CHECK: vpandq zmm27, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x9d,0x48,0xdb,0x5a,0x7f] + vpandq zmm27, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vpandq zmm27, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x9d,0x48,0xdb,0x9a,0x00,0x20,0x00,0x00] + vpandq zmm27, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vpandq zmm27, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x9d,0x48,0xdb,0x5a,0x80] + vpandq zmm27, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vpandq zmm27, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x9d,0x48,0xdb,0x9a,0xc0,0xdf,0xff,0xff] + vpandq zmm27, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vpandq zmm27, zmm12, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x58,0xdb,0x5a,0x7f] + vpandq zmm27, zmm12, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpandq zmm27, zmm12, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x58,0xdb,0x9a,0x00,0x04,0x00,0x00] + vpandq zmm27, zmm12, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpandq zmm27, zmm12, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x58,0xdb,0x5a,0x80] + vpandq zmm27, zmm12, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpandq zmm27, zmm12, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x61,0x9d,0x58,0xdb,0x9a,0xf8,0xfb,0xff,0xff] + vpandq zmm27, zmm12, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpblendmd zmm23, zmm24, zmm12 +// CHECK: encoding: [0x62,0xc2,0x3d,0x40,0x64,0xfc] + vpblendmd zmm23, zmm24, zmm12 + +// CHECK: vpblendmd zmm23 {k1}, zmm24, zmm12 +// CHECK: encoding: [0x62,0xc2,0x3d,0x41,0x64,0xfc] + vpblendmd zmm23 {k1}, zmm24, zmm12 + +// CHECK: vpblendmd zmm23 {k1} {z}, zmm24, zmm12 +// CHECK: encoding: [0x62,0xc2,0x3d,0xc1,0x64,0xfc] + vpblendmd zmm23 {k1} {z}, zmm24, zmm12 + +// CHECK: vpblendmd zmm23, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0x64,0x39] + vpblendmd zmm23, zmm24, zmmword ptr [rcx] + +// CHECK: vpblendmd zmm23, zmm24, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x3d,0x40,0x64,0xbc,0xf0,0x34,0x12,0x00,0x00] + vpblendmd zmm23, zmm24, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpblendmd zmm23, zmm24, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0x64,0x39] + vpblendmd zmm23, zmm24, dword ptr [rcx]{1to16} + +// CHECK: vpblendmd zmm23, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0x64,0x7a,0x7f] + vpblendmd zmm23, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vpblendmd zmm23, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0x64,0xba,0x00,0x20,0x00,0x00] + vpblendmd zmm23, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vpblendmd zmm23, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0x64,0x7a,0x80] + vpblendmd zmm23, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vpblendmd zmm23, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x3d,0x40,0x64,0xba,0xc0,0xdf,0xff,0xff] + vpblendmd zmm23, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vpblendmd zmm23, zmm24, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0x64,0x7a,0x7f] + vpblendmd zmm23, zmm24, dword ptr [rdx + 508]{1to16} + +// CHECK: vpblendmd zmm23, zmm24, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0x64,0xba,0x00,0x02,0x00,0x00] + vpblendmd zmm23, zmm24, dword ptr [rdx + 512]{1to16} + +// CHECK: vpblendmd zmm23, zmm24, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0x64,0x7a,0x80] + vpblendmd zmm23, zmm24, dword ptr [rdx - 512]{1to16} + +// CHECK: vpblendmd zmm23, zmm24, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x3d,0x50,0x64,0xba,0xfc,0xfd,0xff,0xff] + vpblendmd zmm23, zmm24, dword ptr [rdx - 516]{1to16} + +// CHECK: vpbroadcastd zmm19, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x58,0x19] + vpbroadcastd zmm19, dword ptr [rcx] + +// CHECK: vpbroadcastd zmm19 {k5}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x4d,0x58,0x19] + vpbroadcastd zmm19 {k5}, dword ptr [rcx] + +// CHECK: vpbroadcastd zmm19 {k5} {z}, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0xcd,0x58,0x19] + vpbroadcastd zmm19 {k5} {z}, dword ptr [rcx] + +// CHECK: vpbroadcastd zmm19, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x58,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpbroadcastd zmm19, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vpbroadcastd zmm19, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x58,0x5a,0x7f] + vpbroadcastd zmm19, dword ptr [rdx + 508] + +// CHECK: vpbroadcastd zmm19, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x58,0x9a,0x00,0x02,0x00,0x00] + vpbroadcastd zmm19, dword ptr [rdx + 512] + +// CHECK: vpbroadcastd zmm19, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x58,0x5a,0x80] + vpbroadcastd zmm19, dword ptr [rdx - 512] + +// CHECK: vpbroadcastd zmm19, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x58,0x9a,0xfc,0xfd,0xff,0xff] + vpbroadcastd zmm19, dword ptr [rdx - 516] + +// CHECK: vpbroadcastd zmm3, xmm1 +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x58,0xd9] + vpbroadcastd zmm3, xmm1 + +// CHECK: vpbroadcastd zmm3 {k6}, xmm1 +// CHECK: encoding: [0x62,0xf2,0x7d,0x4e,0x58,0xd9] + vpbroadcastd zmm3 {k6}, xmm1 + +// CHECK: vpbroadcastd zmm3 {k6} {z}, xmm1 +// CHECK: encoding: [0x62,0xf2,0x7d,0xce,0x58,0xd9] + vpbroadcastd zmm3 {k6} {z}, xmm1 + +// CHECK: vpbroadcastd zmm8, eax +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x7c,0xc0] + vpbroadcastd zmm8, eax + +// CHECK: vpbroadcastd zmm8 {k3}, eax +// CHECK: encoding: [0x62,0x72,0x7d,0x4b,0x7c,0xc0] + vpbroadcastd zmm8 {k3}, eax + +// CHECK: vpbroadcastd zmm8 {k3} {z}, eax +// CHECK: encoding: [0x62,0x72,0x7d,0xcb,0x7c,0xc0] + vpbroadcastd zmm8 {k3} {z}, eax + +// CHECK: vpbroadcastd zmm8, ebp +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x7c,0xc5] + vpbroadcastd zmm8, ebp + +// CHECK: vpbroadcastd zmm8, r13d +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x7c,0xc5] + vpbroadcastd zmm8, r13d + +// CHECK: vpbroadcastq zmm14, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x59,0x31] + vpbroadcastq zmm14, qword ptr [rcx] + +// CHECK: vpbroadcastq zmm14 {k5}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0x4d,0x59,0x31] + vpbroadcastq zmm14 {k5}, qword ptr [rcx] + +// CHECK: vpbroadcastq zmm14 {k5} {z}, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0xcd,0x59,0x31] + vpbroadcastq zmm14 {k5} {z}, qword ptr [rcx] + +// CHECK: vpbroadcastq zmm14, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0xfd,0x48,0x59,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpbroadcastq zmm14, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vpbroadcastq zmm14, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x59,0x72,0x7f] + vpbroadcastq zmm14, qword ptr [rdx + 1016] + +// CHECK: vpbroadcastq zmm14, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x59,0xb2,0x00,0x04,0x00,0x00] + vpbroadcastq zmm14, qword ptr [rdx + 1024] + +// CHECK: vpbroadcastq zmm14, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x59,0x72,0x80] + vpbroadcastq zmm14, qword ptr [rdx - 1024] + +// CHECK: vpbroadcastq zmm14, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x59,0xb2,0xf8,0xfb,0xff,0xff] + vpbroadcastq zmm14, qword ptr [rdx - 1032] + +// CHECK: vpbroadcastq zmm8, xmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x59,0xc4] + vpbroadcastq zmm8, xmm4 + +// CHECK: vpbroadcastq zmm8 {k3}, xmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0x4b,0x59,0xc4] + vpbroadcastq zmm8 {k3}, xmm4 + +// CHECK: vpbroadcastq zmm8 {k3} {z}, xmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0xcb,0x59,0xc4] + vpbroadcastq zmm8 {k3} {z}, xmm4 + +// CHECK: vpbroadcastq zmm5, rax +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x7c,0xe8] + vpbroadcastq zmm5, rax + +// CHECK: vpbroadcastq zmm5 {k6}, rax +// CHECK: encoding: [0x62,0xf2,0xfd,0x4e,0x7c,0xe8] + vpbroadcastq zmm5 {k6}, rax + +// CHECK: vpbroadcastq zmm5 {k6} {z}, rax +// CHECK: encoding: [0x62,0xf2,0xfd,0xce,0x7c,0xe8] + vpbroadcastq zmm5 {k6} {z}, rax + +// CHECK: vpbroadcastq zmm5, r8 +// CHECK: encoding: [0x62,0xd2,0xfd,0x48,0x7c,0xe8] + vpbroadcastq zmm5, r8 + +// CHECK: vpcmpd k2, zmm25, zmm22, 171 +// CHECK: encoding: [0x62,0xb3,0x35,0x40,0x1f,0xd6,0xab] + vpcmpd k2, zmm25, zmm22, 171 + +// CHECK: vpcmpd k2 {k3}, zmm25, zmm22, 171 +// CHECK: encoding: [0x62,0xb3,0x35,0x43,0x1f,0xd6,0xab] + vpcmpd k2 {k3}, zmm25, zmm22, 171 + +// CHECK: vpcmpd k2, zmm25, zmm22, 123 +// CHECK: encoding: [0x62,0xb3,0x35,0x40,0x1f,0xd6,0x7b] + vpcmpd k2, zmm25, zmm22, 123 + +// CHECK: vpcmpd k2, zmm25, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0x11,0x7b] + vpcmpd k2, zmm25, zmmword ptr [rcx], 123 + +// CHECK: vpcmpd k2, zmm25, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0x35,0x40,0x1f,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpcmpd k2, zmm25, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpcmpd k2, zmm25, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0x11,0x7b] + vpcmpd k2, zmm25, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpcmpd k2, zmm25, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0x52,0x7f,0x7b] + vpcmpd k2, zmm25, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpcmpd k2, zmm25, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0x92,0x00,0x20,0x00,0x00,0x7b] + vpcmpd k2, zmm25, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpcmpd k2, zmm25, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0x52,0x80,0x7b] + vpcmpd k2, zmm25, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpcmpd k2, zmm25, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x40,0x1f,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpcmpd k2, zmm25, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpcmpd k2, zmm25, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0x52,0x7f,0x7b] + vpcmpd k2, zmm25, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpcmpd k2, zmm25, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0x92,0x00,0x02,0x00,0x00,0x7b] + vpcmpd k2, zmm25, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpcmpd k2, zmm25, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0x52,0x80,0x7b] + vpcmpd k2, zmm25, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpcmpd k2, zmm25, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x35,0x50,0x1f,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vpcmpd k2, zmm25, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpcmpeqd k5, zmm8, zmm21 +// CHECK: encoding: [0x62,0xb1,0x3d,0x48,0x76,0xed] + vpcmpeqd k5, zmm8, zmm21 + +// CHECK: vpcmpeqd k5 {k4}, zmm8, zmm21 +// CHECK: encoding: [0x62,0xb1,0x3d,0x4c,0x76,0xed] + vpcmpeqd k5 {k4}, zmm8, zmm21 + +// CHECK: vpcmpeqd k5, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x76,0x29] + vpcmpeqd k5, zmm8, zmmword ptr [rcx] + +// CHECK: vpcmpeqd k5, zmm8, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x3d,0x48,0x76,0xac,0xf0,0x34,0x12,0x00,0x00] + vpcmpeqd k5, zmm8, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpcmpeqd k5, zmm8, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x76,0x29] + vpcmpeqd k5, zmm8, dword ptr [rcx]{1to16} + +// CHECK: vpcmpeqd k5, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x76,0x6a,0x7f] + vpcmpeqd k5, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vpcmpeqd k5, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x76,0xaa,0x00,0x20,0x00,0x00] + vpcmpeqd k5, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vpcmpeqd k5, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x76,0x6a,0x80] + vpcmpeqd k5, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vpcmpeqd k5, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x76,0xaa,0xc0,0xdf,0xff,0xff] + vpcmpeqd k5, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vpcmpeqd k5, zmm8, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x76,0x6a,0x7f] + vpcmpeqd k5, zmm8, dword ptr [rdx + 508]{1to16} + +// CHECK: vpcmpeqd k5, zmm8, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x76,0xaa,0x00,0x02,0x00,0x00] + vpcmpeqd k5, zmm8, dword ptr [rdx + 512]{1to16} + +// CHECK: vpcmpeqd k5, zmm8, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x76,0x6a,0x80] + vpcmpeqd k5, zmm8, dword ptr [rdx - 512]{1to16} + +// CHECK: vpcmpeqd k5, zmm8, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x76,0xaa,0xfc,0xfd,0xff,0xff] + vpcmpeqd k5, zmm8, dword ptr [rdx - 516]{1to16} + +// CHECK: vpcmpeqq k4, zmm14, zmm9 +// CHECK: encoding: [0x62,0xd2,0x8d,0x48,0x29,0xe1] + vpcmpeqq k4, zmm14, zmm9 + +// CHECK: vpcmpeqq k4 {k6}, zmm14, zmm9 +// CHECK: encoding: [0x62,0xd2,0x8d,0x4e,0x29,0xe1] + vpcmpeqq k4 {k6}, zmm14, zmm9 + +// CHECK: vpcmpeqq k4, zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x8d,0x48,0x29,0x21] + vpcmpeqq k4, zmm14, zmmword ptr [rcx] + +// CHECK: vpcmpeqq k4, zmm14, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x8d,0x48,0x29,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpcmpeqq k4, zmm14, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpcmpeqq k4, zmm14, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0x8d,0x58,0x29,0x21] + vpcmpeqq k4, zmm14, qword ptr [rcx]{1to8} + +// CHECK: vpcmpeqq k4, zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x8d,0x48,0x29,0x62,0x7f] + vpcmpeqq k4, zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vpcmpeqq k4, zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x8d,0x48,0x29,0xa2,0x00,0x20,0x00,0x00] + vpcmpeqq k4, zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vpcmpeqq k4, zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x8d,0x48,0x29,0x62,0x80] + vpcmpeqq k4, zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vpcmpeqq k4, zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x8d,0x48,0x29,0xa2,0xc0,0xdf,0xff,0xff] + vpcmpeqq k4, zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vpcmpeqq k4, zmm14, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0x8d,0x58,0x29,0x62,0x7f] + vpcmpeqq k4, zmm14, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpcmpeqq k4, zmm14, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x8d,0x58,0x29,0xa2,0x00,0x04,0x00,0x00] + vpcmpeqq k4, zmm14, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpcmpeqq k4, zmm14, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x8d,0x58,0x29,0x62,0x80] + vpcmpeqq k4, zmm14, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpcmpeqq k4, zmm14, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0x8d,0x58,0x29,0xa2,0xf8,0xfb,0xff,0xff] + vpcmpeqq k4, zmm14, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpcmpgtd k4, zmm8, zmm8 +// CHECK: encoding: [0x62,0xd1,0x3d,0x48,0x66,0xe0] + vpcmpgtd k4, zmm8, zmm8 + +// CHECK: vpcmpgtd k4 {k7}, zmm8, zmm8 +// CHECK: encoding: [0x62,0xd1,0x3d,0x4f,0x66,0xe0] + vpcmpgtd k4 {k7}, zmm8, zmm8 + +// CHECK: vpcmpgtd k4, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x66,0x21] + vpcmpgtd k4, zmm8, zmmword ptr [rcx] + +// CHECK: vpcmpgtd k4, zmm8, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x3d,0x48,0x66,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpcmpgtd k4, zmm8, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpcmpgtd k4, zmm8, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x66,0x21] + vpcmpgtd k4, zmm8, dword ptr [rcx]{1to16} + +// CHECK: vpcmpgtd k4, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x66,0x62,0x7f] + vpcmpgtd k4, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vpcmpgtd k4, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x66,0xa2,0x00,0x20,0x00,0x00] + vpcmpgtd k4, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vpcmpgtd k4, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x66,0x62,0x80] + vpcmpgtd k4, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vpcmpgtd k4, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x66,0xa2,0xc0,0xdf,0xff,0xff] + vpcmpgtd k4, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vpcmpgtd k4, zmm8, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x66,0x62,0x7f] + vpcmpgtd k4, zmm8, dword ptr [rdx + 508]{1to16} + +// CHECK: vpcmpgtd k4, zmm8, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x66,0xa2,0x00,0x02,0x00,0x00] + vpcmpgtd k4, zmm8, dword ptr [rdx + 512]{1to16} + +// CHECK: vpcmpgtd k4, zmm8, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x66,0x62,0x80] + vpcmpgtd k4, zmm8, dword ptr [rdx - 512]{1to16} + +// CHECK: vpcmpgtd k4, zmm8, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x66,0xa2,0xfc,0xfd,0xff,0xff] + vpcmpgtd k4, zmm8, dword ptr [rdx - 516]{1to16} + +// CHECK: vpcmpgtq k3, zmm12, zmm26 +// CHECK: encoding: [0x62,0x92,0x9d,0x48,0x37,0xda] + vpcmpgtq k3, zmm12, zmm26 + +// CHECK: vpcmpgtq k3 {k4}, zmm12, zmm26 +// CHECK: encoding: [0x62,0x92,0x9d,0x4c,0x37,0xda] + vpcmpgtq k3 {k4}, zmm12, zmm26 + +// CHECK: vpcmpgtq k3, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0x37,0x19] + vpcmpgtq k3, zmm12, zmmword ptr [rcx] + +// CHECK: vpcmpgtq k3, zmm12, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x9d,0x48,0x37,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpcmpgtq k3, zmm12, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpcmpgtq k3, zmm12, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0x37,0x19] + vpcmpgtq k3, zmm12, qword ptr [rcx]{1to8} + +// CHECK: vpcmpgtq k3, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0x37,0x5a,0x7f] + vpcmpgtq k3, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vpcmpgtq k3, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0x37,0x9a,0x00,0x20,0x00,0x00] + vpcmpgtq k3, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vpcmpgtq k3, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0x37,0x5a,0x80] + vpcmpgtq k3, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vpcmpgtq k3, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x9d,0x48,0x37,0x9a,0xc0,0xdf,0xff,0xff] + vpcmpgtq k3, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vpcmpgtq k3, zmm12, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0x37,0x5a,0x7f] + vpcmpgtq k3, zmm12, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpcmpgtq k3, zmm12, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0x37,0x9a,0x00,0x04,0x00,0x00] + vpcmpgtq k3, zmm12, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpcmpgtq k3, zmm12, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0x37,0x5a,0x80] + vpcmpgtq k3, zmm12, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpcmpgtq k3, zmm12, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0x9d,0x58,0x37,0x9a,0xf8,0xfb,0xff,0xff] + vpcmpgtq k3, zmm12, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpcmpq k3, zmm25, zmm15, 171 +// CHECK: encoding: [0x62,0xd3,0xb5,0x40,0x1f,0xdf,0xab] + vpcmpq k3, zmm25, zmm15, 171 + +// CHECK: vpcmpq k3 {k4}, zmm25, zmm15, 171 +// CHECK: encoding: [0x62,0xd3,0xb5,0x44,0x1f,0xdf,0xab] + vpcmpq k3 {k4}, zmm25, zmm15, 171 + +// CHECK: vpcmpq k3, zmm25, zmm15, 123 +// CHECK: encoding: [0x62,0xd3,0xb5,0x40,0x1f,0xdf,0x7b] + vpcmpq k3, zmm25, zmm15, 123 + +// CHECK: vpcmpq k3, zmm25, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x1f,0x19,0x7b] + vpcmpq k3, zmm25, zmmword ptr [rcx], 123 + +// CHECK: vpcmpq k3, zmm25, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0xb5,0x40,0x1f,0x9c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpcmpq k3, zmm25, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpcmpq k3, zmm25, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x50,0x1f,0x19,0x7b] + vpcmpq k3, zmm25, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpcmpq k3, zmm25, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x1f,0x5a,0x7f,0x7b] + vpcmpq k3, zmm25, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpcmpq k3, zmm25, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x1f,0x9a,0x00,0x20,0x00,0x00,0x7b] + vpcmpq k3, zmm25, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpcmpq k3, zmm25, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x1f,0x5a,0x80,0x7b] + vpcmpq k3, zmm25, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpcmpq k3, zmm25, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x40,0x1f,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vpcmpq k3, zmm25, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpcmpq k3, zmm25, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x50,0x1f,0x5a,0x7f,0x7b] + vpcmpq k3, zmm25, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpcmpq k3, zmm25, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x50,0x1f,0x9a,0x00,0x04,0x00,0x00,0x7b] + vpcmpq k3, zmm25, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpcmpq k3, zmm25, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x50,0x1f,0x5a,0x80,0x7b] + vpcmpq k3, zmm25, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpcmpq k3, zmm25, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0xb5,0x50,0x1f,0x9a,0xf8,0xfb,0xff,0xff,0x7b] + vpcmpq k3, zmm25, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpcmpud k3, zmm29, zmm5, 171 +// CHECK: encoding: [0x62,0xf3,0x15,0x40,0x1e,0xdd,0xab] + vpcmpud k3, zmm29, zmm5, 171 + +// CHECK: vpcmpud k3 {k7}, zmm29, zmm5, 171 +// CHECK: encoding: [0x62,0xf3,0x15,0x47,0x1e,0xdd,0xab] + vpcmpud k3 {k7}, zmm29, zmm5, 171 + +// CHECK: vpcmpud k3, zmm29, zmm5, 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x40,0x1e,0xdd,0x7b] + vpcmpud k3, zmm29, zmm5, 123 + +// CHECK: vpcmpud k3, zmm29, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x40,0x1e,0x19,0x7b] + vpcmpud k3, zmm29, zmmword ptr [rcx], 123 + +// CHECK: vpcmpud k3, zmm29, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0x15,0x40,0x1e,0x9c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpcmpud k3, zmm29, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpcmpud k3, zmm29, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x50,0x1e,0x19,0x7b] + vpcmpud k3, zmm29, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpcmpud k3, zmm29, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x40,0x1e,0x5a,0x7f,0x7b] + vpcmpud k3, zmm29, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpcmpud k3, zmm29, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x40,0x1e,0x9a,0x00,0x20,0x00,0x00,0x7b] + vpcmpud k3, zmm29, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpcmpud k3, zmm29, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x40,0x1e,0x5a,0x80,0x7b] + vpcmpud k3, zmm29, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpcmpud k3, zmm29, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x40,0x1e,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vpcmpud k3, zmm29, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpcmpud k3, zmm29, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x50,0x1e,0x5a,0x7f,0x7b] + vpcmpud k3, zmm29, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpcmpud k3, zmm29, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x50,0x1e,0x9a,0x00,0x02,0x00,0x00,0x7b] + vpcmpud k3, zmm29, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpcmpud k3, zmm29, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x50,0x1e,0x5a,0x80,0x7b] + vpcmpud k3, zmm29, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpcmpud k3, zmm29, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x15,0x50,0x1e,0x9a,0xfc,0xfd,0xff,0xff,0x7b] + vpcmpud k3, zmm29, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpcmpuq k2, zmm14, zmm12, 171 +// CHECK: encoding: [0x62,0xd3,0x8d,0x48,0x1e,0xd4,0xab] + vpcmpuq k2, zmm14, zmm12, 171 + +// CHECK: vpcmpuq k2 {k3}, zmm14, zmm12, 171 +// CHECK: encoding: [0x62,0xd3,0x8d,0x4b,0x1e,0xd4,0xab] + vpcmpuq k2 {k3}, zmm14, zmm12, 171 + +// CHECK: vpcmpuq k2, zmm14, zmm12, 123 +// CHECK: encoding: [0x62,0xd3,0x8d,0x48,0x1e,0xd4,0x7b] + vpcmpuq k2, zmm14, zmm12, 123 + +// CHECK: vpcmpuq k2, zmm14, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x11,0x7b] + vpcmpuq k2, zmm14, zmmword ptr [rcx], 123 + +// CHECK: vpcmpuq k2, zmm14, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0x8d,0x48,0x1e,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpcmpuq k2, zmm14, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpcmpuq k2, zmm14, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x11,0x7b] + vpcmpuq k2, zmm14, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpcmpuq k2, zmm14, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x52,0x7f,0x7b] + vpcmpuq k2, zmm14, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpcmpuq k2, zmm14, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x92,0x00,0x20,0x00,0x00,0x7b] + vpcmpuq k2, zmm14, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpcmpuq k2, zmm14, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x52,0x80,0x7b] + vpcmpuq k2, zmm14, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpcmpuq k2, zmm14, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x48,0x1e,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpcmpuq k2, zmm14, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpcmpuq k2, zmm14, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x52,0x7f,0x7b] + vpcmpuq k2, zmm14, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpcmpuq k2, zmm14, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x92,0x00,0x04,0x00,0x00,0x7b] + vpcmpuq k2, zmm14, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpcmpuq k2, zmm14, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x52,0x80,0x7b] + vpcmpuq k2, zmm14, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpcmpuq k2, zmm14, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x8d,0x58,0x1e,0x92,0xf8,0xfb,0xff,0xff,0x7b] + vpcmpuq k2, zmm14, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpblendmq zmm24, zmm18, zmm5 +// CHECK: encoding: [0x62,0x62,0xed,0x40,0x64,0xc5] + vpblendmq zmm24, zmm18, zmm5 + +// CHECK: vpblendmq zmm24 {k3}, zmm18, zmm5 +// CHECK: encoding: [0x62,0x62,0xed,0x43,0x64,0xc5] + vpblendmq zmm24 {k3}, zmm18, zmm5 + +// CHECK: vpblendmq zmm24 {k3} {z}, zmm18, zmm5 +// CHECK: encoding: [0x62,0x62,0xed,0xc3,0x64,0xc5] + vpblendmq zmm24 {k3} {z}, zmm18, zmm5 + +// CHECK: vpblendmq zmm24, zmm18, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xed,0x40,0x64,0x01] + vpblendmq zmm24, zmm18, zmmword ptr [rcx] + +// CHECK: vpblendmq zmm24, zmm18, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xed,0x40,0x64,0x84,0xf0,0x34,0x12,0x00,0x00] + vpblendmq zmm24, zmm18, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpblendmq zmm24, zmm18, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xed,0x50,0x64,0x01] + vpblendmq zmm24, zmm18, qword ptr [rcx]{1to8} + +// CHECK: vpblendmq zmm24, zmm18, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xed,0x40,0x64,0x42,0x7f] + vpblendmq zmm24, zmm18, zmmword ptr [rdx + 8128] + +// CHECK: vpblendmq zmm24, zmm18, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xed,0x40,0x64,0x82,0x00,0x20,0x00,0x00] + vpblendmq zmm24, zmm18, zmmword ptr [rdx + 8192] + +// CHECK: vpblendmq zmm24, zmm18, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xed,0x40,0x64,0x42,0x80] + vpblendmq zmm24, zmm18, zmmword ptr [rdx - 8192] + +// CHECK: vpblendmq zmm24, zmm18, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xed,0x40,0x64,0x82,0xc0,0xdf,0xff,0xff] + vpblendmq zmm24, zmm18, zmmword ptr [rdx - 8256] + +// CHECK: vpblendmq zmm24, zmm18, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xed,0x50,0x64,0x42,0x7f] + vpblendmq zmm24, zmm18, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpblendmq zmm24, zmm18, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xed,0x50,0x64,0x82,0x00,0x04,0x00,0x00] + vpblendmq zmm24, zmm18, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpblendmq zmm24, zmm18, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xed,0x50,0x64,0x42,0x80] + vpblendmq zmm24, zmm18, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpblendmq zmm24, zmm18, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xed,0x50,0x64,0x82,0xf8,0xfb,0xff,0xff] + vpblendmq zmm24, zmm18, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpcompressd zmmword ptr [rcx], zmm20 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0x21] + vpcompressd zmmword ptr [rcx], zmm20 + +// CHECK: vpcompressd zmmword ptr [rcx] {k6}, zmm20 +// CHECK: encoding: [0x62,0xe2,0x7d,0x4e,0x8b,0x21] + vpcompressd zmmword ptr [rcx] {k6}, zmm20 + +// CHECK: vpcompressd zmmword ptr [rax + 8*r14 + 4660], zmm20 +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x8b,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpcompressd zmmword ptr [rax + 8*r14 + 4660], zmm20 + +// CHECK: vpcompressd zmmword ptr [rdx + 508], zmm20 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0x62,0x7f] + vpcompressd zmmword ptr [rdx + 508], zmm20 + +// CHECK: vpcompressd zmmword ptr [rdx + 512], zmm20 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0xa2,0x00,0x02,0x00,0x00] + vpcompressd zmmword ptr [rdx + 512], zmm20 + +// CHECK: vpcompressd zmmword ptr [rdx - 512], zmm20 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0x62,0x80] + vpcompressd zmmword ptr [rdx - 512], zmm20 + +// CHECK: vpcompressd zmmword ptr [rdx - 516], zmm20 +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x8b,0xa2,0xfc,0xfd,0xff,0xff] + vpcompressd zmmword ptr [rdx - 516], zmm20 + +// CHECK: vpcompressd zmm24, zmm12 +// CHECK: encoding: [0x62,0x12,0x7d,0x48,0x8b,0xe0] + vpcompressd zmm24, zmm12 + +// CHECK: vpcompressd zmm24 {k5}, zmm12 +// CHECK: encoding: [0x62,0x12,0x7d,0x4d,0x8b,0xe0] + vpcompressd zmm24 {k5}, zmm12 + +// CHECK: vpcompressd zmm24 {k5} {z}, zmm12 +// CHECK: encoding: [0x62,0x12,0x7d,0xcd,0x8b,0xe0] + vpcompressd zmm24 {k5} {z}, zmm12 + +// CHECK: vpermd zmm25, zmm10, zmm8 +// CHECK: encoding: [0x62,0x42,0x2d,0x48,0x36,0xc8] + vpermd zmm25, zmm10, zmm8 + +// CHECK: vpermd zmm25 {k6}, zmm10, zmm8 +// CHECK: encoding: [0x62,0x42,0x2d,0x4e,0x36,0xc8] + vpermd zmm25 {k6}, zmm10, zmm8 + +// CHECK: vpermd zmm25 {k6} {z}, zmm10, zmm8 +// CHECK: encoding: [0x62,0x42,0x2d,0xce,0x36,0xc8] + vpermd zmm25 {k6} {z}, zmm10, zmm8 + +// CHECK: vpermd zmm25, zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0x36,0x09] + vpermd zmm25, zmm10, zmmword ptr [rcx] + +// CHECK: vpermd zmm25, zmm10, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x2d,0x48,0x36,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpermd zmm25, zmm10, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermd zmm25, zmm10, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0x36,0x09] + vpermd zmm25, zmm10, dword ptr [rcx]{1to16} + +// CHECK: vpermd zmm25, zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0x36,0x4a,0x7f] + vpermd zmm25, zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vpermd zmm25, zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0x36,0x8a,0x00,0x20,0x00,0x00] + vpermd zmm25, zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vpermd zmm25, zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0x36,0x4a,0x80] + vpermd zmm25, zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vpermd zmm25, zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x2d,0x48,0x36,0x8a,0xc0,0xdf,0xff,0xff] + vpermd zmm25, zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vpermd zmm25, zmm10, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0x36,0x4a,0x7f] + vpermd zmm25, zmm10, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermd zmm25, zmm10, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0x36,0x8a,0x00,0x02,0x00,0x00] + vpermd zmm25, zmm10, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermd zmm25, zmm10, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0x36,0x4a,0x80] + vpermd zmm25, zmm10, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermd zmm25, zmm10, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x58,0x36,0x8a,0xfc,0xfd,0xff,0xff] + vpermd zmm25, zmm10, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermilpd zmm15, zmm8, 171 +// CHECK: encoding: [0x62,0x53,0xfd,0x48,0x05,0xf8,0xab] + vpermilpd zmm15, zmm8, 171 + +// CHECK: vpermilpd zmm15 {k6}, zmm8, 171 +// CHECK: encoding: [0x62,0x53,0xfd,0x4e,0x05,0xf8,0xab] + vpermilpd zmm15 {k6}, zmm8, 171 + +// CHECK: vpermilpd zmm15 {k6} {z}, zmm8, 171 +// CHECK: encoding: [0x62,0x53,0xfd,0xce,0x05,0xf8,0xab] + vpermilpd zmm15 {k6} {z}, zmm8, 171 + +// CHECK: vpermilpd zmm15, zmm8, 123 +// CHECK: encoding: [0x62,0x53,0xfd,0x48,0x05,0xf8,0x7b] + vpermilpd zmm15, zmm8, 123 + +// CHECK: vpermilpd zmm15, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x05,0x39,0x7b] + vpermilpd zmm15, zmmword ptr [rcx], 123 + +// CHECK: vpermilpd zmm15, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x33,0xfd,0x48,0x05,0xbc,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpermilpd zmm15, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpermilpd zmm15, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x05,0x39,0x7b] + vpermilpd zmm15, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpermilpd zmm15, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x05,0x7a,0x7f,0x7b] + vpermilpd zmm15, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpermilpd zmm15, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x05,0xba,0x00,0x20,0x00,0x00,0x7b] + vpermilpd zmm15, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpermilpd zmm15, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x05,0x7a,0x80,0x7b] + vpermilpd zmm15, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpermilpd zmm15, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x05,0xba,0xc0,0xdf,0xff,0xff,0x7b] + vpermilpd zmm15, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpermilpd zmm15, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x05,0x7a,0x7f,0x7b] + vpermilpd zmm15, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpermilpd zmm15, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x05,0xba,0x00,0x04,0x00,0x00,0x7b] + vpermilpd zmm15, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpermilpd zmm15, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x05,0x7a,0x80,0x7b] + vpermilpd zmm15, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpermilpd zmm15, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x05,0xba,0xf8,0xfb,0xff,0xff,0x7b] + vpermilpd zmm15, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpermilpd zmm23, zmm26, zmm8 +// CHECK: encoding: [0x62,0xc2,0xad,0x40,0x0d,0xf8] + vpermilpd zmm23, zmm26, zmm8 + +// CHECK: vpermilpd zmm23 {k1}, zmm26, zmm8 +// CHECK: encoding: [0x62,0xc2,0xad,0x41,0x0d,0xf8] + vpermilpd zmm23 {k1}, zmm26, zmm8 + +// CHECK: vpermilpd zmm23 {k1} {z}, zmm26, zmm8 +// CHECK: encoding: [0x62,0xc2,0xad,0xc1,0x0d,0xf8] + vpermilpd zmm23 {k1} {z}, zmm26, zmm8 + +// CHECK: vpermilpd zmm23, zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xad,0x40,0x0d,0x39] + vpermilpd zmm23, zmm26, zmmword ptr [rcx] + +// CHECK: vpermilpd zmm23, zmm26, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xad,0x40,0x0d,0xbc,0xf0,0x34,0x12,0x00,0x00] + vpermilpd zmm23, zmm26, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermilpd zmm23, zmm26, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xad,0x50,0x0d,0x39] + vpermilpd zmm23, zmm26, qword ptr [rcx]{1to8} + +// CHECK: vpermilpd zmm23, zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xad,0x40,0x0d,0x7a,0x7f] + vpermilpd zmm23, zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vpermilpd zmm23, zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xad,0x40,0x0d,0xba,0x00,0x20,0x00,0x00] + vpermilpd zmm23, zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vpermilpd zmm23, zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xad,0x40,0x0d,0x7a,0x80] + vpermilpd zmm23, zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vpermilpd zmm23, zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xad,0x40,0x0d,0xba,0xc0,0xdf,0xff,0xff] + vpermilpd zmm23, zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vpermilpd zmm23, zmm26, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xad,0x50,0x0d,0x7a,0x7f] + vpermilpd zmm23, zmm26, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermilpd zmm23, zmm26, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xad,0x50,0x0d,0xba,0x00,0x04,0x00,0x00] + vpermilpd zmm23, zmm26, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermilpd zmm23, zmm26, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xad,0x50,0x0d,0x7a,0x80] + vpermilpd zmm23, zmm26, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermilpd zmm23, zmm26, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xad,0x50,0x0d,0xba,0xf8,0xfb,0xff,0xff] + vpermilpd zmm23, zmm26, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermilps zmm25, zmm7, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x04,0xcf,0xab] + vpermilps zmm25, zmm7, 171 + +// CHECK: vpermilps zmm25 {k2}, zmm7, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0x4a,0x04,0xcf,0xab] + vpermilps zmm25 {k2}, zmm7, 171 + +// CHECK: vpermilps zmm25 {k2} {z}, zmm7, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0xca,0x04,0xcf,0xab] + vpermilps zmm25 {k2} {z}, zmm7, 171 + +// CHECK: vpermilps zmm25, zmm7, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x04,0xcf,0x7b] + vpermilps zmm25, zmm7, 123 + +// CHECK: vpermilps zmm25, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x04,0x09,0x7b] + vpermilps zmm25, zmmword ptr [rcx], 123 + +// CHECK: vpermilps zmm25, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0x7d,0x48,0x04,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpermilps zmm25, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpermilps zmm25, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x04,0x09,0x7b] + vpermilps zmm25, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpermilps zmm25, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x04,0x4a,0x7f,0x7b] + vpermilps zmm25, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpermilps zmm25, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x04,0x8a,0x00,0x20,0x00,0x00,0x7b] + vpermilps zmm25, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpermilps zmm25, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x04,0x4a,0x80,0x7b] + vpermilps zmm25, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpermilps zmm25, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x04,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vpermilps zmm25, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpermilps zmm25, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x04,0x4a,0x7f,0x7b] + vpermilps zmm25, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpermilps zmm25, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x04,0x8a,0x00,0x02,0x00,0x00,0x7b] + vpermilps zmm25, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpermilps zmm25, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x04,0x4a,0x80,0x7b] + vpermilps zmm25, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpermilps zmm25, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x04,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + vpermilps zmm25, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpermilps zmm3, zmm26, zmm17 +// CHECK: encoding: [0x62,0xb2,0x2d,0x40,0x0c,0xd9] + vpermilps zmm3, zmm26, zmm17 + +// CHECK: vpermilps zmm3 {k3}, zmm26, zmm17 +// CHECK: encoding: [0x62,0xb2,0x2d,0x43,0x0c,0xd9] + vpermilps zmm3 {k3}, zmm26, zmm17 + +// CHECK: vpermilps zmm3 {k3} {z}, zmm26, zmm17 +// CHECK: encoding: [0x62,0xb2,0x2d,0xc3,0x0c,0xd9] + vpermilps zmm3 {k3} {z}, zmm26, zmm17 + +// CHECK: vpermilps zmm3, zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x2d,0x40,0x0c,0x19] + vpermilps zmm3, zmm26, zmmword ptr [rcx] + +// CHECK: vpermilps zmm3, zmm26, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x2d,0x40,0x0c,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpermilps zmm3, zmm26, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermilps zmm3, zmm26, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x2d,0x50,0x0c,0x19] + vpermilps zmm3, zmm26, dword ptr [rcx]{1to16} + +// CHECK: vpermilps zmm3, zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x2d,0x40,0x0c,0x5a,0x7f] + vpermilps zmm3, zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vpermilps zmm3, zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x2d,0x40,0x0c,0x9a,0x00,0x20,0x00,0x00] + vpermilps zmm3, zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vpermilps zmm3, zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x2d,0x40,0x0c,0x5a,0x80] + vpermilps zmm3, zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vpermilps zmm3, zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x2d,0x40,0x0c,0x9a,0xc0,0xdf,0xff,0xff] + vpermilps zmm3, zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vpermilps zmm3, zmm26, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x2d,0x50,0x0c,0x5a,0x7f] + vpermilps zmm3, zmm26, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermilps zmm3, zmm26, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x2d,0x50,0x0c,0x9a,0x00,0x02,0x00,0x00] + vpermilps zmm3, zmm26, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermilps zmm3, zmm26, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x2d,0x50,0x0c,0x5a,0x80] + vpermilps zmm3, zmm26, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermilps zmm3, zmm26, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x2d,0x50,0x0c,0x9a,0xfc,0xfd,0xff,0xff] + vpermilps zmm3, zmm26, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermpd zmm28, zmm15, 171 +// CHECK: encoding: [0x62,0x43,0xfd,0x48,0x01,0xe7,0xab] + vpermpd zmm28, zmm15, 171 + +// CHECK: vpermpd zmm28 {k4}, zmm15, 171 +// CHECK: encoding: [0x62,0x43,0xfd,0x4c,0x01,0xe7,0xab] + vpermpd zmm28 {k4}, zmm15, 171 + +// CHECK: vpermpd zmm28 {k4} {z}, zmm15, 171 +// CHECK: encoding: [0x62,0x43,0xfd,0xcc,0x01,0xe7,0xab] + vpermpd zmm28 {k4} {z}, zmm15, 171 + +// CHECK: vpermpd zmm28, zmm15, 123 +// CHECK: encoding: [0x62,0x43,0xfd,0x48,0x01,0xe7,0x7b] + vpermpd zmm28, zmm15, 123 + +// CHECK: vpermpd zmm28, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x01,0x21,0x7b] + vpermpd zmm28, zmmword ptr [rcx], 123 + +// CHECK: vpermpd zmm28, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0xfd,0x48,0x01,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpermpd zmm28, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpermpd zmm28, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x01,0x21,0x7b] + vpermpd zmm28, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpermpd zmm28, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x01,0x62,0x7f,0x7b] + vpermpd zmm28, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpermpd zmm28, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x01,0xa2,0x00,0x20,0x00,0x00,0x7b] + vpermpd zmm28, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpermpd zmm28, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x01,0x62,0x80,0x7b] + vpermpd zmm28, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpermpd zmm28, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x01,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + vpermpd zmm28, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpermpd zmm28, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x01,0x62,0x7f,0x7b] + vpermpd zmm28, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpermpd zmm28, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x01,0xa2,0x00,0x04,0x00,0x00,0x7b] + vpermpd zmm28, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpermpd zmm28, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x01,0x62,0x80,0x7b] + vpermpd zmm28, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpermpd zmm28, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x01,0xa2,0xf8,0xfb,0xff,0xff,0x7b] + vpermpd zmm28, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpermps zmm22, zmm6, zmm21 +// CHECK: encoding: [0x62,0xa2,0x4d,0x48,0x16,0xf5] + vpermps zmm22, zmm6, zmm21 + +// CHECK: vpermps zmm22 {k5}, zmm6, zmm21 +// CHECK: encoding: [0x62,0xa2,0x4d,0x4d,0x16,0xf5] + vpermps zmm22 {k5}, zmm6, zmm21 + +// CHECK: vpermps zmm22 {k5} {z}, zmm6, zmm21 +// CHECK: encoding: [0x62,0xa2,0x4d,0xcd,0x16,0xf5] + vpermps zmm22 {k5} {z}, zmm6, zmm21 + +// CHECK: vpermps zmm22, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x16,0x31] + vpermps zmm22, zmm6, zmmword ptr [rcx] + +// CHECK: vpermps zmm22, zmm6, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x4d,0x48,0x16,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpermps zmm22, zmm6, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermps zmm22, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x16,0x31] + vpermps zmm22, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vpermps zmm22, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x16,0x72,0x7f] + vpermps zmm22, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vpermps zmm22, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x16,0xb2,0x00,0x20,0x00,0x00] + vpermps zmm22, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vpermps zmm22, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x16,0x72,0x80] + vpermps zmm22, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vpermps zmm22, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x4d,0x48,0x16,0xb2,0xc0,0xdf,0xff,0xff] + vpermps zmm22, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vpermps zmm22, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x16,0x72,0x7f] + vpermps zmm22, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermps zmm22, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x16,0xb2,0x00,0x02,0x00,0x00] + vpermps zmm22, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermps zmm22, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x16,0x72,0x80] + vpermps zmm22, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermps zmm22, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x4d,0x58,0x16,0xb2,0xfc,0xfd,0xff,0xff] + vpermps zmm22, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermq zmm24, zmm23, 171 +// CHECK: encoding: [0x62,0x23,0xfd,0x48,0x00,0xc7,0xab] + vpermq zmm24, zmm23, 171 + +// CHECK: vpermq zmm24 {k3}, zmm23, 171 +// CHECK: encoding: [0x62,0x23,0xfd,0x4b,0x00,0xc7,0xab] + vpermq zmm24 {k3}, zmm23, 171 + +// CHECK: vpermq zmm24 {k3} {z}, zmm23, 171 +// CHECK: encoding: [0x62,0x23,0xfd,0xcb,0x00,0xc7,0xab] + vpermq zmm24 {k3} {z}, zmm23, 171 + +// CHECK: vpermq zmm24, zmm23, 123 +// CHECK: encoding: [0x62,0x23,0xfd,0x48,0x00,0xc7,0x7b] + vpermq zmm24, zmm23, 123 + +// CHECK: vpermq zmm24, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x01,0x7b] + vpermq zmm24, zmmword ptr [rcx], 123 + +// CHECK: vpermq zmm24, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0xfd,0x48,0x00,0x84,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpermq zmm24, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpermq zmm24, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x01,0x7b] + vpermq zmm24, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpermq zmm24, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x42,0x7f,0x7b] + vpermq zmm24, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpermq zmm24, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x82,0x00,0x20,0x00,0x00,0x7b] + vpermq zmm24, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpermq zmm24, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x42,0x80,0x7b] + vpermq zmm24, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpermq zmm24, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x82,0xc0,0xdf,0xff,0xff,0x7b] + vpermq zmm24, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpermq zmm24, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x42,0x7f,0x7b] + vpermq zmm24, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpermq zmm24, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x82,0x00,0x04,0x00,0x00,0x7b] + vpermq zmm24, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpermq zmm24, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x42,0x80,0x7b] + vpermq zmm24, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpermq zmm24, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x82,0xf8,0xfb,0xff,0xff,0x7b] + vpermq zmm24, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpexpandd zmm18, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x89,0x11] + vpexpandd zmm18, zmmword ptr [rcx] + +// CHECK: vpexpandd zmm18 {k2}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x4a,0x89,0x11] + vpexpandd zmm18 {k2}, zmmword ptr [rcx] + +// CHECK: vpexpandd zmm18 {k2} {z}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0xca,0x89,0x11] + vpexpandd zmm18 {k2} {z}, zmmword ptr [rcx] + +// CHECK: vpexpandd zmm18, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x89,0x94,0xf0,0x34,0x12,0x00,0x00] + vpexpandd zmm18, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpexpandd zmm18, zmmword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x89,0x52,0x7f] + vpexpandd zmm18, zmmword ptr [rdx + 508] + +// CHECK: vpexpandd zmm18, zmmword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x89,0x92,0x00,0x02,0x00,0x00] + vpexpandd zmm18, zmmword ptr [rdx + 512] + +// CHECK: vpexpandd zmm18, zmmword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x89,0x52,0x80] + vpexpandd zmm18, zmmword ptr [rdx - 512] + +// CHECK: vpexpandd zmm18, zmmword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x89,0x92,0xfc,0xfd,0xff,0xff] + vpexpandd zmm18, zmmword ptr [rdx - 516] + +// CHECK: vpexpandd zmm12, zmm28 +// CHECK: encoding: [0x62,0x12,0x7d,0x48,0x89,0xe4] + vpexpandd zmm12, zmm28 + +// CHECK: vpexpandd zmm12 {k6}, zmm28 +// CHECK: encoding: [0x62,0x12,0x7d,0x4e,0x89,0xe4] + vpexpandd zmm12 {k6}, zmm28 + +// CHECK: vpexpandd zmm12 {k6} {z}, zmm28 +// CHECK: encoding: [0x62,0x12,0x7d,0xce,0x89,0xe4] + vpexpandd zmm12 {k6} {z}, zmm28 + +// CHECK: vpexpandq zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x89,0x09] + vpexpandq zmm1, zmmword ptr [rcx] + +// CHECK: vpexpandq zmm1 {k7}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xfd,0x4f,0x89,0x09] + vpexpandq zmm1 {k7}, zmmword ptr [rcx] + +// CHECK: vpexpandq zmm1 {k7} {z}, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xfd,0xcf,0x89,0x09] + vpexpandq zmm1 {k7} {z}, zmmword ptr [rcx] + +// CHECK: vpexpandq zmm1, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xfd,0x48,0x89,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpexpandq zmm1, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpexpandq zmm1, zmmword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x89,0x4a,0x7f] + vpexpandq zmm1, zmmword ptr [rdx + 1016] + +// CHECK: vpexpandq zmm1, zmmword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x89,0x8a,0x00,0x04,0x00,0x00] + vpexpandq zmm1, zmmword ptr [rdx + 1024] + +// CHECK: vpexpandq zmm1, zmmword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x89,0x4a,0x80] + vpexpandq zmm1, zmmword ptr [rdx - 1024] + +// CHECK: vpexpandq zmm1, zmmword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf2,0xfd,0x48,0x89,0x8a,0xf8,0xfb,0xff,0xff] + vpexpandq zmm1, zmmword ptr [rdx - 1032] + +// CHECK: vpexpandq zmm17, zmm26 +// CHECK: encoding: [0x62,0x82,0xfd,0x48,0x89,0xca] + vpexpandq zmm17, zmm26 + +// CHECK: vpexpandq zmm17 {k7}, zmm26 +// CHECK: encoding: [0x62,0x82,0xfd,0x4f,0x89,0xca] + vpexpandq zmm17 {k7}, zmm26 + +// CHECK: vpexpandq zmm17 {k7} {z}, zmm26 +// CHECK: encoding: [0x62,0x82,0xfd,0xcf,0x89,0xca] + vpexpandq zmm17 {k7} {z}, zmm26 + +// CHECK: vpmaxsd zmm30, zmm13, zmm9 +// CHECK: encoding: [0x62,0x42,0x15,0x48,0x3d,0xf1] + vpmaxsd zmm30, zmm13, zmm9 + +// CHECK: vpmaxsd zmm30 {k7}, zmm13, zmm9 +// CHECK: encoding: [0x62,0x42,0x15,0x4f,0x3d,0xf1] + vpmaxsd zmm30 {k7}, zmm13, zmm9 + +// CHECK: vpmaxsd zmm30 {k7} {z}, zmm13, zmm9 +// CHECK: encoding: [0x62,0x42,0x15,0xcf,0x3d,0xf1] + vpmaxsd zmm30 {k7} {z}, zmm13, zmm9 + +// CHECK: vpmaxsd zmm30, zmm13, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x15,0x48,0x3d,0x31] + vpmaxsd zmm30, zmm13, zmmword ptr [rcx] + +// CHECK: vpmaxsd zmm30, zmm13, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x15,0x48,0x3d,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpmaxsd zmm30, zmm13, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmaxsd zmm30, zmm13, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x58,0x3d,0x31] + vpmaxsd zmm30, zmm13, dword ptr [rcx]{1to16} + +// CHECK: vpmaxsd zmm30, zmm13, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x15,0x48,0x3d,0x72,0x7f] + vpmaxsd zmm30, zmm13, zmmword ptr [rdx + 8128] + +// CHECK: vpmaxsd zmm30, zmm13, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x15,0x48,0x3d,0xb2,0x00,0x20,0x00,0x00] + vpmaxsd zmm30, zmm13, zmmword ptr [rdx + 8192] + +// CHECK: vpmaxsd zmm30, zmm13, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x15,0x48,0x3d,0x72,0x80] + vpmaxsd zmm30, zmm13, zmmword ptr [rdx - 8192] + +// CHECK: vpmaxsd zmm30, zmm13, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x15,0x48,0x3d,0xb2,0xc0,0xdf,0xff,0xff] + vpmaxsd zmm30, zmm13, zmmword ptr [rdx - 8256] + +// CHECK: vpmaxsd zmm30, zmm13, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x58,0x3d,0x72,0x7f] + vpmaxsd zmm30, zmm13, dword ptr [rdx + 508]{1to16} + +// CHECK: vpmaxsd zmm30, zmm13, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x58,0x3d,0xb2,0x00,0x02,0x00,0x00] + vpmaxsd zmm30, zmm13, dword ptr [rdx + 512]{1to16} + +// CHECK: vpmaxsd zmm30, zmm13, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x58,0x3d,0x72,0x80] + vpmaxsd zmm30, zmm13, dword ptr [rdx - 512]{1to16} + +// CHECK: vpmaxsd zmm30, zmm13, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x15,0x58,0x3d,0xb2,0xfc,0xfd,0xff,0xff] + vpmaxsd zmm30, zmm13, dword ptr [rdx - 516]{1to16} + +// CHECK: vpmaxsq zmm3, zmm7, zmm5 +// CHECK: encoding: [0x62,0xf2,0xc5,0x48,0x3d,0xdd] + vpmaxsq zmm3, zmm7, zmm5 + +// CHECK: vpmaxsq zmm3 {k3}, zmm7, zmm5 +// CHECK: encoding: [0x62,0xf2,0xc5,0x4b,0x3d,0xdd] + vpmaxsq zmm3 {k3}, zmm7, zmm5 + +// CHECK: vpmaxsq zmm3 {k3} {z}, zmm7, zmm5 +// CHECK: encoding: [0x62,0xf2,0xc5,0xcb,0x3d,0xdd] + vpmaxsq zmm3 {k3} {z}, zmm7, zmm5 + +// CHECK: vpmaxsq zmm3, zmm7, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xc5,0x48,0x3d,0x19] + vpmaxsq zmm3, zmm7, zmmword ptr [rcx] + +// CHECK: vpmaxsq zmm3, zmm7, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xc5,0x48,0x3d,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpmaxsq zmm3, zmm7, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmaxsq zmm3, zmm7, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x58,0x3d,0x19] + vpmaxsq zmm3, zmm7, qword ptr [rcx]{1to8} + +// CHECK: vpmaxsq zmm3, zmm7, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xc5,0x48,0x3d,0x5a,0x7f] + vpmaxsq zmm3, zmm7, zmmword ptr [rdx + 8128] + +// CHECK: vpmaxsq zmm3, zmm7, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xc5,0x48,0x3d,0x9a,0x00,0x20,0x00,0x00] + vpmaxsq zmm3, zmm7, zmmword ptr [rdx + 8192] + +// CHECK: vpmaxsq zmm3, zmm7, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xc5,0x48,0x3d,0x5a,0x80] + vpmaxsq zmm3, zmm7, zmmword ptr [rdx - 8192] + +// CHECK: vpmaxsq zmm3, zmm7, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xc5,0x48,0x3d,0x9a,0xc0,0xdf,0xff,0xff] + vpmaxsq zmm3, zmm7, zmmword ptr [rdx - 8256] + +// CHECK: vpmaxsq zmm3, zmm7, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x58,0x3d,0x5a,0x7f] + vpmaxsq zmm3, zmm7, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpmaxsq zmm3, zmm7, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x58,0x3d,0x9a,0x00,0x04,0x00,0x00] + vpmaxsq zmm3, zmm7, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpmaxsq zmm3, zmm7, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x58,0x3d,0x5a,0x80] + vpmaxsq zmm3, zmm7, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpmaxsq zmm3, zmm7, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xc5,0x58,0x3d,0x9a,0xf8,0xfb,0xff,0xff] + vpmaxsq zmm3, zmm7, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpmaxud zmm22, zmm27, zmm12 +// CHECK: encoding: [0x62,0xc2,0x25,0x40,0x3f,0xf4] + vpmaxud zmm22, zmm27, zmm12 + +// CHECK: vpmaxud zmm22 {k7}, zmm27, zmm12 +// CHECK: encoding: [0x62,0xc2,0x25,0x47,0x3f,0xf4] + vpmaxud zmm22 {k7}, zmm27, zmm12 + +// CHECK: vpmaxud zmm22 {k7} {z}, zmm27, zmm12 +// CHECK: encoding: [0x62,0xc2,0x25,0xc7,0x3f,0xf4] + vpmaxud zmm22 {k7} {z}, zmm27, zmm12 + +// CHECK: vpmaxud zmm22, zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x25,0x40,0x3f,0x31] + vpmaxud zmm22, zmm27, zmmword ptr [rcx] + +// CHECK: vpmaxud zmm22, zmm27, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x25,0x40,0x3f,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpmaxud zmm22, zmm27, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmaxud zmm22, zmm27, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x25,0x50,0x3f,0x31] + vpmaxud zmm22, zmm27, dword ptr [rcx]{1to16} + +// CHECK: vpmaxud zmm22, zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x25,0x40,0x3f,0x72,0x7f] + vpmaxud zmm22, zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vpmaxud zmm22, zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x25,0x40,0x3f,0xb2,0x00,0x20,0x00,0x00] + vpmaxud zmm22, zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vpmaxud zmm22, zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x25,0x40,0x3f,0x72,0x80] + vpmaxud zmm22, zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vpmaxud zmm22, zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x25,0x40,0x3f,0xb2,0xc0,0xdf,0xff,0xff] + vpmaxud zmm22, zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vpmaxud zmm22, zmm27, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x25,0x50,0x3f,0x72,0x7f] + vpmaxud zmm22, zmm27, dword ptr [rdx + 508]{1to16} + +// CHECK: vpmaxud zmm22, zmm27, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x25,0x50,0x3f,0xb2,0x00,0x02,0x00,0x00] + vpmaxud zmm22, zmm27, dword ptr [rdx + 512]{1to16} + +// CHECK: vpmaxud zmm22, zmm27, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x25,0x50,0x3f,0x72,0x80] + vpmaxud zmm22, zmm27, dword ptr [rdx - 512]{1to16} + +// CHECK: vpmaxud zmm22, zmm27, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x25,0x50,0x3f,0xb2,0xfc,0xfd,0xff,0xff] + vpmaxud zmm22, zmm27, dword ptr [rdx - 516]{1to16} + +// CHECK: vpmaxuq zmm1, zmm9, zmm12 +// CHECK: encoding: [0x62,0xd2,0xb5,0x48,0x3f,0xcc] + vpmaxuq zmm1, zmm9, zmm12 + +// CHECK: vpmaxuq zmm1 {k2}, zmm9, zmm12 +// CHECK: encoding: [0x62,0xd2,0xb5,0x4a,0x3f,0xcc] + vpmaxuq zmm1 {k2}, zmm9, zmm12 + +// CHECK: vpmaxuq zmm1 {k2} {z}, zmm9, zmm12 +// CHECK: encoding: [0x62,0xd2,0xb5,0xca,0x3f,0xcc] + vpmaxuq zmm1 {k2} {z}, zmm9, zmm12 + +// CHECK: vpmaxuq zmm1, zmm9, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xb5,0x48,0x3f,0x09] + vpmaxuq zmm1, zmm9, zmmword ptr [rcx] + +// CHECK: vpmaxuq zmm1, zmm9, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xb5,0x48,0x3f,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpmaxuq zmm1, zmm9, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmaxuq zmm1, zmm9, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x58,0x3f,0x09] + vpmaxuq zmm1, zmm9, qword ptr [rcx]{1to8} + +// CHECK: vpmaxuq zmm1, zmm9, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xb5,0x48,0x3f,0x4a,0x7f] + vpmaxuq zmm1, zmm9, zmmword ptr [rdx + 8128] + +// CHECK: vpmaxuq zmm1, zmm9, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xb5,0x48,0x3f,0x8a,0x00,0x20,0x00,0x00] + vpmaxuq zmm1, zmm9, zmmword ptr [rdx + 8192] + +// CHECK: vpmaxuq zmm1, zmm9, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xb5,0x48,0x3f,0x4a,0x80] + vpmaxuq zmm1, zmm9, zmmword ptr [rdx - 8192] + +// CHECK: vpmaxuq zmm1, zmm9, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xb5,0x48,0x3f,0x8a,0xc0,0xdf,0xff,0xff] + vpmaxuq zmm1, zmm9, zmmword ptr [rdx - 8256] + +// CHECK: vpmaxuq zmm1, zmm9, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x58,0x3f,0x4a,0x7f] + vpmaxuq zmm1, zmm9, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpmaxuq zmm1, zmm9, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x58,0x3f,0x8a,0x00,0x04,0x00,0x00] + vpmaxuq zmm1, zmm9, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpmaxuq zmm1, zmm9, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x58,0x3f,0x4a,0x80] + vpmaxuq zmm1, zmm9, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpmaxuq zmm1, zmm9, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xb5,0x58,0x3f,0x8a,0xf8,0xfb,0xff,0xff] + vpmaxuq zmm1, zmm9, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpminsd zmm19, zmm17, zmm2 +// CHECK: encoding: [0x62,0xe2,0x75,0x40,0x39,0xda] + vpminsd zmm19, zmm17, zmm2 + +// CHECK: vpminsd zmm19 {k7}, zmm17, zmm2 +// CHECK: encoding: [0x62,0xe2,0x75,0x47,0x39,0xda] + vpminsd zmm19 {k7}, zmm17, zmm2 + +// CHECK: vpminsd zmm19 {k7} {z}, zmm17, zmm2 +// CHECK: encoding: [0x62,0xe2,0x75,0xc7,0x39,0xda] + vpminsd zmm19 {k7} {z}, zmm17, zmm2 + +// CHECK: vpminsd zmm19, zmm17, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x75,0x40,0x39,0x19] + vpminsd zmm19, zmm17, zmmword ptr [rcx] + +// CHECK: vpminsd zmm19, zmm17, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x75,0x40,0x39,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpminsd zmm19, zmm17, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpminsd zmm19, zmm17, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x75,0x50,0x39,0x19] + vpminsd zmm19, zmm17, dword ptr [rcx]{1to16} + +// CHECK: vpminsd zmm19, zmm17, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x75,0x40,0x39,0x5a,0x7f] + vpminsd zmm19, zmm17, zmmword ptr [rdx + 8128] + +// CHECK: vpminsd zmm19, zmm17, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x75,0x40,0x39,0x9a,0x00,0x20,0x00,0x00] + vpminsd zmm19, zmm17, zmmword ptr [rdx + 8192] + +// CHECK: vpminsd zmm19, zmm17, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x75,0x40,0x39,0x5a,0x80] + vpminsd zmm19, zmm17, zmmword ptr [rdx - 8192] + +// CHECK: vpminsd zmm19, zmm17, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x75,0x40,0x39,0x9a,0xc0,0xdf,0xff,0xff] + vpminsd zmm19, zmm17, zmmword ptr [rdx - 8256] + +// CHECK: vpminsd zmm19, zmm17, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x75,0x50,0x39,0x5a,0x7f] + vpminsd zmm19, zmm17, dword ptr [rdx + 508]{1to16} + +// CHECK: vpminsd zmm19, zmm17, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x75,0x50,0x39,0x9a,0x00,0x02,0x00,0x00] + vpminsd zmm19, zmm17, dword ptr [rdx + 512]{1to16} + +// CHECK: vpminsd zmm19, zmm17, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x75,0x50,0x39,0x5a,0x80] + vpminsd zmm19, zmm17, dword ptr [rdx - 512]{1to16} + +// CHECK: vpminsd zmm19, zmm17, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x75,0x50,0x39,0x9a,0xfc,0xfd,0xff,0xff] + vpminsd zmm19, zmm17, dword ptr [rdx - 516]{1to16} + +// CHECK: vpminsq zmm21, zmm1, zmm22 +// CHECK: encoding: [0x62,0xa2,0xf5,0x48,0x39,0xee] + vpminsq zmm21, zmm1, zmm22 + +// CHECK: vpminsq zmm21 {k6}, zmm1, zmm22 +// CHECK: encoding: [0x62,0xa2,0xf5,0x4e,0x39,0xee] + vpminsq zmm21 {k6}, zmm1, zmm22 + +// CHECK: vpminsq zmm21 {k6} {z}, zmm1, zmm22 +// CHECK: encoding: [0x62,0xa2,0xf5,0xce,0x39,0xee] + vpminsq zmm21 {k6} {z}, zmm1, zmm22 + +// CHECK: vpminsq zmm21, zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xf5,0x48,0x39,0x29] + vpminsq zmm21, zmm1, zmmword ptr [rcx] + +// CHECK: vpminsq zmm21, zmm1, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xf5,0x48,0x39,0xac,0xf0,0x34,0x12,0x00,0x00] + vpminsq zmm21, zmm1, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpminsq zmm21, zmm1, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xf5,0x58,0x39,0x29] + vpminsq zmm21, zmm1, qword ptr [rcx]{1to8} + +// CHECK: vpminsq zmm21, zmm1, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xf5,0x48,0x39,0x6a,0x7f] + vpminsq zmm21, zmm1, zmmword ptr [rdx + 8128] + +// CHECK: vpminsq zmm21, zmm1, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xf5,0x48,0x39,0xaa,0x00,0x20,0x00,0x00] + vpminsq zmm21, zmm1, zmmword ptr [rdx + 8192] + +// CHECK: vpminsq zmm21, zmm1, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xf5,0x48,0x39,0x6a,0x80] + vpminsq zmm21, zmm1, zmmword ptr [rdx - 8192] + +// CHECK: vpminsq zmm21, zmm1, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xf5,0x48,0x39,0xaa,0xc0,0xdf,0xff,0xff] + vpminsq zmm21, zmm1, zmmword ptr [rdx - 8256] + +// CHECK: vpminsq zmm21, zmm1, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xf5,0x58,0x39,0x6a,0x7f] + vpminsq zmm21, zmm1, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpminsq zmm21, zmm1, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xf5,0x58,0x39,0xaa,0x00,0x04,0x00,0x00] + vpminsq zmm21, zmm1, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpminsq zmm21, zmm1, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xf5,0x58,0x39,0x6a,0x80] + vpminsq zmm21, zmm1, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpminsq zmm21, zmm1, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xf5,0x58,0x39,0xaa,0xf8,0xfb,0xff,0xff] + vpminsq zmm21, zmm1, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpminud zmm4, zmm22, zmm3 +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0x3b,0xe3] + vpminud zmm4, zmm22, zmm3 + +// CHECK: vpminud zmm4 {k4}, zmm22, zmm3 +// CHECK: encoding: [0x62,0xf2,0x4d,0x44,0x3b,0xe3] + vpminud zmm4 {k4}, zmm22, zmm3 + +// CHECK: vpminud zmm4 {k4} {z}, zmm22, zmm3 +// CHECK: encoding: [0x62,0xf2,0x4d,0xc4,0x3b,0xe3] + vpminud zmm4 {k4} {z}, zmm22, zmm3 + +// CHECK: vpminud zmm4, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0x3b,0x21] + vpminud zmm4, zmm22, zmmword ptr [rcx] + +// CHECK: vpminud zmm4, zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x4d,0x40,0x3b,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpminud zmm4, zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpminud zmm4, zmm22, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0x3b,0x21] + vpminud zmm4, zmm22, dword ptr [rcx]{1to16} + +// CHECK: vpminud zmm4, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0x3b,0x62,0x7f] + vpminud zmm4, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpminud zmm4, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0x3b,0xa2,0x00,0x20,0x00,0x00] + vpminud zmm4, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpminud zmm4, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0x3b,0x62,0x80] + vpminud zmm4, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpminud zmm4, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x4d,0x40,0x3b,0xa2,0xc0,0xdf,0xff,0xff] + vpminud zmm4, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpminud zmm4, zmm22, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0x3b,0x62,0x7f] + vpminud zmm4, zmm22, dword ptr [rdx + 508]{1to16} + +// CHECK: vpminud zmm4, zmm22, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0x3b,0xa2,0x00,0x02,0x00,0x00] + vpminud zmm4, zmm22, dword ptr [rdx + 512]{1to16} + +// CHECK: vpminud zmm4, zmm22, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0x3b,0x62,0x80] + vpminud zmm4, zmm22, dword ptr [rdx - 512]{1to16} + +// CHECK: vpminud zmm4, zmm22, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x4d,0x50,0x3b,0xa2,0xfc,0xfd,0xff,0xff] + vpminud zmm4, zmm22, dword ptr [rdx - 516]{1to16} + +// CHECK: vpminuq zmm25, zmm26, zmm27 +// CHECK: encoding: [0x62,0x02,0xad,0x40,0x3b,0xcb] + vpminuq zmm25, zmm26, zmm27 + +// CHECK: vpminuq zmm25 {k6}, zmm26, zmm27 +// CHECK: encoding: [0x62,0x02,0xad,0x46,0x3b,0xcb] + vpminuq zmm25 {k6}, zmm26, zmm27 + +// CHECK: vpminuq zmm25 {k6} {z}, zmm26, zmm27 +// CHECK: encoding: [0x62,0x02,0xad,0xc6,0x3b,0xcb] + vpminuq zmm25 {k6} {z}, zmm26, zmm27 + +// CHECK: vpminuq zmm25, zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x3b,0x09] + vpminuq zmm25, zmm26, zmmword ptr [rcx] + +// CHECK: vpminuq zmm25, zmm26, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xad,0x40,0x3b,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpminuq zmm25, zmm26, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpminuq zmm25, zmm26, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x3b,0x09] + vpminuq zmm25, zmm26, qword ptr [rcx]{1to8} + +// CHECK: vpminuq zmm25, zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x3b,0x4a,0x7f] + vpminuq zmm25, zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vpminuq zmm25, zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x3b,0x8a,0x00,0x20,0x00,0x00] + vpminuq zmm25, zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vpminuq zmm25, zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x3b,0x4a,0x80] + vpminuq zmm25, zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vpminuq zmm25, zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xad,0x40,0x3b,0x8a,0xc0,0xdf,0xff,0xff] + vpminuq zmm25, zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vpminuq zmm25, zmm26, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x3b,0x4a,0x7f] + vpminuq zmm25, zmm26, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpminuq zmm25, zmm26, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x3b,0x8a,0x00,0x04,0x00,0x00] + vpminuq zmm25, zmm26, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpminuq zmm25, zmm26, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x3b,0x4a,0x80] + vpminuq zmm25, zmm26, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpminuq zmm25, zmm26, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xad,0x50,0x3b,0x8a,0xf8,0xfb,0xff,0xff] + vpminuq zmm25, zmm26, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpmovsxbd zmm25, xmm10 +// CHECK: encoding: [0x62,0x42,0x7d,0x48,0x21,0xca] + vpmovsxbd zmm25, xmm10 + +// CHECK: vpmovsxbd zmm25 {k1}, xmm10 +// CHECK: encoding: [0x62,0x42,0x7d,0x49,0x21,0xca] + vpmovsxbd zmm25 {k1}, xmm10 + +// CHECK: vpmovsxbd zmm25 {k1} {z}, xmm10 +// CHECK: encoding: [0x62,0x42,0x7d,0xc9,0x21,0xca] + vpmovsxbd zmm25 {k1} {z}, xmm10 + +// CHECK: vpmovsxbd zmm25, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x09] + vpmovsxbd zmm25, xmmword ptr [rcx] + +// CHECK: vpmovsxbd zmm25, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x21,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpmovsxbd zmm25, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovsxbd zmm25, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x4a,0x7f] + vpmovsxbd zmm25, xmmword ptr [rdx + 2032] + +// CHECK: vpmovsxbd zmm25, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x8a,0x00,0x08,0x00,0x00] + vpmovsxbd zmm25, xmmword ptr [rdx + 2048] + +// CHECK: vpmovsxbd zmm25, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x4a,0x80] + vpmovsxbd zmm25, xmmword ptr [rdx - 2048] + +// CHECK: vpmovsxbd zmm25, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x21,0x8a,0xf0,0xf7,0xff,0xff] + vpmovsxbd zmm25, xmmword ptr [rdx - 2064] + +// CHECK: vpmovsxbq zmm14, xmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x22,0xf6] + vpmovsxbq zmm14, xmm14 + +// CHECK: vpmovsxbq zmm14 {k5}, xmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0x4d,0x22,0xf6] + vpmovsxbq zmm14 {k5}, xmm14 + +// CHECK: vpmovsxbq zmm14 {k5} {z}, xmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0xcd,0x22,0xf6] + vpmovsxbq zmm14 {k5} {z}, xmm14 + +// CHECK: vpmovsxbq zmm14, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0x31] + vpmovsxbq zmm14, qword ptr [rcx] + +// CHECK: vpmovsxbq zmm14, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x22,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpmovsxbq zmm14, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovsxbq zmm14, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0x72,0x7f] + vpmovsxbq zmm14, qword ptr [rdx + 1016] + +// CHECK: vpmovsxbq zmm14, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0xb2,0x00,0x04,0x00,0x00] + vpmovsxbq zmm14, qword ptr [rdx + 1024] + +// CHECK: vpmovsxbq zmm14, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0x72,0x80] + vpmovsxbq zmm14, qword ptr [rdx - 1024] + +// CHECK: vpmovsxbq zmm14, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x22,0xb2,0xf8,0xfb,0xff,0xff] + vpmovsxbq zmm14, qword ptr [rdx - 1032] + +// CHECK: vpmovsxdq zmm11, ymm9 +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x25,0xd9] + vpmovsxdq zmm11, ymm9 + +// CHECK: vpmovsxdq zmm11 {k6}, ymm9 +// CHECK: encoding: [0x62,0x52,0x7d,0x4e,0x25,0xd9] + vpmovsxdq zmm11 {k6}, ymm9 + +// CHECK: vpmovsxdq zmm11 {k6} {z}, ymm9 +// CHECK: encoding: [0x62,0x52,0x7d,0xce,0x25,0xd9] + vpmovsxdq zmm11 {k6} {z}, ymm9 + +// CHECK: vpmovsxdq zmm11, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x25,0x19] + vpmovsxdq zmm11, ymmword ptr [rcx] + +// CHECK: vpmovsxdq zmm11, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x25,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpmovsxdq zmm11, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovsxdq zmm11, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x25,0x5a,0x7f] + vpmovsxdq zmm11, ymmword ptr [rdx + 4064] + +// CHECK: vpmovsxdq zmm11, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x25,0x9a,0x00,0x10,0x00,0x00] + vpmovsxdq zmm11, ymmword ptr [rdx + 4096] + +// CHECK: vpmovsxdq zmm11, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x25,0x5a,0x80] + vpmovsxdq zmm11, ymmword ptr [rdx - 4096] + +// CHECK: vpmovsxdq zmm11, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x25,0x9a,0xe0,0xef,0xff,0xff] + vpmovsxdq zmm11, ymmword ptr [rdx - 4128] + +// CHECK: vpmovsxwd zmm12, ymm11 +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x23,0xe3] + vpmovsxwd zmm12, ymm11 + +// CHECK: vpmovsxwd zmm12 {k2}, ymm11 +// CHECK: encoding: [0x62,0x52,0x7d,0x4a,0x23,0xe3] + vpmovsxwd zmm12 {k2}, ymm11 + +// CHECK: vpmovsxwd zmm12 {k2} {z}, ymm11 +// CHECK: encoding: [0x62,0x52,0x7d,0xca,0x23,0xe3] + vpmovsxwd zmm12 {k2} {z}, ymm11 + +// CHECK: vpmovsxwd zmm12, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x23,0x21] + vpmovsxwd zmm12, ymmword ptr [rcx] + +// CHECK: vpmovsxwd zmm12, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x23,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpmovsxwd zmm12, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovsxwd zmm12, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x23,0x62,0x7f] + vpmovsxwd zmm12, ymmword ptr [rdx + 4064] + +// CHECK: vpmovsxwd zmm12, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x23,0xa2,0x00,0x10,0x00,0x00] + vpmovsxwd zmm12, ymmword ptr [rdx + 4096] + +// CHECK: vpmovsxwd zmm12, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x23,0x62,0x80] + vpmovsxwd zmm12, ymmword ptr [rdx - 4096] + +// CHECK: vpmovsxwd zmm12, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x23,0xa2,0xe0,0xef,0xff,0xff] + vpmovsxwd zmm12, ymmword ptr [rdx - 4128] + +// CHECK: vpmovsxwq zmm11, xmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0x48,0x24,0xde] + vpmovsxwq zmm11, xmm14 + +// CHECK: vpmovsxwq zmm11 {k5}, xmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0x4d,0x24,0xde] + vpmovsxwq zmm11 {k5}, xmm14 + +// CHECK: vpmovsxwq zmm11 {k5} {z}, xmm14 +// CHECK: encoding: [0x62,0x52,0x7d,0xcd,0x24,0xde] + vpmovsxwq zmm11 {k5} {z}, xmm14 + +// CHECK: vpmovsxwq zmm11, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x24,0x19] + vpmovsxwq zmm11, xmmword ptr [rcx] + +// CHECK: vpmovsxwq zmm11, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x24,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpmovsxwq zmm11, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovsxwq zmm11, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x24,0x5a,0x7f] + vpmovsxwq zmm11, xmmword ptr [rdx + 2032] + +// CHECK: vpmovsxwq zmm11, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x24,0x9a,0x00,0x08,0x00,0x00] + vpmovsxwq zmm11, xmmword ptr [rdx + 2048] + +// CHECK: vpmovsxwq zmm11, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x24,0x5a,0x80] + vpmovsxwq zmm11, xmmword ptr [rdx - 2048] + +// CHECK: vpmovsxwq zmm11, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x24,0x9a,0xf0,0xf7,0xff,0xff] + vpmovsxwq zmm11, xmmword ptr [rdx - 2064] + +// CHECK: vpmovzxbd zmm25, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x48,0x31,0xc9] + vpmovzxbd zmm25, xmm25 + +// CHECK: vpmovzxbd zmm25 {k4}, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x4c,0x31,0xc9] + vpmovzxbd zmm25 {k4}, xmm25 + +// CHECK: vpmovzxbd zmm25 {k4} {z}, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0xcc,0x31,0xc9] + vpmovzxbd zmm25 {k4} {z}, xmm25 + +// CHECK: vpmovzxbd zmm25, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x31,0x09] + vpmovzxbd zmm25, xmmword ptr [rcx] + +// CHECK: vpmovzxbd zmm25, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x31,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpmovzxbd zmm25, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovzxbd zmm25, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x31,0x4a,0x7f] + vpmovzxbd zmm25, xmmword ptr [rdx + 2032] + +// CHECK: vpmovzxbd zmm25, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x31,0x8a,0x00,0x08,0x00,0x00] + vpmovzxbd zmm25, xmmword ptr [rdx + 2048] + +// CHECK: vpmovzxbd zmm25, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x31,0x4a,0x80] + vpmovzxbd zmm25, xmmword ptr [rdx - 2048] + +// CHECK: vpmovzxbd zmm25, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x31,0x8a,0xf0,0xf7,0xff,0xff] + vpmovzxbd zmm25, xmmword ptr [rdx - 2064] + +// CHECK: vpmovzxbq zmm23, xmm20 +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x32,0xfc] + vpmovzxbq zmm23, xmm20 + +// CHECK: vpmovzxbq zmm23 {k3}, xmm20 +// CHECK: encoding: [0x62,0xa2,0x7d,0x4b,0x32,0xfc] + vpmovzxbq zmm23 {k3}, xmm20 + +// CHECK: vpmovzxbq zmm23 {k3} {z}, xmm20 +// CHECK: encoding: [0x62,0xa2,0x7d,0xcb,0x32,0xfc] + vpmovzxbq zmm23 {k3} {z}, xmm20 + +// CHECK: vpmovzxbq zmm23, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x32,0x39] + vpmovzxbq zmm23, qword ptr [rcx] + +// CHECK: vpmovzxbq zmm23, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x7d,0x48,0x32,0xbc,0xf0,0x34,0x12,0x00,0x00] + vpmovzxbq zmm23, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovzxbq zmm23, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x32,0x7a,0x7f] + vpmovzxbq zmm23, qword ptr [rdx + 1016] + +// CHECK: vpmovzxbq zmm23, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x32,0xba,0x00,0x04,0x00,0x00] + vpmovzxbq zmm23, qword ptr [rdx + 1024] + +// CHECK: vpmovzxbq zmm23, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x32,0x7a,0x80] + vpmovzxbq zmm23, qword ptr [rdx - 1024] + +// CHECK: vpmovzxbq zmm23, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe2,0x7d,0x48,0x32,0xba,0xf8,0xfb,0xff,0xff] + vpmovzxbq zmm23, qword ptr [rdx - 1032] + +// CHECK: vpmovzxdq zmm9, ymm22 +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x35,0xce] + vpmovzxdq zmm9, ymm22 + +// CHECK: vpmovzxdq zmm9 {k3}, ymm22 +// CHECK: encoding: [0x62,0x32,0x7d,0x4b,0x35,0xce] + vpmovzxdq zmm9 {k3}, ymm22 + +// CHECK: vpmovzxdq zmm9 {k3} {z}, ymm22 +// CHECK: encoding: [0x62,0x32,0x7d,0xcb,0x35,0xce] + vpmovzxdq zmm9 {k3} {z}, ymm22 + +// CHECK: vpmovzxdq zmm9, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x35,0x09] + vpmovzxdq zmm9, ymmword ptr [rcx] + +// CHECK: vpmovzxdq zmm9, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x35,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpmovzxdq zmm9, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovzxdq zmm9, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x35,0x4a,0x7f] + vpmovzxdq zmm9, ymmword ptr [rdx + 4064] + +// CHECK: vpmovzxdq zmm9, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x35,0x8a,0x00,0x10,0x00,0x00] + vpmovzxdq zmm9, ymmword ptr [rdx + 4096] + +// CHECK: vpmovzxdq zmm9, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x35,0x4a,0x80] + vpmovzxdq zmm9, ymmword ptr [rdx - 4096] + +// CHECK: vpmovzxdq zmm9, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x35,0x8a,0xe0,0xef,0xff,0xff] + vpmovzxdq zmm9, ymmword ptr [rdx - 4128] + +// CHECK: vpmovzxwd zmm6, ymm29 +// CHECK: encoding: [0x62,0x92,0x7d,0x48,0x33,0xf5] + vpmovzxwd zmm6, ymm29 + +// CHECK: vpmovzxwd zmm6 {k4}, ymm29 +// CHECK: encoding: [0x62,0x92,0x7d,0x4c,0x33,0xf5] + vpmovzxwd zmm6 {k4}, ymm29 + +// CHECK: vpmovzxwd zmm6 {k4} {z}, ymm29 +// CHECK: encoding: [0x62,0x92,0x7d,0xcc,0x33,0xf5] + vpmovzxwd zmm6 {k4} {z}, ymm29 + +// CHECK: vpmovzxwd zmm6, ymmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x33,0x31] + vpmovzxwd zmm6, ymmword ptr [rcx] + +// CHECK: vpmovzxwd zmm6, ymmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x33,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpmovzxwd zmm6, ymmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovzxwd zmm6, ymmword ptr [rdx + 4064] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x33,0x72,0x7f] + vpmovzxwd zmm6, ymmword ptr [rdx + 4064] + +// CHECK: vpmovzxwd zmm6, ymmword ptr [rdx + 4096] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x33,0xb2,0x00,0x10,0x00,0x00] + vpmovzxwd zmm6, ymmword ptr [rdx + 4096] + +// CHECK: vpmovzxwd zmm6, ymmword ptr [rdx - 4096] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x33,0x72,0x80] + vpmovzxwd zmm6, ymmword ptr [rdx - 4096] + +// CHECK: vpmovzxwd zmm6, ymmword ptr [rdx - 4128] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x33,0xb2,0xe0,0xef,0xff,0xff] + vpmovzxwd zmm6, ymmword ptr [rdx - 4128] + +// CHECK: vpmovzxwq zmm12, xmm18 +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x34,0xe2] + vpmovzxwq zmm12, xmm18 + +// CHECK: vpmovzxwq zmm12 {k6}, xmm18 +// CHECK: encoding: [0x62,0x32,0x7d,0x4e,0x34,0xe2] + vpmovzxwq zmm12 {k6}, xmm18 + +// CHECK: vpmovzxwq zmm12 {k6} {z}, xmm18 +// CHECK: encoding: [0x62,0x32,0x7d,0xce,0x34,0xe2] + vpmovzxwq zmm12 {k6} {z}, xmm18 + +// CHECK: vpmovzxwq zmm12, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x34,0x21] + vpmovzxwq zmm12, xmmword ptr [rcx] + +// CHECK: vpmovzxwq zmm12, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x7d,0x48,0x34,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpmovzxwq zmm12, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmovzxwq zmm12, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x34,0x62,0x7f] + vpmovzxwq zmm12, xmmword ptr [rdx + 2032] + +// CHECK: vpmovzxwq zmm12, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x34,0xa2,0x00,0x08,0x00,0x00] + vpmovzxwq zmm12, xmmword ptr [rdx + 2048] + +// CHECK: vpmovzxwq zmm12, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x34,0x62,0x80] + vpmovzxwq zmm12, xmmword ptr [rdx - 2048] + +// CHECK: vpmovzxwq zmm12, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x72,0x7d,0x48,0x34,0xa2,0xf0,0xf7,0xff,0xff] + vpmovzxwq zmm12, xmmword ptr [rdx - 2064] + +// CHECK: vpmuldq zmm5, zmm22, zmm12 +// CHECK: encoding: [0x62,0xd2,0xcd,0x40,0x28,0xec] + vpmuldq zmm5, zmm22, zmm12 + +// CHECK: vpmuldq zmm5 {k4}, zmm22, zmm12 +// CHECK: encoding: [0x62,0xd2,0xcd,0x44,0x28,0xec] + vpmuldq zmm5 {k4}, zmm22, zmm12 + +// CHECK: vpmuldq zmm5 {k4} {z}, zmm22, zmm12 +// CHECK: encoding: [0x62,0xd2,0xcd,0xc4,0x28,0xec] + vpmuldq zmm5 {k4} {z}, zmm22, zmm12 + +// CHECK: vpmuldq zmm5, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x28,0x29] + vpmuldq zmm5, zmm22, zmmword ptr [rcx] + +// CHECK: vpmuldq zmm5, zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xcd,0x40,0x28,0xac,0xf0,0x34,0x12,0x00,0x00] + vpmuldq zmm5, zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmuldq zmm5, zmm22, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x28,0x29] + vpmuldq zmm5, zmm22, qword ptr [rcx]{1to8} + +// CHECK: vpmuldq zmm5, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x28,0x6a,0x7f] + vpmuldq zmm5, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpmuldq zmm5, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x28,0xaa,0x00,0x20,0x00,0x00] + vpmuldq zmm5, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpmuldq zmm5, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x28,0x6a,0x80] + vpmuldq zmm5, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpmuldq zmm5, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x28,0xaa,0xc0,0xdf,0xff,0xff] + vpmuldq zmm5, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpmuldq zmm5, zmm22, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x28,0x6a,0x7f] + vpmuldq zmm5, zmm22, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpmuldq zmm5, zmm22, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x28,0xaa,0x00,0x04,0x00,0x00] + vpmuldq zmm5, zmm22, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpmuldq zmm5, zmm22, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x28,0x6a,0x80] + vpmuldq zmm5, zmm22, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpmuldq zmm5, zmm22, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x28,0xaa,0xf8,0xfb,0xff,0xff] + vpmuldq zmm5, zmm22, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpmulld zmm12, zmm24, zmm2 +// CHECK: encoding: [0x62,0x72,0x3d,0x40,0x40,0xe2] + vpmulld zmm12, zmm24, zmm2 + +// CHECK: vpmulld zmm12 {k6}, zmm24, zmm2 +// CHECK: encoding: [0x62,0x72,0x3d,0x46,0x40,0xe2] + vpmulld zmm12 {k6}, zmm24, zmm2 + +// CHECK: vpmulld zmm12 {k6} {z}, zmm24, zmm2 +// CHECK: encoding: [0x62,0x72,0x3d,0xc6,0x40,0xe2] + vpmulld zmm12 {k6} {z}, zmm24, zmm2 + +// CHECK: vpmulld zmm12, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x3d,0x40,0x40,0x21] + vpmulld zmm12, zmm24, zmmword ptr [rcx] + +// CHECK: vpmulld zmm12, zmm24, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x3d,0x40,0x40,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpmulld zmm12, zmm24, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmulld zmm12, zmm24, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x3d,0x50,0x40,0x21] + vpmulld zmm12, zmm24, dword ptr [rcx]{1to16} + +// CHECK: vpmulld zmm12, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x3d,0x40,0x40,0x62,0x7f] + vpmulld zmm12, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vpmulld zmm12, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x3d,0x40,0x40,0xa2,0x00,0x20,0x00,0x00] + vpmulld zmm12, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vpmulld zmm12, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x3d,0x40,0x40,0x62,0x80] + vpmulld zmm12, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vpmulld zmm12, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x3d,0x40,0x40,0xa2,0xc0,0xdf,0xff,0xff] + vpmulld zmm12, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vpmulld zmm12, zmm24, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x3d,0x50,0x40,0x62,0x7f] + vpmulld zmm12, zmm24, dword ptr [rdx + 508]{1to16} + +// CHECK: vpmulld zmm12, zmm24, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x3d,0x50,0x40,0xa2,0x00,0x02,0x00,0x00] + vpmulld zmm12, zmm24, dword ptr [rdx + 512]{1to16} + +// CHECK: vpmulld zmm12, zmm24, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x3d,0x50,0x40,0x62,0x80] + vpmulld zmm12, zmm24, dword ptr [rdx - 512]{1to16} + +// CHECK: vpmulld zmm12, zmm24, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x3d,0x50,0x40,0xa2,0xfc,0xfd,0xff,0xff] + vpmulld zmm12, zmm24, dword ptr [rdx - 516]{1to16} + +// CHECK: vpmuludq zmm8, zmm2, zmm10 +// CHECK: encoding: [0x62,0x51,0xed,0x48,0xf4,0xc2] + vpmuludq zmm8, zmm2, zmm10 + +// CHECK: vpmuludq zmm8 {k7}, zmm2, zmm10 +// CHECK: encoding: [0x62,0x51,0xed,0x4f,0xf4,0xc2] + vpmuludq zmm8 {k7}, zmm2, zmm10 + +// CHECK: vpmuludq zmm8 {k7} {z}, zmm2, zmm10 +// CHECK: encoding: [0x62,0x51,0xed,0xcf,0xf4,0xc2] + vpmuludq zmm8 {k7} {z}, zmm2, zmm10 + +// CHECK: vpmuludq zmm8, zmm2, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xed,0x48,0xf4,0x01] + vpmuludq zmm8, zmm2, zmmword ptr [rcx] + +// CHECK: vpmuludq zmm8, zmm2, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xed,0x48,0xf4,0x84,0xf0,0x34,0x12,0x00,0x00] + vpmuludq zmm8, zmm2, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpmuludq zmm8, zmm2, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0xed,0x58,0xf4,0x01] + vpmuludq zmm8, zmm2, qword ptr [rcx]{1to8} + +// CHECK: vpmuludq zmm8, zmm2, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xed,0x48,0xf4,0x42,0x7f] + vpmuludq zmm8, zmm2, zmmword ptr [rdx + 8128] + +// CHECK: vpmuludq zmm8, zmm2, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xed,0x48,0xf4,0x82,0x00,0x20,0x00,0x00] + vpmuludq zmm8, zmm2, zmmword ptr [rdx + 8192] + +// CHECK: vpmuludq zmm8, zmm2, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xed,0x48,0xf4,0x42,0x80] + vpmuludq zmm8, zmm2, zmmword ptr [rdx - 8192] + +// CHECK: vpmuludq zmm8, zmm2, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xed,0x48,0xf4,0x82,0xc0,0xdf,0xff,0xff] + vpmuludq zmm8, zmm2, zmmword ptr [rdx - 8256] + +// CHECK: vpmuludq zmm8, zmm2, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0xed,0x58,0xf4,0x42,0x7f] + vpmuludq zmm8, zmm2, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpmuludq zmm8, zmm2, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xed,0x58,0xf4,0x82,0x00,0x04,0x00,0x00] + vpmuludq zmm8, zmm2, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpmuludq zmm8, zmm2, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xed,0x58,0xf4,0x42,0x80] + vpmuludq zmm8, zmm2, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpmuludq zmm8, zmm2, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0xed,0x58,0xf4,0x82,0xf8,0xfb,0xff,0xff] + vpmuludq zmm8, zmm2, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpord zmm29, zmm10, zmm15 +// CHECK: encoding: [0x62,0x41,0x2d,0x48,0xeb,0xef] + vpord zmm29, zmm10, zmm15 + +// CHECK: vpord zmm29 {k4}, zmm10, zmm15 +// CHECK: encoding: [0x62,0x41,0x2d,0x4c,0xeb,0xef] + vpord zmm29 {k4}, zmm10, zmm15 + +// CHECK: vpord zmm29 {k4} {z}, zmm10, zmm15 +// CHECK: encoding: [0x62,0x41,0x2d,0xcc,0xeb,0xef] + vpord zmm29 {k4} {z}, zmm10, zmm15 + +// CHECK: vpord zmm29, zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x2d,0x48,0xeb,0x29] + vpord zmm29, zmm10, zmmword ptr [rcx] + +// CHECK: vpord zmm29, zmm10, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x2d,0x48,0xeb,0xac,0xf0,0x34,0x12,0x00,0x00] + vpord zmm29, zmm10, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpord zmm29, zmm10, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x2d,0x58,0xeb,0x29] + vpord zmm29, zmm10, dword ptr [rcx]{1to16} + +// CHECK: vpord zmm29, zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x2d,0x48,0xeb,0x6a,0x7f] + vpord zmm29, zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vpord zmm29, zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x2d,0x48,0xeb,0xaa,0x00,0x20,0x00,0x00] + vpord zmm29, zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vpord zmm29, zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x2d,0x48,0xeb,0x6a,0x80] + vpord zmm29, zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vpord zmm29, zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x2d,0x48,0xeb,0xaa,0xc0,0xdf,0xff,0xff] + vpord zmm29, zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vpord zmm29, zmm10, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x2d,0x58,0xeb,0x6a,0x7f] + vpord zmm29, zmm10, dword ptr [rdx + 508]{1to16} + +// CHECK: vpord zmm29, zmm10, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x2d,0x58,0xeb,0xaa,0x00,0x02,0x00,0x00] + vpord zmm29, zmm10, dword ptr [rdx + 512]{1to16} + +// CHECK: vpord zmm29, zmm10, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x2d,0x58,0xeb,0x6a,0x80] + vpord zmm29, zmm10, dword ptr [rdx - 512]{1to16} + +// CHECK: vpord zmm29, zmm10, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x2d,0x58,0xeb,0xaa,0xfc,0xfd,0xff,0xff] + vpord zmm29, zmm10, dword ptr [rdx - 516]{1to16} + +// CHECK: vporq zmm3, zmm23, zmm26 +// CHECK: encoding: [0x62,0x91,0xc5,0x40,0xeb,0xda] + vporq zmm3, zmm23, zmm26 + +// CHECK: vporq zmm3 {k4}, zmm23, zmm26 +// CHECK: encoding: [0x62,0x91,0xc5,0x44,0xeb,0xda] + vporq zmm3 {k4}, zmm23, zmm26 + +// CHECK: vporq zmm3 {k4} {z}, zmm23, zmm26 +// CHECK: encoding: [0x62,0x91,0xc5,0xc4,0xeb,0xda] + vporq zmm3 {k4} {z}, zmm23, zmm26 + +// CHECK: vporq zmm3, zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0xeb,0x19] + vporq zmm3, zmm23, zmmword ptr [rcx] + +// CHECK: vporq zmm3, zmm23, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xc5,0x40,0xeb,0x9c,0xf0,0x34,0x12,0x00,0x00] + vporq zmm3, zmm23, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vporq zmm3, zmm23, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0xeb,0x19] + vporq zmm3, zmm23, qword ptr [rcx]{1to8} + +// CHECK: vporq zmm3, zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0xeb,0x5a,0x7f] + vporq zmm3, zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vporq zmm3, zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0xeb,0x9a,0x00,0x20,0x00,0x00] + vporq zmm3, zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vporq zmm3, zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0xeb,0x5a,0x80] + vporq zmm3, zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vporq zmm3, zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0xeb,0x9a,0xc0,0xdf,0xff,0xff] + vporq zmm3, zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vporq zmm3, zmm23, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0xeb,0x5a,0x7f] + vporq zmm3, zmm23, qword ptr [rdx + 1016]{1to8} + +// CHECK: vporq zmm3, zmm23, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0xeb,0x9a,0x00,0x04,0x00,0x00] + vporq zmm3, zmm23, qword ptr [rdx + 1024]{1to8} + +// CHECK: vporq zmm3, zmm23, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0xeb,0x5a,0x80] + vporq zmm3, zmm23, qword ptr [rdx - 1024]{1to8} + +// CHECK: vporq zmm3, zmm23, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0xeb,0x9a,0xf8,0xfb,0xff,0xff] + vporq zmm3, zmm23, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpshufd zmm7, zmm12, 171 +// CHECK: encoding: [0x62,0xd1,0x7d,0x48,0x70,0xfc,0xab] + vpshufd zmm7, zmm12, 171 + +// CHECK: vpshufd zmm7 {k1}, zmm12, 171 +// CHECK: encoding: [0x62,0xd1,0x7d,0x49,0x70,0xfc,0xab] + vpshufd zmm7 {k1}, zmm12, 171 + +// CHECK: vpshufd zmm7 {k1} {z}, zmm12, 171 +// CHECK: encoding: [0x62,0xd1,0x7d,0xc9,0x70,0xfc,0xab] + vpshufd zmm7 {k1} {z}, zmm12, 171 + +// CHECK: vpshufd zmm7, zmm12, 123 +// CHECK: encoding: [0x62,0xd1,0x7d,0x48,0x70,0xfc,0x7b] + vpshufd zmm7, zmm12, 123 + +// CHECK: vpshufd zmm7, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x70,0x39,0x7b] + vpshufd zmm7, zmmword ptr [rcx], 123 + +// CHECK: vpshufd zmm7, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x7d,0x48,0x70,0xbc,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpshufd zmm7, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpshufd zmm7, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x58,0x70,0x39,0x7b] + vpshufd zmm7, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpshufd zmm7, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x70,0x7a,0x7f,0x7b] + vpshufd zmm7, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpshufd zmm7, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x70,0xba,0x00,0x20,0x00,0x00,0x7b] + vpshufd zmm7, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpshufd zmm7, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x70,0x7a,0x80,0x7b] + vpshufd zmm7, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpshufd zmm7, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x70,0xba,0xc0,0xdf,0xff,0xff,0x7b] + vpshufd zmm7, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpshufd zmm7, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x58,0x70,0x7a,0x7f,0x7b] + vpshufd zmm7, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpshufd zmm7, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x58,0x70,0xba,0x00,0x02,0x00,0x00,0x7b] + vpshufd zmm7, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpshufd zmm7, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x58,0x70,0x7a,0x80,0x7b] + vpshufd zmm7, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpshufd zmm7, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x7d,0x58,0x70,0xba,0xfc,0xfd,0xff,0xff,0x7b] + vpshufd zmm7, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpslld zmm7, zmm22, xmm14 +// CHECK: encoding: [0x62,0xd1,0x4d,0x40,0xf2,0xfe] + vpslld zmm7, zmm22, xmm14 + +// CHECK: vpslld zmm7 {k4}, zmm22, xmm14 +// CHECK: encoding: [0x62,0xd1,0x4d,0x44,0xf2,0xfe] + vpslld zmm7 {k4}, zmm22, xmm14 + +// CHECK: vpslld zmm7 {k4} {z}, zmm22, xmm14 +// CHECK: encoding: [0x62,0xd1,0x4d,0xc4,0xf2,0xfe] + vpslld zmm7 {k4} {z}, zmm22, xmm14 + +// CHECK: vpslld zmm7, zmm22, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x4d,0x40,0xf2,0x39] + vpslld zmm7, zmm22, xmmword ptr [rcx] + +// CHECK: vpslld zmm7, zmm22, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x4d,0x40,0xf2,0xbc,0xf0,0x34,0x12,0x00,0x00] + vpslld zmm7, zmm22, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpslld zmm7, zmm22, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xf1,0x4d,0x40,0xf2,0x7a,0x7f] + vpslld zmm7, zmm22, xmmword ptr [rdx + 2032] + +// CHECK: vpslld zmm7, zmm22, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xf1,0x4d,0x40,0xf2,0xba,0x00,0x08,0x00,0x00] + vpslld zmm7, zmm22, xmmword ptr [rdx + 2048] + +// CHECK: vpslld zmm7, zmm22, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xf1,0x4d,0x40,0xf2,0x7a,0x80] + vpslld zmm7, zmm22, xmmword ptr [rdx - 2048] + +// CHECK: vpslld zmm7, zmm22, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xf1,0x4d,0x40,0xf2,0xba,0xf0,0xf7,0xff,0xff] + vpslld zmm7, zmm22, xmmword ptr [rdx - 2064] + +// CHECK: vpsllq zmm29, zmm2, xmm27 +// CHECK: encoding: [0x62,0x01,0xed,0x48,0xf3,0xeb] + vpsllq zmm29, zmm2, xmm27 + +// CHECK: vpsllq zmm29 {k5}, zmm2, xmm27 +// CHECK: encoding: [0x62,0x01,0xed,0x4d,0xf3,0xeb] + vpsllq zmm29 {k5}, zmm2, xmm27 + +// CHECK: vpsllq zmm29 {k5} {z}, zmm2, xmm27 +// CHECK: encoding: [0x62,0x01,0xed,0xcd,0xf3,0xeb] + vpsllq zmm29 {k5} {z}, zmm2, xmm27 + +// CHECK: vpsllq zmm29, zmm2, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xed,0x48,0xf3,0x29] + vpsllq zmm29, zmm2, xmmword ptr [rcx] + +// CHECK: vpsllq zmm29, zmm2, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0xed,0x48,0xf3,0xac,0xf0,0x34,0x12,0x00,0x00] + vpsllq zmm29, zmm2, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsllq zmm29, zmm2, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x61,0xed,0x48,0xf3,0x6a,0x7f] + vpsllq zmm29, zmm2, xmmword ptr [rdx + 2032] + +// CHECK: vpsllq zmm29, zmm2, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x61,0xed,0x48,0xf3,0xaa,0x00,0x08,0x00,0x00] + vpsllq zmm29, zmm2, xmmword ptr [rdx + 2048] + +// CHECK: vpsllq zmm29, zmm2, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x61,0xed,0x48,0xf3,0x6a,0x80] + vpsllq zmm29, zmm2, xmmword ptr [rdx - 2048] + +// CHECK: vpsllq zmm29, zmm2, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x61,0xed,0x48,0xf3,0xaa,0xf0,0xf7,0xff,0xff] + vpsllq zmm29, zmm2, xmmword ptr [rdx - 2064] + +// CHECK: vpsllvd zmm29, zmm3, zmm15 +// CHECK: encoding: [0x62,0x42,0x65,0x48,0x47,0xef] + vpsllvd zmm29, zmm3, zmm15 + +// CHECK: vpsllvd zmm29 {k7}, zmm3, zmm15 +// CHECK: encoding: [0x62,0x42,0x65,0x4f,0x47,0xef] + vpsllvd zmm29 {k7}, zmm3, zmm15 + +// CHECK: vpsllvd zmm29 {k7} {z}, zmm3, zmm15 +// CHECK: encoding: [0x62,0x42,0x65,0xcf,0x47,0xef] + vpsllvd zmm29 {k7} {z}, zmm3, zmm15 + +// CHECK: vpsllvd zmm29, zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x65,0x48,0x47,0x29] + vpsllvd zmm29, zmm3, zmmword ptr [rcx] + +// CHECK: vpsllvd zmm29, zmm3, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x65,0x48,0x47,0xac,0xf0,0x34,0x12,0x00,0x00] + vpsllvd zmm29, zmm3, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsllvd zmm29, zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x65,0x58,0x47,0x29] + vpsllvd zmm29, zmm3, dword ptr [rcx]{1to16} + +// CHECK: vpsllvd zmm29, zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x65,0x48,0x47,0x6a,0x7f] + vpsllvd zmm29, zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vpsllvd zmm29, zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x65,0x48,0x47,0xaa,0x00,0x20,0x00,0x00] + vpsllvd zmm29, zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vpsllvd zmm29, zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x65,0x48,0x47,0x6a,0x80] + vpsllvd zmm29, zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vpsllvd zmm29, zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x65,0x48,0x47,0xaa,0xc0,0xdf,0xff,0xff] + vpsllvd zmm29, zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vpsllvd zmm29, zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x65,0x58,0x47,0x6a,0x7f] + vpsllvd zmm29, zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vpsllvd zmm29, zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x65,0x58,0x47,0xaa,0x00,0x02,0x00,0x00] + vpsllvd zmm29, zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vpsllvd zmm29, zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x65,0x58,0x47,0x6a,0x80] + vpsllvd zmm29, zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vpsllvd zmm29, zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x65,0x58,0x47,0xaa,0xfc,0xfd,0xff,0xff] + vpsllvd zmm29, zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vpsllvq zmm4, zmm29, zmm13 +// CHECK: encoding: [0x62,0xd2,0x95,0x40,0x47,0xe5] + vpsllvq zmm4, zmm29, zmm13 + +// CHECK: vpsllvq zmm4 {k5}, zmm29, zmm13 +// CHECK: encoding: [0x62,0xd2,0x95,0x45,0x47,0xe5] + vpsllvq zmm4 {k5}, zmm29, zmm13 + +// CHECK: vpsllvq zmm4 {k5} {z}, zmm29, zmm13 +// CHECK: encoding: [0x62,0xd2,0x95,0xc5,0x47,0xe5] + vpsllvq zmm4 {k5} {z}, zmm29, zmm13 + +// CHECK: vpsllvq zmm4, zmm29, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x47,0x21] + vpsllvq zmm4, zmm29, zmmword ptr [rcx] + +// CHECK: vpsllvq zmm4, zmm29, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x95,0x40,0x47,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpsllvq zmm4, zmm29, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsllvq zmm4, zmm29, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x50,0x47,0x21] + vpsllvq zmm4, zmm29, qword ptr [rcx]{1to8} + +// CHECK: vpsllvq zmm4, zmm29, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x47,0x62,0x7f] + vpsllvq zmm4, zmm29, zmmword ptr [rdx + 8128] + +// CHECK: vpsllvq zmm4, zmm29, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x47,0xa2,0x00,0x20,0x00,0x00] + vpsllvq zmm4, zmm29, zmmword ptr [rdx + 8192] + +// CHECK: vpsllvq zmm4, zmm29, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x47,0x62,0x80] + vpsllvq zmm4, zmm29, zmmword ptr [rdx - 8192] + +// CHECK: vpsllvq zmm4, zmm29, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x47,0xa2,0xc0,0xdf,0xff,0xff] + vpsllvq zmm4, zmm29, zmmword ptr [rdx - 8256] + +// CHECK: vpsllvq zmm4, zmm29, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x50,0x47,0x62,0x7f] + vpsllvq zmm4, zmm29, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpsllvq zmm4, zmm29, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x50,0x47,0xa2,0x00,0x04,0x00,0x00] + vpsllvq zmm4, zmm29, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpsllvq zmm4, zmm29, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x50,0x47,0x62,0x80] + vpsllvq zmm4, zmm29, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpsllvq zmm4, zmm29, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0x95,0x50,0x47,0xa2,0xf8,0xfb,0xff,0xff] + vpsllvq zmm4, zmm29, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpsrad zmm19, zmm10, xmm25 +// CHECK: encoding: [0x62,0x81,0x2d,0x48,0xe2,0xd9] + vpsrad zmm19, zmm10, xmm25 + +// CHECK: vpsrad zmm19 {k2}, zmm10, xmm25 +// CHECK: encoding: [0x62,0x81,0x2d,0x4a,0xe2,0xd9] + vpsrad zmm19 {k2}, zmm10, xmm25 + +// CHECK: vpsrad zmm19 {k2} {z}, zmm10, xmm25 +// CHECK: encoding: [0x62,0x81,0x2d,0xca,0xe2,0xd9] + vpsrad zmm19 {k2} {z}, zmm10, xmm25 + +// CHECK: vpsrad zmm19, zmm10, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x2d,0x48,0xe2,0x19] + vpsrad zmm19, zmm10, xmmword ptr [rcx] + +// CHECK: vpsrad zmm19, zmm10, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x2d,0x48,0xe2,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpsrad zmm19, zmm10, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsrad zmm19, zmm10, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xe1,0x2d,0x48,0xe2,0x5a,0x7f] + vpsrad zmm19, zmm10, xmmword ptr [rdx + 2032] + +// CHECK: vpsrad zmm19, zmm10, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xe1,0x2d,0x48,0xe2,0x9a,0x00,0x08,0x00,0x00] + vpsrad zmm19, zmm10, xmmword ptr [rdx + 2048] + +// CHECK: vpsrad zmm19, zmm10, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xe1,0x2d,0x48,0xe2,0x5a,0x80] + vpsrad zmm19, zmm10, xmmword ptr [rdx - 2048] + +// CHECK: vpsrad zmm19, zmm10, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xe1,0x2d,0x48,0xe2,0x9a,0xf0,0xf7,0xff,0xff] + vpsrad zmm19, zmm10, xmmword ptr [rdx - 2064] + +// CHECK: vpsraq zmm23, zmm23, xmm18 +// CHECK: encoding: [0x62,0xa1,0xc5,0x40,0xe2,0xfa] + vpsraq zmm23, zmm23, xmm18 + +// CHECK: vpsraq zmm23 {k4}, zmm23, xmm18 +// CHECK: encoding: [0x62,0xa1,0xc5,0x44,0xe2,0xfa] + vpsraq zmm23 {k4}, zmm23, xmm18 + +// CHECK: vpsraq zmm23 {k4} {z}, zmm23, xmm18 +// CHECK: encoding: [0x62,0xa1,0xc5,0xc4,0xe2,0xfa] + vpsraq zmm23 {k4} {z}, zmm23, xmm18 + +// CHECK: vpsraq zmm23, zmm23, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xc5,0x40,0xe2,0x39] + vpsraq zmm23, zmm23, xmmword ptr [rcx] + +// CHECK: vpsraq zmm23, zmm23, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xc5,0x40,0xe2,0xbc,0xf0,0x34,0x12,0x00,0x00] + vpsraq zmm23, zmm23, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsraq zmm23, zmm23, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xe1,0xc5,0x40,0xe2,0x7a,0x7f] + vpsraq zmm23, zmm23, xmmword ptr [rdx + 2032] + +// CHECK: vpsraq zmm23, zmm23, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xe1,0xc5,0x40,0xe2,0xba,0x00,0x08,0x00,0x00] + vpsraq zmm23, zmm23, xmmword ptr [rdx + 2048] + +// CHECK: vpsraq zmm23, zmm23, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xe1,0xc5,0x40,0xe2,0x7a,0x80] + vpsraq zmm23, zmm23, xmmword ptr [rdx - 2048] + +// CHECK: vpsraq zmm23, zmm23, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xe1,0xc5,0x40,0xe2,0xba,0xf0,0xf7,0xff,0xff] + vpsraq zmm23, zmm23, xmmword ptr [rdx - 2064] + +// CHECK: vpsravd zmm17, zmm5, zmm6 +// CHECK: encoding: [0x62,0xe2,0x55,0x48,0x46,0xce] + vpsravd zmm17, zmm5, zmm6 + +// CHECK: vpsravd zmm17 {k6}, zmm5, zmm6 +// CHECK: encoding: [0x62,0xe2,0x55,0x4e,0x46,0xce] + vpsravd zmm17 {k6}, zmm5, zmm6 + +// CHECK: vpsravd zmm17 {k6} {z}, zmm5, zmm6 +// CHECK: encoding: [0x62,0xe2,0x55,0xce,0x46,0xce] + vpsravd zmm17 {k6} {z}, zmm5, zmm6 + +// CHECK: vpsravd zmm17, zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x55,0x48,0x46,0x09] + vpsravd zmm17, zmm5, zmmword ptr [rcx] + +// CHECK: vpsravd zmm17, zmm5, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x55,0x48,0x46,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpsravd zmm17, zmm5, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsravd zmm17, zmm5, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x55,0x58,0x46,0x09] + vpsravd zmm17, zmm5, dword ptr [rcx]{1to16} + +// CHECK: vpsravd zmm17, zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x55,0x48,0x46,0x4a,0x7f] + vpsravd zmm17, zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vpsravd zmm17, zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x55,0x48,0x46,0x8a,0x00,0x20,0x00,0x00] + vpsravd zmm17, zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vpsravd zmm17, zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x55,0x48,0x46,0x4a,0x80] + vpsravd zmm17, zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vpsravd zmm17, zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x55,0x48,0x46,0x8a,0xc0,0xdf,0xff,0xff] + vpsravd zmm17, zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vpsravd zmm17, zmm5, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x55,0x58,0x46,0x4a,0x7f] + vpsravd zmm17, zmm5, dword ptr [rdx + 508]{1to16} + +// CHECK: vpsravd zmm17, zmm5, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x55,0x58,0x46,0x8a,0x00,0x02,0x00,0x00] + vpsravd zmm17, zmm5, dword ptr [rdx + 512]{1to16} + +// CHECK: vpsravd zmm17, zmm5, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x55,0x58,0x46,0x4a,0x80] + vpsravd zmm17, zmm5, dword ptr [rdx - 512]{1to16} + +// CHECK: vpsravd zmm17, zmm5, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x55,0x58,0x46,0x8a,0xfc,0xfd,0xff,0xff] + vpsravd zmm17, zmm5, dword ptr [rdx - 516]{1to16} + +// CHECK: vpsravq zmm3, zmm8, zmm26 +// CHECK: encoding: [0x62,0x92,0xbd,0x48,0x46,0xda] + vpsravq zmm3, zmm8, zmm26 + +// CHECK: vpsravq zmm3 {k1}, zmm8, zmm26 +// CHECK: encoding: [0x62,0x92,0xbd,0x49,0x46,0xda] + vpsravq zmm3 {k1}, zmm8, zmm26 + +// CHECK: vpsravq zmm3 {k1} {z}, zmm8, zmm26 +// CHECK: encoding: [0x62,0x92,0xbd,0xc9,0x46,0xda] + vpsravq zmm3 {k1} {z}, zmm8, zmm26 + +// CHECK: vpsravq zmm3, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0x46,0x19] + vpsravq zmm3, zmm8, zmmword ptr [rcx] + +// CHECK: vpsravq zmm3, zmm8, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xbd,0x48,0x46,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpsravq zmm3, zmm8, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsravq zmm3, zmm8, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0x46,0x19] + vpsravq zmm3, zmm8, qword ptr [rcx]{1to8} + +// CHECK: vpsravq zmm3, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0x46,0x5a,0x7f] + vpsravq zmm3, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vpsravq zmm3, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0x46,0x9a,0x00,0x20,0x00,0x00] + vpsravq zmm3, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vpsravq zmm3, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0x46,0x5a,0x80] + vpsravq zmm3, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vpsravq zmm3, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xbd,0x48,0x46,0x9a,0xc0,0xdf,0xff,0xff] + vpsravq zmm3, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vpsravq zmm3, zmm8, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0x46,0x5a,0x7f] + vpsravq zmm3, zmm8, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpsravq zmm3, zmm8, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0x46,0x9a,0x00,0x04,0x00,0x00] + vpsravq zmm3, zmm8, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpsravq zmm3, zmm8, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0x46,0x5a,0x80] + vpsravq zmm3, zmm8, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpsravq zmm3, zmm8, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xbd,0x58,0x46,0x9a,0xf8,0xfb,0xff,0xff] + vpsravq zmm3, zmm8, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpsrld zmm25, zmm19, xmm23 +// CHECK: encoding: [0x62,0x21,0x65,0x40,0xd2,0xcf] + vpsrld zmm25, zmm19, xmm23 + +// CHECK: vpsrld zmm25 {k6}, zmm19, xmm23 +// CHECK: encoding: [0x62,0x21,0x65,0x46,0xd2,0xcf] + vpsrld zmm25 {k6}, zmm19, xmm23 + +// CHECK: vpsrld zmm25 {k6} {z}, zmm19, xmm23 +// CHECK: encoding: [0x62,0x21,0x65,0xc6,0xd2,0xcf] + vpsrld zmm25 {k6} {z}, zmm19, xmm23 + +// CHECK: vpsrld zmm25, zmm19, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x65,0x40,0xd2,0x09] + vpsrld zmm25, zmm19, xmmword ptr [rcx] + +// CHECK: vpsrld zmm25, zmm19, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x65,0x40,0xd2,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpsrld zmm25, zmm19, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsrld zmm25, zmm19, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0x61,0x65,0x40,0xd2,0x4a,0x7f] + vpsrld zmm25, zmm19, xmmword ptr [rdx + 2032] + +// CHECK: vpsrld zmm25, zmm19, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0x61,0x65,0x40,0xd2,0x8a,0x00,0x08,0x00,0x00] + vpsrld zmm25, zmm19, xmmword ptr [rdx + 2048] + +// CHECK: vpsrld zmm25, zmm19, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0x61,0x65,0x40,0xd2,0x4a,0x80] + vpsrld zmm25, zmm19, xmmword ptr [rdx - 2048] + +// CHECK: vpsrld zmm25, zmm19, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0x61,0x65,0x40,0xd2,0x8a,0xf0,0xf7,0xff,0xff] + vpsrld zmm25, zmm19, xmmword ptr [rdx - 2064] + +// CHECK: vpsrlq zmm19, zmm10, xmm21 +// CHECK: encoding: [0x62,0xa1,0xad,0x48,0xd3,0xdd] + vpsrlq zmm19, zmm10, xmm21 + +// CHECK: vpsrlq zmm19 {k4}, zmm10, xmm21 +// CHECK: encoding: [0x62,0xa1,0xad,0x4c,0xd3,0xdd] + vpsrlq zmm19 {k4}, zmm10, xmm21 + +// CHECK: vpsrlq zmm19 {k4} {z}, zmm10, xmm21 +// CHECK: encoding: [0x62,0xa1,0xad,0xcc,0xd3,0xdd] + vpsrlq zmm19 {k4} {z}, zmm10, xmm21 + +// CHECK: vpsrlq zmm19, zmm10, xmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xad,0x48,0xd3,0x19] + vpsrlq zmm19, zmm10, xmmword ptr [rcx] + +// CHECK: vpsrlq zmm19, zmm10, xmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xad,0x48,0xd3,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpsrlq zmm19, zmm10, xmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsrlq zmm19, zmm10, xmmword ptr [rdx + 2032] +// CHECK: encoding: [0x62,0xe1,0xad,0x48,0xd3,0x5a,0x7f] + vpsrlq zmm19, zmm10, xmmword ptr [rdx + 2032] + +// CHECK: vpsrlq zmm19, zmm10, xmmword ptr [rdx + 2048] +// CHECK: encoding: [0x62,0xe1,0xad,0x48,0xd3,0x9a,0x00,0x08,0x00,0x00] + vpsrlq zmm19, zmm10, xmmword ptr [rdx + 2048] + +// CHECK: vpsrlq zmm19, zmm10, xmmword ptr [rdx - 2048] +// CHECK: encoding: [0x62,0xe1,0xad,0x48,0xd3,0x5a,0x80] + vpsrlq zmm19, zmm10, xmmword ptr [rdx - 2048] + +// CHECK: vpsrlq zmm19, zmm10, xmmword ptr [rdx - 2064] +// CHECK: encoding: [0x62,0xe1,0xad,0x48,0xd3,0x9a,0xf0,0xf7,0xff,0xff] + vpsrlq zmm19, zmm10, xmmword ptr [rdx - 2064] + +// CHECK: vpsrlvd zmm2, zmm4, zmm11 +// CHECK: encoding: [0x62,0xd2,0x5d,0x48,0x45,0xd3] + vpsrlvd zmm2, zmm4, zmm11 + +// CHECK: vpsrlvd zmm2 {k7}, zmm4, zmm11 +// CHECK: encoding: [0x62,0xd2,0x5d,0x4f,0x45,0xd3] + vpsrlvd zmm2 {k7}, zmm4, zmm11 + +// CHECK: vpsrlvd zmm2 {k7} {z}, zmm4, zmm11 +// CHECK: encoding: [0x62,0xd2,0x5d,0xcf,0x45,0xd3] + vpsrlvd zmm2 {k7} {z}, zmm4, zmm11 + +// CHECK: vpsrlvd zmm2, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0x45,0x11] + vpsrlvd zmm2, zmm4, zmmword ptr [rcx] + +// CHECK: vpsrlvd zmm2, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x5d,0x48,0x45,0x94,0xf0,0x34,0x12,0x00,0x00] + vpsrlvd zmm2, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsrlvd zmm2, zmm4, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0x45,0x11] + vpsrlvd zmm2, zmm4, dword ptr [rcx]{1to16} + +// CHECK: vpsrlvd zmm2, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0x45,0x52,0x7f] + vpsrlvd zmm2, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vpsrlvd zmm2, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0x45,0x92,0x00,0x20,0x00,0x00] + vpsrlvd zmm2, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vpsrlvd zmm2, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0x45,0x52,0x80] + vpsrlvd zmm2, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vpsrlvd zmm2, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x5d,0x48,0x45,0x92,0xc0,0xdf,0xff,0xff] + vpsrlvd zmm2, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vpsrlvd zmm2, zmm4, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0x45,0x52,0x7f] + vpsrlvd zmm2, zmm4, dword ptr [rdx + 508]{1to16} + +// CHECK: vpsrlvd zmm2, zmm4, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0x45,0x92,0x00,0x02,0x00,0x00] + vpsrlvd zmm2, zmm4, dword ptr [rdx + 512]{1to16} + +// CHECK: vpsrlvd zmm2, zmm4, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0x45,0x52,0x80] + vpsrlvd zmm2, zmm4, dword ptr [rdx - 512]{1to16} + +// CHECK: vpsrlvd zmm2, zmm4, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x5d,0x58,0x45,0x92,0xfc,0xfd,0xff,0xff] + vpsrlvd zmm2, zmm4, dword ptr [rdx - 516]{1to16} + +// CHECK: vpsrlvq zmm8, zmm28, zmm15 +// CHECK: encoding: [0x62,0x52,0x9d,0x40,0x45,0xc7] + vpsrlvq zmm8, zmm28, zmm15 + +// CHECK: vpsrlvq zmm8 {k5}, zmm28, zmm15 +// CHECK: encoding: [0x62,0x52,0x9d,0x45,0x45,0xc7] + vpsrlvq zmm8 {k5}, zmm28, zmm15 + +// CHECK: vpsrlvq zmm8 {k5} {z}, zmm28, zmm15 +// CHECK: encoding: [0x62,0x52,0x9d,0xc5,0x45,0xc7] + vpsrlvq zmm8 {k5} {z}, zmm28, zmm15 + +// CHECK: vpsrlvq zmm8, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x45,0x01] + vpsrlvq zmm8, zmm28, zmmword ptr [rcx] + +// CHECK: vpsrlvq zmm8, zmm28, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x9d,0x40,0x45,0x84,0xf0,0x34,0x12,0x00,0x00] + vpsrlvq zmm8, zmm28, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsrlvq zmm8, zmm28, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x45,0x01] + vpsrlvq zmm8, zmm28, qword ptr [rcx]{1to8} + +// CHECK: vpsrlvq zmm8, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x45,0x42,0x7f] + vpsrlvq zmm8, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vpsrlvq zmm8, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x45,0x82,0x00,0x20,0x00,0x00] + vpsrlvq zmm8, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vpsrlvq zmm8, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x45,0x42,0x80] + vpsrlvq zmm8, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vpsrlvq zmm8, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x9d,0x40,0x45,0x82,0xc0,0xdf,0xff,0xff] + vpsrlvq zmm8, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vpsrlvq zmm8, zmm28, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x45,0x42,0x7f] + vpsrlvq zmm8, zmm28, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpsrlvq zmm8, zmm28, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x45,0x82,0x00,0x04,0x00,0x00] + vpsrlvq zmm8, zmm28, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpsrlvq zmm8, zmm28, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x45,0x42,0x80] + vpsrlvq zmm8, zmm28, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpsrlvq zmm8, zmm28, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0x9d,0x50,0x45,0x82,0xf8,0xfb,0xff,0xff] + vpsrlvq zmm8, zmm28, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpsrld zmm11, zmm9, 171 +// CHECK: encoding: [0x62,0xd1,0x25,0x48,0x72,0xd1,0xab] + vpsrld zmm11, zmm9, 171 + +// CHECK: vpsrld zmm11 {k6}, zmm9, 171 +// CHECK: encoding: [0x62,0xd1,0x25,0x4e,0x72,0xd1,0xab] + vpsrld zmm11 {k6}, zmm9, 171 + +// CHECK: vpsrld zmm11 {k6} {z}, zmm9, 171 +// CHECK: encoding: [0x62,0xd1,0x25,0xce,0x72,0xd1,0xab] + vpsrld zmm11 {k6} {z}, zmm9, 171 + +// CHECK: vpsrld zmm11, zmm9, 123 +// CHECK: encoding: [0x62,0xd1,0x25,0x48,0x72,0xd1,0x7b] + vpsrld zmm11, zmm9, 123 + +// CHECK: vpsrld zmm11, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x48,0x72,0x11,0x7b] + vpsrld zmm11, zmmword ptr [rcx], 123 + +// CHECK: vpsrld zmm11, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x25,0x48,0x72,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpsrld zmm11, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpsrld zmm11, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x58,0x72,0x11,0x7b] + vpsrld zmm11, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpsrld zmm11, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x48,0x72,0x52,0x7f,0x7b] + vpsrld zmm11, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsrld zmm11, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x48,0x72,0x92,0x00,0x20,0x00,0x00,0x7b] + vpsrld zmm11, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsrld zmm11, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x48,0x72,0x52,0x80,0x7b] + vpsrld zmm11, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsrld zmm11, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x48,0x72,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpsrld zmm11, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsrld zmm11, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x58,0x72,0x52,0x7f,0x7b] + vpsrld zmm11, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpsrld zmm11, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x58,0x72,0x92,0x00,0x02,0x00,0x00,0x7b] + vpsrld zmm11, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpsrld zmm11, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x58,0x72,0x52,0x80,0x7b] + vpsrld zmm11, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpsrld zmm11, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x58,0x72,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vpsrld zmm11, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpsrlq zmm6, zmm14, 171 +// CHECK: encoding: [0x62,0xd1,0xcd,0x48,0x73,0xd6,0xab] + vpsrlq zmm6, zmm14, 171 + +// CHECK: vpsrlq zmm6 {k5}, zmm14, 171 +// CHECK: encoding: [0x62,0xd1,0xcd,0x4d,0x73,0xd6,0xab] + vpsrlq zmm6 {k5}, zmm14, 171 + +// CHECK: vpsrlq zmm6 {k5} {z}, zmm14, 171 +// CHECK: encoding: [0x62,0xd1,0xcd,0xcd,0x73,0xd6,0xab] + vpsrlq zmm6 {k5} {z}, zmm14, 171 + +// CHECK: vpsrlq zmm6, zmm14, 123 +// CHECK: encoding: [0x62,0xd1,0xcd,0x48,0x73,0xd6,0x7b] + vpsrlq zmm6, zmm14, 123 + +// CHECK: vpsrlq zmm6, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0x11,0x7b] + vpsrlq zmm6, zmmword ptr [rcx], 123 + +// CHECK: vpsrlq zmm6, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0xcd,0x48,0x73,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpsrlq zmm6, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpsrlq zmm6, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0x11,0x7b] + vpsrlq zmm6, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpsrlq zmm6, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0x52,0x7f,0x7b] + vpsrlq zmm6, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsrlq zmm6, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0x92,0x00,0x20,0x00,0x00,0x7b] + vpsrlq zmm6, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsrlq zmm6, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0x52,0x80,0x7b] + vpsrlq zmm6, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsrlq zmm6, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x48,0x73,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpsrlq zmm6, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsrlq zmm6, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0x52,0x7f,0x7b] + vpsrlq zmm6, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpsrlq zmm6, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0x92,0x00,0x04,0x00,0x00,0x7b] + vpsrlq zmm6, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpsrlq zmm6, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0x52,0x80,0x7b] + vpsrlq zmm6, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpsrlq zmm6, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xcd,0x58,0x73,0x92,0xf8,0xfb,0xff,0xff,0x7b] + vpsrlq zmm6, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpsubd zmm26, zmm14, zmm23 +// CHECK: encoding: [0x62,0x21,0x0d,0x48,0xfa,0xd7] + vpsubd zmm26, zmm14, zmm23 + +// CHECK: vpsubd zmm26 {k7}, zmm14, zmm23 +// CHECK: encoding: [0x62,0x21,0x0d,0x4f,0xfa,0xd7] + vpsubd zmm26 {k7}, zmm14, zmm23 + +// CHECK: vpsubd zmm26 {k7} {z}, zmm14, zmm23 +// CHECK: encoding: [0x62,0x21,0x0d,0xcf,0xfa,0xd7] + vpsubd zmm26 {k7} {z}, zmm14, zmm23 + +// CHECK: vpsubd zmm26, zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x0d,0x48,0xfa,0x11] + vpsubd zmm26, zmm14, zmmword ptr [rcx] + +// CHECK: vpsubd zmm26, zmm14, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x0d,0x48,0xfa,0x94,0xf0,0x34,0x12,0x00,0x00] + vpsubd zmm26, zmm14, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsubd zmm26, zmm14, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x0d,0x58,0xfa,0x11] + vpsubd zmm26, zmm14, dword ptr [rcx]{1to16} + +// CHECK: vpsubd zmm26, zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x0d,0x48,0xfa,0x52,0x7f] + vpsubd zmm26, zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vpsubd zmm26, zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x0d,0x48,0xfa,0x92,0x00,0x20,0x00,0x00] + vpsubd zmm26, zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vpsubd zmm26, zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x0d,0x48,0xfa,0x52,0x80] + vpsubd zmm26, zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vpsubd zmm26, zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x0d,0x48,0xfa,0x92,0xc0,0xdf,0xff,0xff] + vpsubd zmm26, zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vpsubd zmm26, zmm14, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x0d,0x58,0xfa,0x52,0x7f] + vpsubd zmm26, zmm14, dword ptr [rdx + 508]{1to16} + +// CHECK: vpsubd zmm26, zmm14, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x0d,0x58,0xfa,0x92,0x00,0x02,0x00,0x00] + vpsubd zmm26, zmm14, dword ptr [rdx + 512]{1to16} + +// CHECK: vpsubd zmm26, zmm14, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x0d,0x58,0xfa,0x52,0x80] + vpsubd zmm26, zmm14, dword ptr [rdx - 512]{1to16} + +// CHECK: vpsubd zmm26, zmm14, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x0d,0x58,0xfa,0x92,0xfc,0xfd,0xff,0xff] + vpsubd zmm26, zmm14, dword ptr [rdx - 516]{1to16} + +// CHECK: vpsubq zmm16, zmm8, zmm23 +// CHECK: encoding: [0x62,0xa1,0xbd,0x48,0xfb,0xc7] + vpsubq zmm16, zmm8, zmm23 + +// CHECK: vpsubq zmm16 {k7}, zmm8, zmm23 +// CHECK: encoding: [0x62,0xa1,0xbd,0x4f,0xfb,0xc7] + vpsubq zmm16 {k7}, zmm8, zmm23 + +// CHECK: vpsubq zmm16 {k7} {z}, zmm8, zmm23 +// CHECK: encoding: [0x62,0xa1,0xbd,0xcf,0xfb,0xc7] + vpsubq zmm16 {k7} {z}, zmm8, zmm23 + +// CHECK: vpsubq zmm16, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xbd,0x48,0xfb,0x01] + vpsubq zmm16, zmm8, zmmword ptr [rcx] + +// CHECK: vpsubq zmm16, zmm8, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xbd,0x48,0xfb,0x84,0xf0,0x34,0x12,0x00,0x00] + vpsubq zmm16, zmm8, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpsubq zmm16, zmm8, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xbd,0x58,0xfb,0x01] + vpsubq zmm16, zmm8, qword ptr [rcx]{1to8} + +// CHECK: vpsubq zmm16, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xbd,0x48,0xfb,0x42,0x7f] + vpsubq zmm16, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vpsubq zmm16, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xbd,0x48,0xfb,0x82,0x00,0x20,0x00,0x00] + vpsubq zmm16, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vpsubq zmm16, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xbd,0x48,0xfb,0x42,0x80] + vpsubq zmm16, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vpsubq zmm16, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xbd,0x48,0xfb,0x82,0xc0,0xdf,0xff,0xff] + vpsubq zmm16, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vpsubq zmm16, zmm8, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xbd,0x58,0xfb,0x42,0x7f] + vpsubq zmm16, zmm8, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpsubq zmm16, zmm8, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xbd,0x58,0xfb,0x82,0x00,0x04,0x00,0x00] + vpsubq zmm16, zmm8, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpsubq zmm16, zmm8, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xbd,0x58,0xfb,0x42,0x80] + vpsubq zmm16, zmm8, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpsubq zmm16, zmm8, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xbd,0x58,0xfb,0x82,0xf8,0xfb,0xff,0xff] + vpsubq zmm16, zmm8, qword ptr [rdx - 1032]{1to8} + +// CHECK: vptestmd k2, zmm24, zmm24 +// CHECK: encoding: [0x62,0x92,0x3d,0x40,0x27,0xd0] + vptestmd k2, zmm24, zmm24 + +// CHECK: vptestmd k2 {k2}, zmm24, zmm24 +// CHECK: encoding: [0x62,0x92,0x3d,0x42,0x27,0xd0] + vptestmd k2 {k2}, zmm24, zmm24 + +// CHECK: vptestmd k2, zmm24, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x27,0x11] + vptestmd k2, zmm24, zmmword ptr [rcx] + +// CHECK: vptestmd k2, zmm24, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x3d,0x40,0x27,0x94,0xf0,0x34,0x12,0x00,0x00] + vptestmd k2, zmm24, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vptestmd k2, zmm24, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x27,0x11] + vptestmd k2, zmm24, dword ptr [rcx]{1to16} + +// CHECK: vptestmd k2, zmm24, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x27,0x52,0x7f] + vptestmd k2, zmm24, zmmword ptr [rdx + 8128] + +// CHECK: vptestmd k2, zmm24, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x27,0x92,0x00,0x20,0x00,0x00] + vptestmd k2, zmm24, zmmword ptr [rdx + 8192] + +// CHECK: vptestmd k2, zmm24, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x27,0x52,0x80] + vptestmd k2, zmm24, zmmword ptr [rdx - 8192] + +// CHECK: vptestmd k2, zmm24, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x3d,0x40,0x27,0x92,0xc0,0xdf,0xff,0xff] + vptestmd k2, zmm24, zmmword ptr [rdx - 8256] + +// CHECK: vptestmd k2, zmm24, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x27,0x52,0x7f] + vptestmd k2, zmm24, dword ptr [rdx + 508]{1to16} + +// CHECK: vptestmd k2, zmm24, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x27,0x92,0x00,0x02,0x00,0x00] + vptestmd k2, zmm24, dword ptr [rdx + 512]{1to16} + +// CHECK: vptestmd k2, zmm24, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x27,0x52,0x80] + vptestmd k2, zmm24, dword ptr [rdx - 512]{1to16} + +// CHECK: vptestmd k2, zmm24, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x50,0x27,0x92,0xfc,0xfd,0xff,0xff] + vptestmd k2, zmm24, dword ptr [rdx - 516]{1to16} + +// CHECK: vptestmq k4, zmm15, zmm20 +// CHECK: encoding: [0x62,0xb2,0x85,0x48,0x27,0xe4] + vptestmq k4, zmm15, zmm20 + +// CHECK: vptestmq k4 {k2}, zmm15, zmm20 +// CHECK: encoding: [0x62,0xb2,0x85,0x4a,0x27,0xe4] + vptestmq k4 {k2}, zmm15, zmm20 + +// CHECK: vptestmq k4, zmm15, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x85,0x48,0x27,0x21] + vptestmq k4, zmm15, zmmword ptr [rcx] + +// CHECK: vptestmq k4, zmm15, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x85,0x48,0x27,0xa4,0xf0,0x34,0x12,0x00,0x00] + vptestmq k4, zmm15, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vptestmq k4, zmm15, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0x85,0x58,0x27,0x21] + vptestmq k4, zmm15, qword ptr [rcx]{1to8} + +// CHECK: vptestmq k4, zmm15, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x85,0x48,0x27,0x62,0x7f] + vptestmq k4, zmm15, zmmword ptr [rdx + 8128] + +// CHECK: vptestmq k4, zmm15, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x85,0x48,0x27,0xa2,0x00,0x20,0x00,0x00] + vptestmq k4, zmm15, zmmword ptr [rdx + 8192] + +// CHECK: vptestmq k4, zmm15, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x85,0x48,0x27,0x62,0x80] + vptestmq k4, zmm15, zmmword ptr [rdx - 8192] + +// CHECK: vptestmq k4, zmm15, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x85,0x48,0x27,0xa2,0xc0,0xdf,0xff,0xff] + vptestmq k4, zmm15, zmmword ptr [rdx - 8256] + +// CHECK: vptestmq k4, zmm15, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0x85,0x58,0x27,0x62,0x7f] + vptestmq k4, zmm15, qword ptr [rdx + 1016]{1to8} + +// CHECK: vptestmq k4, zmm15, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x85,0x58,0x27,0xa2,0x00,0x04,0x00,0x00] + vptestmq k4, zmm15, qword ptr [rdx + 1024]{1to8} + +// CHECK: vptestmq k4, zmm15, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0x85,0x58,0x27,0x62,0x80] + vptestmq k4, zmm15, qword ptr [rdx - 1024]{1to8} + +// CHECK: vptestmq k4, zmm15, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0x85,0x58,0x27,0xa2,0xf8,0xfb,0xff,0xff] + vptestmq k4, zmm15, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpunpckhdq zmm11, zmm6, zmm7 +// CHECK: encoding: [0x62,0x71,0x4d,0x48,0x6a,0xdf] + vpunpckhdq zmm11, zmm6, zmm7 + +// CHECK: vpunpckhdq zmm11 {k3}, zmm6, zmm7 +// CHECK: encoding: [0x62,0x71,0x4d,0x4b,0x6a,0xdf] + vpunpckhdq zmm11 {k3}, zmm6, zmm7 + +// CHECK: vpunpckhdq zmm11 {k3} {z}, zmm6, zmm7 +// CHECK: encoding: [0x62,0x71,0x4d,0xcb,0x6a,0xdf] + vpunpckhdq zmm11 {k3} {z}, zmm6, zmm7 + +// CHECK: vpunpckhdq zmm11, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x4d,0x48,0x6a,0x19] + vpunpckhdq zmm11, zmm6, zmmword ptr [rcx] + +// CHECK: vpunpckhdq zmm11, zmm6, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x4d,0x48,0x6a,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpunpckhdq zmm11, zmm6, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpunpckhdq zmm11, zmm6, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x71,0x4d,0x58,0x6a,0x19] + vpunpckhdq zmm11, zmm6, dword ptr [rcx]{1to16} + +// CHECK: vpunpckhdq zmm11, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0x4d,0x48,0x6a,0x5a,0x7f] + vpunpckhdq zmm11, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vpunpckhdq zmm11, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0x4d,0x48,0x6a,0x9a,0x00,0x20,0x00,0x00] + vpunpckhdq zmm11, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vpunpckhdq zmm11, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0x4d,0x48,0x6a,0x5a,0x80] + vpunpckhdq zmm11, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vpunpckhdq zmm11, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0x4d,0x48,0x6a,0x9a,0xc0,0xdf,0xff,0xff] + vpunpckhdq zmm11, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vpunpckhdq zmm11, zmm6, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x71,0x4d,0x58,0x6a,0x5a,0x7f] + vpunpckhdq zmm11, zmm6, dword ptr [rdx + 508]{1to16} + +// CHECK: vpunpckhdq zmm11, zmm6, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x4d,0x58,0x6a,0x9a,0x00,0x02,0x00,0x00] + vpunpckhdq zmm11, zmm6, dword ptr [rdx + 512]{1to16} + +// CHECK: vpunpckhdq zmm11, zmm6, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x71,0x4d,0x58,0x6a,0x5a,0x80] + vpunpckhdq zmm11, zmm6, dword ptr [rdx - 512]{1to16} + +// CHECK: vpunpckhdq zmm11, zmm6, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x71,0x4d,0x58,0x6a,0x9a,0xfc,0xfd,0xff,0xff] + vpunpckhdq zmm11, zmm6, dword ptr [rdx - 516]{1to16} + +// CHECK: vpunpckhqdq zmm8, zmm6, zmm26 +// CHECK: encoding: [0x62,0x11,0xcd,0x48,0x6d,0xc2] + vpunpckhqdq zmm8, zmm6, zmm26 + +// CHECK: vpunpckhqdq zmm8 {k6}, zmm6, zmm26 +// CHECK: encoding: [0x62,0x11,0xcd,0x4e,0x6d,0xc2] + vpunpckhqdq zmm8 {k6}, zmm6, zmm26 + +// CHECK: vpunpckhqdq zmm8 {k6} {z}, zmm6, zmm26 +// CHECK: encoding: [0x62,0x11,0xcd,0xce,0x6d,0xc2] + vpunpckhqdq zmm8 {k6} {z}, zmm6, zmm26 + +// CHECK: vpunpckhqdq zmm8, zmm6, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xcd,0x48,0x6d,0x01] + vpunpckhqdq zmm8, zmm6, zmmword ptr [rcx] + +// CHECK: vpunpckhqdq zmm8, zmm6, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xcd,0x48,0x6d,0x84,0xf0,0x34,0x12,0x00,0x00] + vpunpckhqdq zmm8, zmm6, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpunpckhqdq zmm8, zmm6, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0xcd,0x58,0x6d,0x01] + vpunpckhqdq zmm8, zmm6, qword ptr [rcx]{1to8} + +// CHECK: vpunpckhqdq zmm8, zmm6, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xcd,0x48,0x6d,0x42,0x7f] + vpunpckhqdq zmm8, zmm6, zmmword ptr [rdx + 8128] + +// CHECK: vpunpckhqdq zmm8, zmm6, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xcd,0x48,0x6d,0x82,0x00,0x20,0x00,0x00] + vpunpckhqdq zmm8, zmm6, zmmword ptr [rdx + 8192] + +// CHECK: vpunpckhqdq zmm8, zmm6, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xcd,0x48,0x6d,0x42,0x80] + vpunpckhqdq zmm8, zmm6, zmmword ptr [rdx - 8192] + +// CHECK: vpunpckhqdq zmm8, zmm6, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xcd,0x48,0x6d,0x82,0xc0,0xdf,0xff,0xff] + vpunpckhqdq zmm8, zmm6, zmmword ptr [rdx - 8256] + +// CHECK: vpunpckhqdq zmm8, zmm6, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0xcd,0x58,0x6d,0x42,0x7f] + vpunpckhqdq zmm8, zmm6, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpunpckhqdq zmm8, zmm6, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xcd,0x58,0x6d,0x82,0x00,0x04,0x00,0x00] + vpunpckhqdq zmm8, zmm6, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpunpckhqdq zmm8, zmm6, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xcd,0x58,0x6d,0x42,0x80] + vpunpckhqdq zmm8, zmm6, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpunpckhqdq zmm8, zmm6, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0xcd,0x58,0x6d,0x82,0xf8,0xfb,0xff,0xff] + vpunpckhqdq zmm8, zmm6, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpunpckldq zmm16, zmm18, zmm13 +// CHECK: encoding: [0x62,0xc1,0x6d,0x40,0x62,0xc5] + vpunpckldq zmm16, zmm18, zmm13 + +// CHECK: vpunpckldq zmm16 {k7}, zmm18, zmm13 +// CHECK: encoding: [0x62,0xc1,0x6d,0x47,0x62,0xc5] + vpunpckldq zmm16 {k7}, zmm18, zmm13 + +// CHECK: vpunpckldq zmm16 {k7} {z}, zmm18, zmm13 +// CHECK: encoding: [0x62,0xc1,0x6d,0xc7,0x62,0xc5] + vpunpckldq zmm16 {k7} {z}, zmm18, zmm13 + +// CHECK: vpunpckldq zmm16, zmm18, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x62,0x01] + vpunpckldq zmm16, zmm18, zmmword ptr [rcx] + +// CHECK: vpunpckldq zmm16, zmm18, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x6d,0x40,0x62,0x84,0xf0,0x34,0x12,0x00,0x00] + vpunpckldq zmm16, zmm18, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpunpckldq zmm16, zmm18, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x50,0x62,0x01] + vpunpckldq zmm16, zmm18, dword ptr [rcx]{1to16} + +// CHECK: vpunpckldq zmm16, zmm18, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x62,0x42,0x7f] + vpunpckldq zmm16, zmm18, zmmword ptr [rdx + 8128] + +// CHECK: vpunpckldq zmm16, zmm18, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x62,0x82,0x00,0x20,0x00,0x00] + vpunpckldq zmm16, zmm18, zmmword ptr [rdx + 8192] + +// CHECK: vpunpckldq zmm16, zmm18, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x62,0x42,0x80] + vpunpckldq zmm16, zmm18, zmmword ptr [rdx - 8192] + +// CHECK: vpunpckldq zmm16, zmm18, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x62,0x82,0xc0,0xdf,0xff,0xff] + vpunpckldq zmm16, zmm18, zmmword ptr [rdx - 8256] + +// CHECK: vpunpckldq zmm16, zmm18, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x50,0x62,0x42,0x7f] + vpunpckldq zmm16, zmm18, dword ptr [rdx + 508]{1to16} + +// CHECK: vpunpckldq zmm16, zmm18, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x50,0x62,0x82,0x00,0x02,0x00,0x00] + vpunpckldq zmm16, zmm18, dword ptr [rdx + 512]{1to16} + +// CHECK: vpunpckldq zmm16, zmm18, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x50,0x62,0x42,0x80] + vpunpckldq zmm16, zmm18, dword ptr [rdx - 512]{1to16} + +// CHECK: vpunpckldq zmm16, zmm18, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x6d,0x50,0x62,0x82,0xfc,0xfd,0xff,0xff] + vpunpckldq zmm16, zmm18, dword ptr [rdx - 516]{1to16} + +// CHECK: vpunpcklqdq zmm17, zmm16, zmm9 +// CHECK: encoding: [0x62,0xc1,0xfd,0x40,0x6c,0xc9] + vpunpcklqdq zmm17, zmm16, zmm9 + +// CHECK: vpunpcklqdq zmm17 {k5}, zmm16, zmm9 +// CHECK: encoding: [0x62,0xc1,0xfd,0x45,0x6c,0xc9] + vpunpcklqdq zmm17 {k5}, zmm16, zmm9 + +// CHECK: vpunpcklqdq zmm17 {k5} {z}, zmm16, zmm9 +// CHECK: encoding: [0x62,0xc1,0xfd,0xc5,0x6c,0xc9] + vpunpcklqdq zmm17 {k5} {z}, zmm16, zmm9 + +// CHECK: vpunpcklqdq zmm17, zmm16, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfd,0x40,0x6c,0x09] + vpunpcklqdq zmm17, zmm16, zmmword ptr [rcx] + +// CHECK: vpunpcklqdq zmm17, zmm16, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xfd,0x40,0x6c,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpunpcklqdq zmm17, zmm16, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpunpcklqdq zmm17, zmm16, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x50,0x6c,0x09] + vpunpcklqdq zmm17, zmm16, qword ptr [rcx]{1to8} + +// CHECK: vpunpcklqdq zmm17, zmm16, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xfd,0x40,0x6c,0x4a,0x7f] + vpunpcklqdq zmm17, zmm16, zmmword ptr [rdx + 8128] + +// CHECK: vpunpcklqdq zmm17, zmm16, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x40,0x6c,0x8a,0x00,0x20,0x00,0x00] + vpunpcklqdq zmm17, zmm16, zmmword ptr [rdx + 8192] + +// CHECK: vpunpcklqdq zmm17, zmm16, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xfd,0x40,0x6c,0x4a,0x80] + vpunpcklqdq zmm17, zmm16, zmmword ptr [rdx - 8192] + +// CHECK: vpunpcklqdq zmm17, zmm16, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xfd,0x40,0x6c,0x8a,0xc0,0xdf,0xff,0xff] + vpunpcklqdq zmm17, zmm16, zmmword ptr [rdx - 8256] + +// CHECK: vpunpcklqdq zmm17, zmm16, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x50,0x6c,0x4a,0x7f] + vpunpcklqdq zmm17, zmm16, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpunpcklqdq zmm17, zmm16, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x50,0x6c,0x8a,0x00,0x04,0x00,0x00] + vpunpcklqdq zmm17, zmm16, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpunpcklqdq zmm17, zmm16, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x50,0x6c,0x4a,0x80] + vpunpcklqdq zmm17, zmm16, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpunpcklqdq zmm17, zmm16, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfd,0x50,0x6c,0x8a,0xf8,0xfb,0xff,0xff] + vpunpcklqdq zmm17, zmm16, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpxord zmm5, zmm3, zmm25 +// CHECK: encoding: [0x62,0x91,0x65,0x48,0xef,0xe9] + vpxord zmm5, zmm3, zmm25 + +// CHECK: vpxord zmm5 {k3}, zmm3, zmm25 +// CHECK: encoding: [0x62,0x91,0x65,0x4b,0xef,0xe9] + vpxord zmm5 {k3}, zmm3, zmm25 + +// CHECK: vpxord zmm5 {k3} {z}, zmm3, zmm25 +// CHECK: encoding: [0x62,0x91,0x65,0xcb,0xef,0xe9] + vpxord zmm5 {k3} {z}, zmm3, zmm25 + +// CHECK: vpxord zmm5, zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0xef,0x29] + vpxord zmm5, zmm3, zmmword ptr [rcx] + +// CHECK: vpxord zmm5, zmm3, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x65,0x48,0xef,0xac,0xf0,0x34,0x12,0x00,0x00] + vpxord zmm5, zmm3, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpxord zmm5, zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0xef,0x29] + vpxord zmm5, zmm3, dword ptr [rcx]{1to16} + +// CHECK: vpxord zmm5, zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0xef,0x6a,0x7f] + vpxord zmm5, zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vpxord zmm5, zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0xef,0xaa,0x00,0x20,0x00,0x00] + vpxord zmm5, zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vpxord zmm5, zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0xef,0x6a,0x80] + vpxord zmm5, zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vpxord zmm5, zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x65,0x48,0xef,0xaa,0xc0,0xdf,0xff,0xff] + vpxord zmm5, zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vpxord zmm5, zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0xef,0x6a,0x7f] + vpxord zmm5, zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vpxord zmm5, zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0xef,0xaa,0x00,0x02,0x00,0x00] + vpxord zmm5, zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vpxord zmm5, zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0xef,0x6a,0x80] + vpxord zmm5, zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vpxord zmm5, zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x65,0x58,0xef,0xaa,0xfc,0xfd,0xff,0xff] + vpxord zmm5, zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vpxorq zmm10, zmm4, zmm18 +// CHECK: encoding: [0x62,0x31,0xdd,0x48,0xef,0xd2] + vpxorq zmm10, zmm4, zmm18 + +// CHECK: vpxorq zmm10 {k4}, zmm4, zmm18 +// CHECK: encoding: [0x62,0x31,0xdd,0x4c,0xef,0xd2] + vpxorq zmm10 {k4}, zmm4, zmm18 + +// CHECK: vpxorq zmm10 {k4} {z}, zmm4, zmm18 +// CHECK: encoding: [0x62,0x31,0xdd,0xcc,0xef,0xd2] + vpxorq zmm10 {k4} {z}, zmm4, zmm18 + +// CHECK: vpxorq zmm10, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xdd,0x48,0xef,0x11] + vpxorq zmm10, zmm4, zmmword ptr [rcx] + +// CHECK: vpxorq zmm10, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xdd,0x48,0xef,0x94,0xf0,0x34,0x12,0x00,0x00] + vpxorq zmm10, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpxorq zmm10, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0xdd,0x58,0xef,0x11] + vpxorq zmm10, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vpxorq zmm10, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xdd,0x48,0xef,0x52,0x7f] + vpxorq zmm10, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vpxorq zmm10, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xdd,0x48,0xef,0x92,0x00,0x20,0x00,0x00] + vpxorq zmm10, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vpxorq zmm10, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xdd,0x48,0xef,0x52,0x80] + vpxorq zmm10, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vpxorq zmm10, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xdd,0x48,0xef,0x92,0xc0,0xdf,0xff,0xff] + vpxorq zmm10, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vpxorq zmm10, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0xdd,0x58,0xef,0x52,0x7f] + vpxorq zmm10, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpxorq zmm10, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xdd,0x58,0xef,0x92,0x00,0x04,0x00,0x00] + vpxorq zmm10, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpxorq zmm10, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xdd,0x58,0xef,0x52,0x80] + vpxorq zmm10, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpxorq zmm10, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0xdd,0x58,0xef,0x92,0xf8,0xfb,0xff,0xff] + vpxorq zmm10, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vrcp14pd zmm26, zmm10 +// CHECK: encoding: [0x62,0x42,0xfd,0x48,0x4c,0xd2] + vrcp14pd zmm26, zmm10 + +// CHECK: vrcp14pd zmm26 {k6}, zmm10 +// CHECK: encoding: [0x62,0x42,0xfd,0x4e,0x4c,0xd2] + vrcp14pd zmm26 {k6}, zmm10 + +// CHECK: vrcp14pd zmm26 {k6} {z}, zmm10 +// CHECK: encoding: [0x62,0x42,0xfd,0xce,0x4c,0xd2] + vrcp14pd zmm26 {k6} {z}, zmm10 + +// CHECK: vrcp14pd zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x4c,0x11] + vrcp14pd zmm26, zmmword ptr [rcx] + +// CHECK: vrcp14pd zmm26, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x4c,0x94,0xf0,0x34,0x12,0x00,0x00] + vrcp14pd zmm26, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vrcp14pd zmm26, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x58,0x4c,0x11] + vrcp14pd zmm26, qword ptr [rcx]{1to8} + +// CHECK: vrcp14pd zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x4c,0x52,0x7f] + vrcp14pd zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vrcp14pd zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x4c,0x92,0x00,0x20,0x00,0x00] + vrcp14pd zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vrcp14pd zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x4c,0x52,0x80] + vrcp14pd zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vrcp14pd zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x4c,0x92,0xc0,0xdf,0xff,0xff] + vrcp14pd zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vrcp14pd zmm26, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x58,0x4c,0x52,0x7f] + vrcp14pd zmm26, qword ptr [rdx + 1016]{1to8} + +// CHECK: vrcp14pd zmm26, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x58,0x4c,0x92,0x00,0x04,0x00,0x00] + vrcp14pd zmm26, qword ptr [rdx + 1024]{1to8} + +// CHECK: vrcp14pd zmm26, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x58,0x4c,0x52,0x80] + vrcp14pd zmm26, qword ptr [rdx - 1024]{1to8} + +// CHECK: vrcp14pd zmm26, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xfd,0x58,0x4c,0x92,0xf8,0xfb,0xff,0xff] + vrcp14pd zmm26, qword ptr [rdx - 1032]{1to8} + +// CHECK: vrcp14ps zmm3, zmm27 +// CHECK: encoding: [0x62,0x92,0x7d,0x48,0x4c,0xdb] + vrcp14ps zmm3, zmm27 + +// CHECK: vrcp14ps zmm3 {k5}, zmm27 +// CHECK: encoding: [0x62,0x92,0x7d,0x4d,0x4c,0xdb] + vrcp14ps zmm3 {k5}, zmm27 + +// CHECK: vrcp14ps zmm3 {k5} {z}, zmm27 +// CHECK: encoding: [0x62,0x92,0x7d,0xcd,0x4c,0xdb] + vrcp14ps zmm3 {k5} {z}, zmm27 + +// CHECK: vrcp14ps zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4c,0x19] + vrcp14ps zmm3, zmmword ptr [rcx] + +// CHECK: vrcp14ps zmm3, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x4c,0x9c,0xf0,0x34,0x12,0x00,0x00] + vrcp14ps zmm3, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vrcp14ps zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4c,0x19] + vrcp14ps zmm3, dword ptr [rcx]{1to16} + +// CHECK: vrcp14ps zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4c,0x5a,0x7f] + vrcp14ps zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vrcp14ps zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4c,0x9a,0x00,0x20,0x00,0x00] + vrcp14ps zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vrcp14ps zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4c,0x5a,0x80] + vrcp14ps zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vrcp14ps zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4c,0x9a,0xc0,0xdf,0xff,0xff] + vrcp14ps zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vrcp14ps zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4c,0x5a,0x7f] + vrcp14ps zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vrcp14ps zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4c,0x9a,0x00,0x02,0x00,0x00] + vrcp14ps zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vrcp14ps zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4c,0x5a,0x80] + vrcp14ps zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vrcp14ps zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4c,0x9a,0xfc,0xfd,0xff,0xff] + vrcp14ps zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vrcp14sd xmm14, xmm6, xmm7 +// CHECK: encoding: [0x62,0x72,0xcd,0x08,0x4d,0xf7] + vrcp14sd xmm14, xmm6, xmm7 + +// CHECK: vrcp14sd xmm14 {k1}, xmm6, xmm7 +// CHECK: encoding: [0x62,0x72,0xcd,0x09,0x4d,0xf7] + vrcp14sd xmm14 {k1}, xmm6, xmm7 + +// CHECK: vrcp14sd xmm14 {k1} {z}, xmm6, xmm7 +// CHECK: encoding: [0x62,0x72,0xcd,0x89,0x4d,0xf7] + vrcp14sd xmm14 {k1} {z}, xmm6, xmm7 + +// CHECK: vrcp14sd xmm14, xmm6, qword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xcd,0x08,0x4d,0x31] + vrcp14sd xmm14, xmm6, qword ptr [rcx] + +// CHECK: vrcp14sd xmm14, xmm6, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0xcd,0x08,0x4d,0xb4,0xf0,0x34,0x12,0x00,0x00] + vrcp14sd xmm14, xmm6, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vrcp14sd xmm14, xmm6, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x72,0xcd,0x08,0x4d,0x72,0x7f] + vrcp14sd xmm14, xmm6, qword ptr [rdx + 1016] + +// CHECK: vrcp14sd xmm14, xmm6, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x72,0xcd,0x08,0x4d,0xb2,0x00,0x04,0x00,0x00] + vrcp14sd xmm14, xmm6, qword ptr [rdx + 1024] + +// CHECK: vrcp14sd xmm14, xmm6, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x72,0xcd,0x08,0x4d,0x72,0x80] + vrcp14sd xmm14, xmm6, qword ptr [rdx - 1024] + +// CHECK: vrcp14sd xmm14, xmm6, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x72,0xcd,0x08,0x4d,0xb2,0xf8,0xfb,0xff,0xff] + vrcp14sd xmm14, xmm6, qword ptr [rdx - 1032] + +// CHECK: vrcp14ss xmm25, xmm1, xmm21 +// CHECK: encoding: [0x62,0x22,0x75,0x08,0x4d,0xcd] + vrcp14ss xmm25, xmm1, xmm21 + +// CHECK: vrcp14ss xmm25 {k2}, xmm1, xmm21 +// CHECK: encoding: [0x62,0x22,0x75,0x0a,0x4d,0xcd] + vrcp14ss xmm25 {k2}, xmm1, xmm21 + +// CHECK: vrcp14ss xmm25 {k2} {z}, xmm1, xmm21 +// CHECK: encoding: [0x62,0x22,0x75,0x8a,0x4d,0xcd] + vrcp14ss xmm25 {k2} {z}, xmm1, xmm21 + +// CHECK: vrcp14ss xmm25, xmm1, dword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x4d,0x09] + vrcp14ss xmm25, xmm1, dword ptr [rcx] + +// CHECK: vrcp14ss xmm25, xmm1, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x75,0x08,0x4d,0x8c,0xf0,0x34,0x12,0x00,0x00] + vrcp14ss xmm25, xmm1, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vrcp14ss xmm25, xmm1, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x4d,0x4a,0x7f] + vrcp14ss xmm25, xmm1, dword ptr [rdx + 508] + +// CHECK: vrcp14ss xmm25, xmm1, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x4d,0x8a,0x00,0x02,0x00,0x00] + vrcp14ss xmm25, xmm1, dword ptr [rdx + 512] + +// CHECK: vrcp14ss xmm25, xmm1, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x4d,0x4a,0x80] + vrcp14ss xmm25, xmm1, dword ptr [rdx - 512] + +// CHECK: vrcp14ss xmm25, xmm1, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x62,0x75,0x08,0x4d,0x8a,0xfc,0xfd,0xff,0xff] + vrcp14ss xmm25, xmm1, dword ptr [rdx - 516] + +// CHECK: vrsqrt14pd zmm14, zmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4e,0xf4] + vrsqrt14pd zmm14, zmm4 + +// CHECK: vrsqrt14pd zmm14 {k7}, zmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0x4f,0x4e,0xf4] + vrsqrt14pd zmm14 {k7}, zmm4 + +// CHECK: vrsqrt14pd zmm14 {k7} {z}, zmm4 +// CHECK: encoding: [0x62,0x72,0xfd,0xcf,0x4e,0xf4] + vrsqrt14pd zmm14 {k7} {z}, zmm4 + +// CHECK: vrsqrt14pd zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4e,0x31] + vrsqrt14pd zmm14, zmmword ptr [rcx] + +// CHECK: vrsqrt14pd zmm14, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0xfd,0x48,0x4e,0xb4,0xf0,0x34,0x12,0x00,0x00] + vrsqrt14pd zmm14, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vrsqrt14pd zmm14, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4e,0x31] + vrsqrt14pd zmm14, qword ptr [rcx]{1to8} + +// CHECK: vrsqrt14pd zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4e,0x72,0x7f] + vrsqrt14pd zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vrsqrt14pd zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4e,0xb2,0x00,0x20,0x00,0x00] + vrsqrt14pd zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vrsqrt14pd zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4e,0x72,0x80] + vrsqrt14pd zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vrsqrt14pd zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x4e,0xb2,0xc0,0xdf,0xff,0xff] + vrsqrt14pd zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vrsqrt14pd zmm14, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4e,0x72,0x7f] + vrsqrt14pd zmm14, qword ptr [rdx + 1016]{1to8} + +// CHECK: vrsqrt14pd zmm14, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4e,0xb2,0x00,0x04,0x00,0x00] + vrsqrt14pd zmm14, qword ptr [rdx + 1024]{1to8} + +// CHECK: vrsqrt14pd zmm14, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4e,0x72,0x80] + vrsqrt14pd zmm14, qword ptr [rdx - 1024]{1to8} + +// CHECK: vrsqrt14pd zmm14, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xfd,0x58,0x4e,0xb2,0xf8,0xfb,0xff,0xff] + vrsqrt14pd zmm14, qword ptr [rdx - 1032]{1to8} + +// CHECK: vrsqrt14ps zmm3, zmm25 +// CHECK: encoding: [0x62,0x92,0x7d,0x48,0x4e,0xd9] + vrsqrt14ps zmm3, zmm25 + +// CHECK: vrsqrt14ps zmm3 {k3}, zmm25 +// CHECK: encoding: [0x62,0x92,0x7d,0x4b,0x4e,0xd9] + vrsqrt14ps zmm3 {k3}, zmm25 + +// CHECK: vrsqrt14ps zmm3 {k3} {z}, zmm25 +// CHECK: encoding: [0x62,0x92,0x7d,0xcb,0x4e,0xd9] + vrsqrt14ps zmm3 {k3} {z}, zmm25 + +// CHECK: vrsqrt14ps zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4e,0x19] + vrsqrt14ps zmm3, zmmword ptr [rcx] + +// CHECK: vrsqrt14ps zmm3, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x4e,0x9c,0xf0,0x34,0x12,0x00,0x00] + vrsqrt14ps zmm3, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vrsqrt14ps zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4e,0x19] + vrsqrt14ps zmm3, dword ptr [rcx]{1to16} + +// CHECK: vrsqrt14ps zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4e,0x5a,0x7f] + vrsqrt14ps zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vrsqrt14ps zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4e,0x9a,0x00,0x20,0x00,0x00] + vrsqrt14ps zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vrsqrt14ps zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4e,0x5a,0x80] + vrsqrt14ps zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vrsqrt14ps zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x4e,0x9a,0xc0,0xdf,0xff,0xff] + vrsqrt14ps zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vrsqrt14ps zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4e,0x5a,0x7f] + vrsqrt14ps zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vrsqrt14ps zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4e,0x9a,0x00,0x02,0x00,0x00] + vrsqrt14ps zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vrsqrt14ps zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4e,0x5a,0x80] + vrsqrt14ps zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vrsqrt14ps zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x7d,0x58,0x4e,0x9a,0xfc,0xfd,0xff,0xff] + vrsqrt14ps zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vrsqrt14sd xmm1, xmm21, xmm3 +// CHECK: encoding: [0x62,0xf2,0xd5,0x00,0x4f,0xcb] + vrsqrt14sd xmm1, xmm21, xmm3 + +// CHECK: vrsqrt14sd xmm1 {k2}, xmm21, xmm3 +// CHECK: encoding: [0x62,0xf2,0xd5,0x02,0x4f,0xcb] + vrsqrt14sd xmm1 {k2}, xmm21, xmm3 + +// CHECK: vrsqrt14sd xmm1 {k2} {z}, xmm21, xmm3 +// CHECK: encoding: [0x62,0xf2,0xd5,0x82,0x4f,0xcb] + vrsqrt14sd xmm1 {k2} {z}, xmm21, xmm3 + +// CHECK: vrsqrt14sd xmm1, xmm21, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xd5,0x00,0x4f,0x09] + vrsqrt14sd xmm1, xmm21, qword ptr [rcx] + +// CHECK: vrsqrt14sd xmm1, xmm21, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xd5,0x00,0x4f,0x8c,0xf0,0x34,0x12,0x00,0x00] + vrsqrt14sd xmm1, xmm21, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vrsqrt14sd xmm1, xmm21, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf2,0xd5,0x00,0x4f,0x4a,0x7f] + vrsqrt14sd xmm1, xmm21, qword ptr [rdx + 1016] + +// CHECK: vrsqrt14sd xmm1, xmm21, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf2,0xd5,0x00,0x4f,0x8a,0x00,0x04,0x00,0x00] + vrsqrt14sd xmm1, xmm21, qword ptr [rdx + 1024] + +// CHECK: vrsqrt14sd xmm1, xmm21, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf2,0xd5,0x00,0x4f,0x4a,0x80] + vrsqrt14sd xmm1, xmm21, qword ptr [rdx - 1024] + +// CHECK: vrsqrt14sd xmm1, xmm21, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf2,0xd5,0x00,0x4f,0x8a,0xf8,0xfb,0xff,0xff] + vrsqrt14sd xmm1, xmm21, qword ptr [rdx - 1032] + +// CHECK: vrsqrt14ss xmm19, xmm26, xmm18 +// CHECK: encoding: [0x62,0xa2,0x2d,0x00,0x4f,0xda] + vrsqrt14ss xmm19, xmm26, xmm18 + +// CHECK: vrsqrt14ss xmm19 {k3}, xmm26, xmm18 +// CHECK: encoding: [0x62,0xa2,0x2d,0x03,0x4f,0xda] + vrsqrt14ss xmm19 {k3}, xmm26, xmm18 + +// CHECK: vrsqrt14ss xmm19 {k3} {z}, xmm26, xmm18 +// CHECK: encoding: [0x62,0xa2,0x2d,0x83,0x4f,0xda] + vrsqrt14ss xmm19 {k3} {z}, xmm26, xmm18 + +// CHECK: vrsqrt14ss xmm19, xmm26, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x2d,0x00,0x4f,0x19] + vrsqrt14ss xmm19, xmm26, dword ptr [rcx] + +// CHECK: vrsqrt14ss xmm19, xmm26, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x2d,0x00,0x4f,0x9c,0xf0,0x34,0x12,0x00,0x00] + vrsqrt14ss xmm19, xmm26, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vrsqrt14ss xmm19, xmm26, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x2d,0x00,0x4f,0x5a,0x7f] + vrsqrt14ss xmm19, xmm26, dword ptr [rdx + 508] + +// CHECK: vrsqrt14ss xmm19, xmm26, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x2d,0x00,0x4f,0x9a,0x00,0x02,0x00,0x00] + vrsqrt14ss xmm19, xmm26, dword ptr [rdx + 512] + +// CHECK: vrsqrt14ss xmm19, xmm26, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x2d,0x00,0x4f,0x5a,0x80] + vrsqrt14ss xmm19, xmm26, dword ptr [rdx - 512] + +// CHECK: vrsqrt14ss xmm19, xmm26, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x2d,0x00,0x4f,0x9a,0xfc,0xfd,0xff,0xff] + vrsqrt14ss xmm19, xmm26, dword ptr [rdx - 516] + +// CHECK: vshufpd zmm1, zmm10, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xad,0x48,0xc6,0xc9,0xab] + vshufpd zmm1, zmm10, zmm25, 171 + +// CHECK: vshufpd zmm1 {k3}, zmm10, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xad,0x4b,0xc6,0xc9,0xab] + vshufpd zmm1 {k3}, zmm10, zmm25, 171 + +// CHECK: vshufpd zmm1 {k3} {z}, zmm10, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0xad,0xcb,0xc6,0xc9,0xab] + vshufpd zmm1 {k3} {z}, zmm10, zmm25, 171 + +// CHECK: vshufpd zmm1, zmm10, zmm25, 123 +// CHECK: encoding: [0x62,0x91,0xad,0x48,0xc6,0xc9,0x7b] + vshufpd zmm1, zmm10, zmm25, 123 + +// CHECK: vshufpd zmm1, zmm10, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xc6,0x09,0x7b] + vshufpd zmm1, zmm10, zmmword ptr [rcx], 123 + +// CHECK: vshufpd zmm1, zmm10, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0xad,0x48,0xc6,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vshufpd zmm1, zmm10, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vshufpd zmm1, zmm10, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xc6,0x09,0x7b] + vshufpd zmm1, zmm10, qword ptr [rcx]{1to8}, 123 + +// CHECK: vshufpd zmm1, zmm10, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xc6,0x4a,0x7f,0x7b] + vshufpd zmm1, zmm10, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshufpd zmm1, zmm10, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xc6,0x8a,0x00,0x20,0x00,0x00,0x7b] + vshufpd zmm1, zmm10, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshufpd zmm1, zmm10, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xc6,0x4a,0x80,0x7b] + vshufpd zmm1, zmm10, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshufpd zmm1, zmm10, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x48,0xc6,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vshufpd zmm1, zmm10, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshufpd zmm1, zmm10, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xc6,0x4a,0x7f,0x7b] + vshufpd zmm1, zmm10, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vshufpd zmm1, zmm10, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xc6,0x8a,0x00,0x04,0x00,0x00,0x7b] + vshufpd zmm1, zmm10, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vshufpd zmm1, zmm10, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xc6,0x4a,0x80,0x7b] + vshufpd zmm1, zmm10, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vshufpd zmm1, zmm10, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xad,0x58,0xc6,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + vshufpd zmm1, zmm10, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vshufps zmm1, zmm1, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0x74,0x48,0xc6,0xc9,0xab] + vshufps zmm1, zmm1, zmm25, 171 + +// CHECK: vshufps zmm1 {k1}, zmm1, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0x74,0x49,0xc6,0xc9,0xab] + vshufps zmm1 {k1}, zmm1, zmm25, 171 + +// CHECK: vshufps zmm1 {k1} {z}, zmm1, zmm25, 171 +// CHECK: encoding: [0x62,0x91,0x74,0xc9,0xc6,0xc9,0xab] + vshufps zmm1 {k1} {z}, zmm1, zmm25, 171 + +// CHECK: vshufps zmm1, zmm1, zmm25, 123 +// CHECK: encoding: [0x62,0x91,0x74,0x48,0xc6,0xc9,0x7b] + vshufps zmm1, zmm1, zmm25, 123 + +// CHECK: vshufps zmm1, zmm1, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x48,0xc6,0x09,0x7b] + vshufps zmm1, zmm1, zmmword ptr [rcx], 123 + +// CHECK: vshufps zmm1, zmm1, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x74,0x48,0xc6,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vshufps zmm1, zmm1, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vshufps zmm1, zmm1, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x58,0xc6,0x09,0x7b] + vshufps zmm1, zmm1, dword ptr [rcx]{1to16}, 123 + +// CHECK: vshufps zmm1, zmm1, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x48,0xc6,0x4a,0x7f,0x7b] + vshufps zmm1, zmm1, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshufps zmm1, zmm1, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x48,0xc6,0x8a,0x00,0x20,0x00,0x00,0x7b] + vshufps zmm1, zmm1, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshufps zmm1, zmm1, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x48,0xc6,0x4a,0x80,0x7b] + vshufps zmm1, zmm1, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshufps zmm1, zmm1, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x48,0xc6,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vshufps zmm1, zmm1, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshufps zmm1, zmm1, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x58,0xc6,0x4a,0x7f,0x7b] + vshufps zmm1, zmm1, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vshufps zmm1, zmm1, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x58,0xc6,0x8a,0x00,0x02,0x00,0x00,0x7b] + vshufps zmm1, zmm1, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vshufps zmm1, zmm1, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x58,0xc6,0x4a,0x80,0x7b] + vshufps zmm1, zmm1, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vshufps zmm1, zmm1, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x74,0x58,0xc6,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + vshufps zmm1, zmm1, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vsqrtpd zmm9, zmm5 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x51,0xcd] + vsqrtpd zmm9, zmm5 + +// CHECK: vsqrtpd zmm9 {k2}, zmm5 +// CHECK: encoding: [0x62,0x71,0xfd,0x4a,0x51,0xcd] + vsqrtpd zmm9 {k2}, zmm5 + +// CHECK: vsqrtpd zmm9 {k2} {z}, zmm5 +// CHECK: encoding: [0x62,0x71,0xfd,0xca,0x51,0xcd] + vsqrtpd zmm9 {k2} {z}, zmm5 + +// CHECK: vsqrtpd zmm9, zmm5, {rn-sae} +// CHECK: encoding: [0x62,0x71,0xfd,0x18,0x51,0xcd] + vsqrtpd zmm9, zmm5, {rn-sae} + +// CHECK: vsqrtpd zmm9, zmm5, {ru-sae} +// CHECK: encoding: [0x62,0x71,0xfd,0x58,0x51,0xcd] + vsqrtpd zmm9, zmm5, {ru-sae} + +// CHECK: vsqrtpd zmm9, zmm5, {rd-sae} +// CHECK: encoding: [0x62,0x71,0xfd,0x38,0x51,0xcd] + vsqrtpd zmm9, zmm5, {rd-sae} + +// CHECK: vsqrtpd zmm9, zmm5, {rz-sae} +// CHECK: encoding: [0x62,0x71,0xfd,0x78,0x51,0xcd] + vsqrtpd zmm9, zmm5, {rz-sae} + +// CHECK: vsqrtpd zmm9, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x51,0x09] + vsqrtpd zmm9, zmmword ptr [rcx] + +// CHECK: vsqrtpd zmm9, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xfd,0x48,0x51,0x8c,0xf0,0x34,0x12,0x00,0x00] + vsqrtpd zmm9, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vsqrtpd zmm9, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x71,0xfd,0x58,0x51,0x09] + vsqrtpd zmm9, qword ptr [rcx]{1to8} + +// CHECK: vsqrtpd zmm9, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x51,0x4a,0x7f] + vsqrtpd zmm9, zmmword ptr [rdx + 8128] + +// CHECK: vsqrtpd zmm9, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x51,0x8a,0x00,0x20,0x00,0x00] + vsqrtpd zmm9, zmmword ptr [rdx + 8192] + +// CHECK: vsqrtpd zmm9, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x51,0x4a,0x80] + vsqrtpd zmm9, zmmword ptr [rdx - 8192] + +// CHECK: vsqrtpd zmm9, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x51,0x8a,0xc0,0xdf,0xff,0xff] + vsqrtpd zmm9, zmmword ptr [rdx - 8256] + +// CHECK: vsqrtpd zmm9, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x71,0xfd,0x58,0x51,0x4a,0x7f] + vsqrtpd zmm9, qword ptr [rdx + 1016]{1to8} + +// CHECK: vsqrtpd zmm9, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xfd,0x58,0x51,0x8a,0x00,0x04,0x00,0x00] + vsqrtpd zmm9, qword ptr [rdx + 1024]{1to8} + +// CHECK: vsqrtpd zmm9, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x71,0xfd,0x58,0x51,0x4a,0x80] + vsqrtpd zmm9, qword ptr [rdx - 1024]{1to8} + +// CHECK: vsqrtpd zmm9, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x71,0xfd,0x58,0x51,0x8a,0xf8,0xfb,0xff,0xff] + vsqrtpd zmm9, qword ptr [rdx - 1032]{1to8} + +// CHECK: vsqrtps zmm4, zmm23 +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x51,0xe7] + vsqrtps zmm4, zmm23 + +// CHECK: vsqrtps zmm4 {k6}, zmm23 +// CHECK: encoding: [0x62,0xb1,0x7c,0x4e,0x51,0xe7] + vsqrtps zmm4 {k6}, zmm23 + +// CHECK: vsqrtps zmm4 {k6} {z}, zmm23 +// CHECK: encoding: [0x62,0xb1,0x7c,0xce,0x51,0xe7] + vsqrtps zmm4 {k6} {z}, zmm23 + +// CHECK: vsqrtps zmm4, zmm23, {rn-sae} +// CHECK: encoding: [0x62,0xb1,0x7c,0x18,0x51,0xe7] + vsqrtps zmm4, zmm23, {rn-sae} + +// CHECK: vsqrtps zmm4, zmm23, {ru-sae} +// CHECK: encoding: [0x62,0xb1,0x7c,0x58,0x51,0xe7] + vsqrtps zmm4, zmm23, {ru-sae} + +// CHECK: vsqrtps zmm4, zmm23, {rd-sae} +// CHECK: encoding: [0x62,0xb1,0x7c,0x38,0x51,0xe7] + vsqrtps zmm4, zmm23, {rd-sae} + +// CHECK: vsqrtps zmm4, zmm23, {rz-sae} +// CHECK: encoding: [0x62,0xb1,0x7c,0x78,0x51,0xe7] + vsqrtps zmm4, zmm23, {rz-sae} + +// CHECK: vsqrtps zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x51,0x21] + vsqrtps zmm4, zmmword ptr [rcx] + +// CHECK: vsqrtps zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x51,0xa4,0xf0,0x34,0x12,0x00,0x00] + vsqrtps zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vsqrtps zmm4, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x51,0x21] + vsqrtps zmm4, dword ptr [rcx]{1to16} + +// CHECK: vsqrtps zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x51,0x62,0x7f] + vsqrtps zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vsqrtps zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x51,0xa2,0x00,0x20,0x00,0x00] + vsqrtps zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vsqrtps zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x51,0x62,0x80] + vsqrtps zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vsqrtps zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x51,0xa2,0xc0,0xdf,0xff,0xff] + vsqrtps zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vsqrtps zmm4, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x51,0x62,0x7f] + vsqrtps zmm4, dword ptr [rdx + 508]{1to16} + +// CHECK: vsqrtps zmm4, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x51,0xa2,0x00,0x02,0x00,0x00] + vsqrtps zmm4, dword ptr [rdx + 512]{1to16} + +// CHECK: vsqrtps zmm4, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x51,0x62,0x80] + vsqrtps zmm4, dword ptr [rdx - 512]{1to16} + +// CHECK: vsqrtps zmm4, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x51,0xa2,0xfc,0xfd,0xff,0xff] + vsqrtps zmm4, dword ptr [rdx - 516]{1to16} + +// CHECK: vsqrtsd xmm8, xmm24, xmm5 +// CHECK: encoding: [0x62,0x71,0xbf,0x00,0x51,0xc5] + vsqrtsd xmm8, xmm24, xmm5 + +// CHECK: vsqrtsd xmm8 {k3}, xmm24, xmm5 +// CHECK: encoding: [0x62,0x71,0xbf,0x03,0x51,0xc5] + vsqrtsd xmm8 {k3}, xmm24, xmm5 + +// CHECK: vsqrtsd xmm8 {k3} {z}, xmm24, xmm5 +// CHECK: encoding: [0x62,0x71,0xbf,0x83,0x51,0xc5] + vsqrtsd xmm8 {k3} {z}, xmm24, xmm5 + +// CHECK: vsqrtsd xmm8, xmm24, xmm5, {rn-sae} +// CHECK: encoding: [0x62,0x71,0xbf,0x10,0x51,0xc5] + vsqrtsd xmm8, xmm24, xmm5, {rn-sae} + +// CHECK: vsqrtsd xmm8, xmm24, xmm5, {ru-sae} +// CHECK: encoding: [0x62,0x71,0xbf,0x50,0x51,0xc5] + vsqrtsd xmm8, xmm24, xmm5, {ru-sae} + +// CHECK: vsqrtsd xmm8, xmm24, xmm5, {rd-sae} +// CHECK: encoding: [0x62,0x71,0xbf,0x30,0x51,0xc5] + vsqrtsd xmm8, xmm24, xmm5, {rd-sae} + +// CHECK: vsqrtsd xmm8, xmm24, xmm5, {rz-sae} +// CHECK: encoding: [0x62,0x71,0xbf,0x70,0x51,0xc5] + vsqrtsd xmm8, xmm24, xmm5, {rz-sae} + +// CHECK: vsqrtsd xmm8, xmm24, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xbf,0x00,0x51,0x01] + vsqrtsd xmm8, xmm24, qword ptr [rcx] + +// CHECK: vsqrtsd xmm8, xmm24, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xbf,0x00,0x51,0x84,0xf0,0x34,0x12,0x00,0x00] + vsqrtsd xmm8, xmm24, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vsqrtsd xmm8, xmm24, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0xbf,0x00,0x51,0x42,0x7f] + vsqrtsd xmm8, xmm24, qword ptr [rdx + 1016] + +// CHECK: vsqrtsd xmm8, xmm24, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0xbf,0x00,0x51,0x82,0x00,0x04,0x00,0x00] + vsqrtsd xmm8, xmm24, qword ptr [rdx + 1024] + +// CHECK: vsqrtsd xmm8, xmm24, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0xbf,0x00,0x51,0x42,0x80] + vsqrtsd xmm8, xmm24, qword ptr [rdx - 1024] + +// CHECK: vsqrtsd xmm8, xmm24, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0xbf,0x00,0x51,0x82,0xf8,0xfb,0xff,0xff] + vsqrtsd xmm8, xmm24, qword ptr [rdx - 1032] + +// CHECK: vsqrtss xmm25, xmm14, xmm11 +// CHECK: encoding: [0x62,0x41,0x0e,0x08,0x51,0xcb] + vsqrtss xmm25, xmm14, xmm11 + +// CHECK: vsqrtss xmm25 {k7}, xmm14, xmm11 +// CHECK: encoding: [0x62,0x41,0x0e,0x0f,0x51,0xcb] + vsqrtss xmm25 {k7}, xmm14, xmm11 + +// CHECK: vsqrtss xmm25 {k7} {z}, xmm14, xmm11 +// CHECK: encoding: [0x62,0x41,0x0e,0x8f,0x51,0xcb] + vsqrtss xmm25 {k7} {z}, xmm14, xmm11 + +// CHECK: vsqrtss xmm25, xmm14, xmm11, {rn-sae} +// CHECK: encoding: [0x62,0x41,0x0e,0x18,0x51,0xcb] + vsqrtss xmm25, xmm14, xmm11, {rn-sae} + +// CHECK: vsqrtss xmm25, xmm14, xmm11, {ru-sae} +// CHECK: encoding: [0x62,0x41,0x0e,0x58,0x51,0xcb] + vsqrtss xmm25, xmm14, xmm11, {ru-sae} + +// CHECK: vsqrtss xmm25, xmm14, xmm11, {rd-sae} +// CHECK: encoding: [0x62,0x41,0x0e,0x38,0x51,0xcb] + vsqrtss xmm25, xmm14, xmm11, {rd-sae} + +// CHECK: vsqrtss xmm25, xmm14, xmm11, {rz-sae} +// CHECK: encoding: [0x62,0x41,0x0e,0x78,0x51,0xcb] + vsqrtss xmm25, xmm14, xmm11, {rz-sae} + +// CHECK: vsqrtss xmm25, xmm14, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x0e,0x08,0x51,0x09] + vsqrtss xmm25, xmm14, dword ptr [rcx] + +// CHECK: vsqrtss xmm25, xmm14, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x0e,0x08,0x51,0x8c,0xf0,0x34,0x12,0x00,0x00] + vsqrtss xmm25, xmm14, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vsqrtss xmm25, xmm14, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x0e,0x08,0x51,0x4a,0x7f] + vsqrtss xmm25, xmm14, dword ptr [rdx + 508] + +// CHECK: vsqrtss xmm25, xmm14, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x0e,0x08,0x51,0x8a,0x00,0x02,0x00,0x00] + vsqrtss xmm25, xmm14, dword ptr [rdx + 512] + +// CHECK: vsqrtss xmm25, xmm14, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x0e,0x08,0x51,0x4a,0x80] + vsqrtss xmm25, xmm14, dword ptr [rdx - 512] + +// CHECK: vsqrtss xmm25, xmm14, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x0e,0x08,0x51,0x8a,0xfc,0xfd,0xff,0xff] + vsqrtss xmm25, xmm14, dword ptr [rdx - 516] + +// CHECK: vsubpd zmm21, zmm28, zmm8 +// CHECK: encoding: [0x62,0xc1,0x9d,0x40,0x5c,0xe8] + vsubpd zmm21, zmm28, zmm8 + +// CHECK: vsubpd zmm21 {k1}, zmm28, zmm8 +// CHECK: encoding: [0x62,0xc1,0x9d,0x41,0x5c,0xe8] + vsubpd zmm21 {k1}, zmm28, zmm8 + +// CHECK: vsubpd zmm21 {k1} {z}, zmm28, zmm8 +// CHECK: encoding: [0x62,0xc1,0x9d,0xc1,0x5c,0xe8] + vsubpd zmm21 {k1} {z}, zmm28, zmm8 + +// CHECK: vsubpd zmm21, zmm28, zmm8, {rn-sae} +// CHECK: encoding: [0x62,0xc1,0x9d,0x10,0x5c,0xe8] + vsubpd zmm21, zmm28, zmm8, {rn-sae} + +// CHECK: vsubpd zmm21, zmm28, zmm8, {ru-sae} +// CHECK: encoding: [0x62,0xc1,0x9d,0x50,0x5c,0xe8] + vsubpd zmm21, zmm28, zmm8, {ru-sae} + +// CHECK: vsubpd zmm21, zmm28, zmm8, {rd-sae} +// CHECK: encoding: [0x62,0xc1,0x9d,0x30,0x5c,0xe8] + vsubpd zmm21, zmm28, zmm8, {rd-sae} + +// CHECK: vsubpd zmm21, zmm28, zmm8, {rz-sae} +// CHECK: encoding: [0x62,0xc1,0x9d,0x70,0x5c,0xe8] + vsubpd zmm21, zmm28, zmm8, {rz-sae} + +// CHECK: vsubpd zmm21, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x5c,0x29] + vsubpd zmm21, zmm28, zmmword ptr [rcx] + +// CHECK: vsubpd zmm21, zmm28, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x9d,0x40,0x5c,0xac,0xf0,0x34,0x12,0x00,0x00] + vsubpd zmm21, zmm28, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vsubpd zmm21, zmm28, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x5c,0x29] + vsubpd zmm21, zmm28, qword ptr [rcx]{1to8} + +// CHECK: vsubpd zmm21, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x5c,0x6a,0x7f] + vsubpd zmm21, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vsubpd zmm21, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x5c,0xaa,0x00,0x20,0x00,0x00] + vsubpd zmm21, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vsubpd zmm21, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x5c,0x6a,0x80] + vsubpd zmm21, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vsubpd zmm21, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x5c,0xaa,0xc0,0xdf,0xff,0xff] + vsubpd zmm21, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vsubpd zmm21, zmm28, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x5c,0x6a,0x7f] + vsubpd zmm21, zmm28, qword ptr [rdx + 1016]{1to8} + +// CHECK: vsubpd zmm21, zmm28, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x5c,0xaa,0x00,0x04,0x00,0x00] + vsubpd zmm21, zmm28, qword ptr [rdx + 1024]{1to8} + +// CHECK: vsubpd zmm21, zmm28, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x5c,0x6a,0x80] + vsubpd zmm21, zmm28, qword ptr [rdx - 1024]{1to8} + +// CHECK: vsubpd zmm21, zmm28, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x5c,0xaa,0xf8,0xfb,0xff,0xff] + vsubpd zmm21, zmm28, qword ptr [rdx - 1032]{1to8} + +// CHECK: vsubps zmm19, zmm10, zmm5 +// CHECK: encoding: [0x62,0xe1,0x2c,0x48,0x5c,0xdd] + vsubps zmm19, zmm10, zmm5 + +// CHECK: vsubps zmm19 {k7}, zmm10, zmm5 +// CHECK: encoding: [0x62,0xe1,0x2c,0x4f,0x5c,0xdd] + vsubps zmm19 {k7}, zmm10, zmm5 + +// CHECK: vsubps zmm19 {k7} {z}, zmm10, zmm5 +// CHECK: encoding: [0x62,0xe1,0x2c,0xcf,0x5c,0xdd] + vsubps zmm19 {k7} {z}, zmm10, zmm5 + +// CHECK: vsubps zmm19, zmm10, zmm5, {rn-sae} +// CHECK: encoding: [0x62,0xe1,0x2c,0x18,0x5c,0xdd] + vsubps zmm19, zmm10, zmm5, {rn-sae} + +// CHECK: vsubps zmm19, zmm10, zmm5, {ru-sae} +// CHECK: encoding: [0x62,0xe1,0x2c,0x58,0x5c,0xdd] + vsubps zmm19, zmm10, zmm5, {ru-sae} + +// CHECK: vsubps zmm19, zmm10, zmm5, {rd-sae} +// CHECK: encoding: [0x62,0xe1,0x2c,0x38,0x5c,0xdd] + vsubps zmm19, zmm10, zmm5, {rd-sae} + +// CHECK: vsubps zmm19, zmm10, zmm5, {rz-sae} +// CHECK: encoding: [0x62,0xe1,0x2c,0x78,0x5c,0xdd] + vsubps zmm19, zmm10, zmm5, {rz-sae} + +// CHECK: vsubps zmm19, zmm10, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x2c,0x48,0x5c,0x19] + vsubps zmm19, zmm10, zmmword ptr [rcx] + +// CHECK: vsubps zmm19, zmm10, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x2c,0x48,0x5c,0x9c,0xf0,0x34,0x12,0x00,0x00] + vsubps zmm19, zmm10, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vsubps zmm19, zmm10, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe1,0x2c,0x58,0x5c,0x19] + vsubps zmm19, zmm10, dword ptr [rcx]{1to16} + +// CHECK: vsubps zmm19, zmm10, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x2c,0x48,0x5c,0x5a,0x7f] + vsubps zmm19, zmm10, zmmword ptr [rdx + 8128] + +// CHECK: vsubps zmm19, zmm10, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x2c,0x48,0x5c,0x9a,0x00,0x20,0x00,0x00] + vsubps zmm19, zmm10, zmmword ptr [rdx + 8192] + +// CHECK: vsubps zmm19, zmm10, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x2c,0x48,0x5c,0x5a,0x80] + vsubps zmm19, zmm10, zmmword ptr [rdx - 8192] + +// CHECK: vsubps zmm19, zmm10, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x2c,0x48,0x5c,0x9a,0xc0,0xdf,0xff,0xff] + vsubps zmm19, zmm10, zmmword ptr [rdx - 8256] + +// CHECK: vsubps zmm19, zmm10, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe1,0x2c,0x58,0x5c,0x5a,0x7f] + vsubps zmm19, zmm10, dword ptr [rdx + 508]{1to16} + +// CHECK: vsubps zmm19, zmm10, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x2c,0x58,0x5c,0x9a,0x00,0x02,0x00,0x00] + vsubps zmm19, zmm10, dword ptr [rdx + 512]{1to16} + +// CHECK: vsubps zmm19, zmm10, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe1,0x2c,0x58,0x5c,0x5a,0x80] + vsubps zmm19, zmm10, dword ptr [rdx - 512]{1to16} + +// CHECK: vsubps zmm19, zmm10, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe1,0x2c,0x58,0x5c,0x9a,0xfc,0xfd,0xff,0xff] + vsubps zmm19, zmm10, dword ptr [rdx - 516]{1to16} + +// CHECK: vsubsd xmm24, xmm23, xmm13 +// CHECK: encoding: [0x62,0x41,0xc7,0x00,0x5c,0xc5] + vsubsd xmm24, xmm23, xmm13 + +// CHECK: vsubsd xmm24 {k7}, xmm23, xmm13 +// CHECK: encoding: [0x62,0x41,0xc7,0x07,0x5c,0xc5] + vsubsd xmm24 {k7}, xmm23, xmm13 + +// CHECK: vsubsd xmm24 {k7} {z}, xmm23, xmm13 +// CHECK: encoding: [0x62,0x41,0xc7,0x87,0x5c,0xc5] + vsubsd xmm24 {k7} {z}, xmm23, xmm13 + +// CHECK: vsubsd xmm24, xmm23, xmm13, {rn-sae} +// CHECK: encoding: [0x62,0x41,0xc7,0x10,0x5c,0xc5] + vsubsd xmm24, xmm23, xmm13, {rn-sae} + +// CHECK: vsubsd xmm24, xmm23, xmm13, {ru-sae} +// CHECK: encoding: [0x62,0x41,0xc7,0x50,0x5c,0xc5] + vsubsd xmm24, xmm23, xmm13, {ru-sae} + +// CHECK: vsubsd xmm24, xmm23, xmm13, {rd-sae} +// CHECK: encoding: [0x62,0x41,0xc7,0x30,0x5c,0xc5] + vsubsd xmm24, xmm23, xmm13, {rd-sae} + +// CHECK: vsubsd xmm24, xmm23, xmm13, {rz-sae} +// CHECK: encoding: [0x62,0x41,0xc7,0x70,0x5c,0xc5] + vsubsd xmm24, xmm23, xmm13, {rz-sae} + +// CHECK: vsubsd xmm24, xmm23, qword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0xc7,0x00,0x5c,0x01] + vsubsd xmm24, xmm23, qword ptr [rcx] + +// CHECK: vsubsd xmm24, xmm23, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0xc7,0x00,0x5c,0x84,0xf0,0x34,0x12,0x00,0x00] + vsubsd xmm24, xmm23, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vsubsd xmm24, xmm23, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x61,0xc7,0x00,0x5c,0x42,0x7f] + vsubsd xmm24, xmm23, qword ptr [rdx + 1016] + +// CHECK: vsubsd xmm24, xmm23, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x61,0xc7,0x00,0x5c,0x82,0x00,0x04,0x00,0x00] + vsubsd xmm24, xmm23, qword ptr [rdx + 1024] + +// CHECK: vsubsd xmm24, xmm23, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x61,0xc7,0x00,0x5c,0x42,0x80] + vsubsd xmm24, xmm23, qword ptr [rdx - 1024] + +// CHECK: vsubsd xmm24, xmm23, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x61,0xc7,0x00,0x5c,0x82,0xf8,0xfb,0xff,0xff] + vsubsd xmm24, xmm23, qword ptr [rdx - 1032] + +// CHECK: vsubss xmm27, xmm20, xmm16 +// CHECK: encoding: [0x62,0x21,0x5e,0x00,0x5c,0xd8] + vsubss xmm27, xmm20, xmm16 + +// CHECK: vsubss xmm27 {k6}, xmm20, xmm16 +// CHECK: encoding: [0x62,0x21,0x5e,0x06,0x5c,0xd8] + vsubss xmm27 {k6}, xmm20, xmm16 + +// CHECK: vsubss xmm27 {k6} {z}, xmm20, xmm16 +// CHECK: encoding: [0x62,0x21,0x5e,0x86,0x5c,0xd8] + vsubss xmm27 {k6} {z}, xmm20, xmm16 + +// CHECK: vsubss xmm27, xmm20, xmm16, {rn-sae} +// CHECK: encoding: [0x62,0x21,0x5e,0x10,0x5c,0xd8] + vsubss xmm27, xmm20, xmm16, {rn-sae} + +// CHECK: vsubss xmm27, xmm20, xmm16, {ru-sae} +// CHECK: encoding: [0x62,0x21,0x5e,0x50,0x5c,0xd8] + vsubss xmm27, xmm20, xmm16, {ru-sae} + +// CHECK: vsubss xmm27, xmm20, xmm16, {rd-sae} +// CHECK: encoding: [0x62,0x21,0x5e,0x30,0x5c,0xd8] + vsubss xmm27, xmm20, xmm16, {rd-sae} + +// CHECK: vsubss xmm27, xmm20, xmm16, {rz-sae} +// CHECK: encoding: [0x62,0x21,0x5e,0x70,0x5c,0xd8] + vsubss xmm27, xmm20, xmm16, {rz-sae} + +// CHECK: vsubss xmm27, xmm20, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x5e,0x00,0x5c,0x19] + vsubss xmm27, xmm20, dword ptr [rcx] + +// CHECK: vsubss xmm27, xmm20, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x5e,0x00,0x5c,0x9c,0xf0,0x34,0x12,0x00,0x00] + vsubss xmm27, xmm20, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vsubss xmm27, xmm20, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x5e,0x00,0x5c,0x5a,0x7f] + vsubss xmm27, xmm20, dword ptr [rdx + 508] + +// CHECK: vsubss xmm27, xmm20, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x5e,0x00,0x5c,0x9a,0x00,0x02,0x00,0x00] + vsubss xmm27, xmm20, dword ptr [rdx + 512] + +// CHECK: vsubss xmm27, xmm20, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x5e,0x00,0x5c,0x5a,0x80] + vsubss xmm27, xmm20, dword ptr [rdx - 512] + +// CHECK: vsubss xmm27, xmm20, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x5e,0x00,0x5c,0x9a,0xfc,0xfd,0xff,0xff] + vsubss xmm27, xmm20, dword ptr [rdx - 516] + +// CHECK: vucomisd xmm21, xmm19 +// CHECK: encoding: [0x62,0xa1,0xfd,0x08,0x2e,0xeb] + vucomisd xmm21, xmm19 + +// CHECK: vucomisd xmm21, xmm19, {sae} +// CHECK: encoding: [0x62,0xa1,0xfd,0x18,0x2e,0xeb] + vucomisd xmm21, xmm19, {sae} + +// CHECK: vucomisd xmm21, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2e,0x29] + vucomisd xmm21, qword ptr [rcx] + +// CHECK: vucomisd xmm21, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xfd,0x08,0x2e,0xac,0xf0,0x34,0x12,0x00,0x00] + vucomisd xmm21, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vucomisd xmm21, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2e,0x6a,0x7f] + vucomisd xmm21, qword ptr [rdx + 1016] + +// CHECK: vucomisd xmm21, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2e,0xaa,0x00,0x04,0x00,0x00] + vucomisd xmm21, qword ptr [rdx + 1024] + +// CHECK: vucomisd xmm21, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2e,0x6a,0x80] + vucomisd xmm21, qword ptr [rdx - 1024] + +// CHECK: vucomisd xmm21, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x2e,0xaa,0xf8,0xfb,0xff,0xff] + vucomisd xmm21, qword ptr [rdx - 1032] + +// CHECK: vucomiss xmm27, xmm29 +// CHECK: encoding: [0x62,0x01,0x7c,0x08,0x2e,0xdd] + vucomiss xmm27, xmm29 + +// CHECK: vucomiss xmm27, xmm29, {sae} +// CHECK: encoding: [0x62,0x01,0x7c,0x18,0x2e,0xdd] + vucomiss xmm27, xmm29, {sae} + +// CHECK: vucomiss xmm27, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x2e,0x19] + vucomiss xmm27, dword ptr [rcx] + +// CHECK: vucomiss xmm27, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x7c,0x08,0x2e,0x9c,0xf0,0x34,0x12,0x00,0x00] + vucomiss xmm27, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vucomiss xmm27, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x2e,0x5a,0x7f] + vucomiss xmm27, dword ptr [rdx + 508] + +// CHECK: vucomiss xmm27, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x2e,0x9a,0x00,0x02,0x00,0x00] + vucomiss xmm27, dword ptr [rdx + 512] + +// CHECK: vucomiss xmm27, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x2e,0x5a,0x80] + vucomiss xmm27, dword ptr [rdx - 512] + +// CHECK: vucomiss xmm27, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x7c,0x08,0x2e,0x9a,0xfc,0xfd,0xff,0xff] + vucomiss xmm27, dword ptr [rdx - 516] + +// CHECK: vunpckhpd zmm6, zmm23, zmm12 +// CHECK: encoding: [0x62,0xd1,0xc5,0x40,0x15,0xf4] + vunpckhpd zmm6, zmm23, zmm12 + +// CHECK: vunpckhpd zmm6 {k7}, zmm23, zmm12 +// CHECK: encoding: [0x62,0xd1,0xc5,0x47,0x15,0xf4] + vunpckhpd zmm6 {k7}, zmm23, zmm12 + +// CHECK: vunpckhpd zmm6 {k7} {z}, zmm23, zmm12 +// CHECK: encoding: [0x62,0xd1,0xc5,0xc7,0x15,0xf4] + vunpckhpd zmm6 {k7} {z}, zmm23, zmm12 + +// CHECK: vunpckhpd zmm6, zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0x15,0x31] + vunpckhpd zmm6, zmm23, zmmword ptr [rcx] + +// CHECK: vunpckhpd zmm6, zmm23, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xc5,0x40,0x15,0xb4,0xf0,0x34,0x12,0x00,0x00] + vunpckhpd zmm6, zmm23, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vunpckhpd zmm6, zmm23, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0x15,0x31] + vunpckhpd zmm6, zmm23, qword ptr [rcx]{1to8} + +// CHECK: vunpckhpd zmm6, zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0x15,0x72,0x7f] + vunpckhpd zmm6, zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vunpckhpd zmm6, zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0x15,0xb2,0x00,0x20,0x00,0x00] + vunpckhpd zmm6, zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vunpckhpd zmm6, zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0x15,0x72,0x80] + vunpckhpd zmm6, zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vunpckhpd zmm6, zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0xc5,0x40,0x15,0xb2,0xc0,0xdf,0xff,0xff] + vunpckhpd zmm6, zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vunpckhpd zmm6, zmm23, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0x15,0x72,0x7f] + vunpckhpd zmm6, zmm23, qword ptr [rdx + 1016]{1to8} + +// CHECK: vunpckhpd zmm6, zmm23, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0x15,0xb2,0x00,0x04,0x00,0x00] + vunpckhpd zmm6, zmm23, qword ptr [rdx + 1024]{1to8} + +// CHECK: vunpckhpd zmm6, zmm23, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0x15,0x72,0x80] + vunpckhpd zmm6, zmm23, qword ptr [rdx - 1024]{1to8} + +// CHECK: vunpckhpd zmm6, zmm23, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf1,0xc5,0x50,0x15,0xb2,0xf8,0xfb,0xff,0xff] + vunpckhpd zmm6, zmm23, qword ptr [rdx - 1032]{1to8} + +// CHECK: vunpckhps zmm29, zmm2, zmm4 +// CHECK: encoding: [0x62,0x61,0x6c,0x48,0x15,0xec] + vunpckhps zmm29, zmm2, zmm4 + +// CHECK: vunpckhps zmm29 {k4}, zmm2, zmm4 +// CHECK: encoding: [0x62,0x61,0x6c,0x4c,0x15,0xec] + vunpckhps zmm29 {k4}, zmm2, zmm4 + +// CHECK: vunpckhps zmm29 {k4} {z}, zmm2, zmm4 +// CHECK: encoding: [0x62,0x61,0x6c,0xcc,0x15,0xec] + vunpckhps zmm29 {k4} {z}, zmm2, zmm4 + +// CHECK: vunpckhps zmm29, zmm2, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x6c,0x48,0x15,0x29] + vunpckhps zmm29, zmm2, zmmword ptr [rcx] + +// CHECK: vunpckhps zmm29, zmm2, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x6c,0x48,0x15,0xac,0xf0,0x34,0x12,0x00,0x00] + vunpckhps zmm29, zmm2, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vunpckhps zmm29, zmm2, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x6c,0x58,0x15,0x29] + vunpckhps zmm29, zmm2, dword ptr [rcx]{1to16} + +// CHECK: vunpckhps zmm29, zmm2, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x6c,0x48,0x15,0x6a,0x7f] + vunpckhps zmm29, zmm2, zmmword ptr [rdx + 8128] + +// CHECK: vunpckhps zmm29, zmm2, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x6c,0x48,0x15,0xaa,0x00,0x20,0x00,0x00] + vunpckhps zmm29, zmm2, zmmword ptr [rdx + 8192] + +// CHECK: vunpckhps zmm29, zmm2, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x6c,0x48,0x15,0x6a,0x80] + vunpckhps zmm29, zmm2, zmmword ptr [rdx - 8192] + +// CHECK: vunpckhps zmm29, zmm2, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x6c,0x48,0x15,0xaa,0xc0,0xdf,0xff,0xff] + vunpckhps zmm29, zmm2, zmmword ptr [rdx - 8256] + +// CHECK: vunpckhps zmm29, zmm2, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x6c,0x58,0x15,0x6a,0x7f] + vunpckhps zmm29, zmm2, dword ptr [rdx + 508]{1to16} + +// CHECK: vunpckhps zmm29, zmm2, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x6c,0x58,0x15,0xaa,0x00,0x02,0x00,0x00] + vunpckhps zmm29, zmm2, dword ptr [rdx + 512]{1to16} + +// CHECK: vunpckhps zmm29, zmm2, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x6c,0x58,0x15,0x6a,0x80] + vunpckhps zmm29, zmm2, dword ptr [rdx - 512]{1to16} + +// CHECK: vunpckhps zmm29, zmm2, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x6c,0x58,0x15,0xaa,0xfc,0xfd,0xff,0xff] + vunpckhps zmm29, zmm2, dword ptr [rdx - 516]{1to16} + +// CHECK: vunpcklpd zmm18, zmm28, zmm8 +// CHECK: encoding: [0x62,0xc1,0x9d,0x40,0x14,0xd0] + vunpcklpd zmm18, zmm28, zmm8 + +// CHECK: vunpcklpd zmm18 {k1}, zmm28, zmm8 +// CHECK: encoding: [0x62,0xc1,0x9d,0x41,0x14,0xd0] + vunpcklpd zmm18 {k1}, zmm28, zmm8 + +// CHECK: vunpcklpd zmm18 {k1} {z}, zmm28, zmm8 +// CHECK: encoding: [0x62,0xc1,0x9d,0xc1,0x14,0xd0] + vunpcklpd zmm18 {k1} {z}, zmm28, zmm8 + +// CHECK: vunpcklpd zmm18, zmm28, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x14,0x11] + vunpcklpd zmm18, zmm28, zmmword ptr [rcx] + +// CHECK: vunpcklpd zmm18, zmm28, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0x9d,0x40,0x14,0x94,0xf0,0x34,0x12,0x00,0x00] + vunpcklpd zmm18, zmm28, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vunpcklpd zmm18, zmm28, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x14,0x11] + vunpcklpd zmm18, zmm28, qword ptr [rcx]{1to8} + +// CHECK: vunpcklpd zmm18, zmm28, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x14,0x52,0x7f] + vunpcklpd zmm18, zmm28, zmmword ptr [rdx + 8128] + +// CHECK: vunpcklpd zmm18, zmm28, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x14,0x92,0x00,0x20,0x00,0x00] + vunpcklpd zmm18, zmm28, zmmword ptr [rdx + 8192] + +// CHECK: vunpcklpd zmm18, zmm28, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x14,0x52,0x80] + vunpcklpd zmm18, zmm28, zmmword ptr [rdx - 8192] + +// CHECK: vunpcklpd zmm18, zmm28, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x14,0x92,0xc0,0xdf,0xff,0xff] + vunpcklpd zmm18, zmm28, zmmword ptr [rdx - 8256] + +// CHECK: vunpcklpd zmm18, zmm28, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x14,0x52,0x7f] + vunpcklpd zmm18, zmm28, qword ptr [rdx + 1016]{1to8} + +// CHECK: vunpcklpd zmm18, zmm28, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x14,0x92,0x00,0x04,0x00,0x00] + vunpcklpd zmm18, zmm28, qword ptr [rdx + 1024]{1to8} + +// CHECK: vunpcklpd zmm18, zmm28, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x14,0x52,0x80] + vunpcklpd zmm18, zmm28, qword ptr [rdx - 1024]{1to8} + +// CHECK: vunpcklpd zmm18, zmm28, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0x9d,0x50,0x14,0x92,0xf8,0xfb,0xff,0xff] + vunpcklpd zmm18, zmm28, qword ptr [rdx - 1032]{1to8} + +// CHECK: vunpcklps zmm25, zmm14, zmm6 +// CHECK: encoding: [0x62,0x61,0x0c,0x48,0x14,0xce] + vunpcklps zmm25, zmm14, zmm6 + +// CHECK: vunpcklps zmm25 {k6}, zmm14, zmm6 +// CHECK: encoding: [0x62,0x61,0x0c,0x4e,0x14,0xce] + vunpcklps zmm25 {k6}, zmm14, zmm6 + +// CHECK: vunpcklps zmm25 {k6} {z}, zmm14, zmm6 +// CHECK: encoding: [0x62,0x61,0x0c,0xce,0x14,0xce] + vunpcklps zmm25 {k6} {z}, zmm14, zmm6 + +// CHECK: vunpcklps zmm25, zmm14, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x0c,0x48,0x14,0x09] + vunpcklps zmm25, zmm14, zmmword ptr [rcx] + +// CHECK: vunpcklps zmm25, zmm14, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x0c,0x48,0x14,0x8c,0xf0,0x34,0x12,0x00,0x00] + vunpcklps zmm25, zmm14, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vunpcklps zmm25, zmm14, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x61,0x0c,0x58,0x14,0x09] + vunpcklps zmm25, zmm14, dword ptr [rcx]{1to16} + +// CHECK: vunpcklps zmm25, zmm14, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x61,0x0c,0x48,0x14,0x4a,0x7f] + vunpcklps zmm25, zmm14, zmmword ptr [rdx + 8128] + +// CHECK: vunpcklps zmm25, zmm14, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x61,0x0c,0x48,0x14,0x8a,0x00,0x20,0x00,0x00] + vunpcklps zmm25, zmm14, zmmword ptr [rdx + 8192] + +// CHECK: vunpcklps zmm25, zmm14, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x61,0x0c,0x48,0x14,0x4a,0x80] + vunpcklps zmm25, zmm14, zmmword ptr [rdx - 8192] + +// CHECK: vunpcklps zmm25, zmm14, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x61,0x0c,0x48,0x14,0x8a,0xc0,0xdf,0xff,0xff] + vunpcklps zmm25, zmm14, zmmword ptr [rdx - 8256] + +// CHECK: vunpcklps zmm25, zmm14, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x61,0x0c,0x58,0x14,0x4a,0x7f] + vunpcklps zmm25, zmm14, dword ptr [rdx + 508]{1to16} + +// CHECK: vunpcklps zmm25, zmm14, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x0c,0x58,0x14,0x8a,0x00,0x02,0x00,0x00] + vunpcklps zmm25, zmm14, dword ptr [rdx + 512]{1to16} + +// CHECK: vunpcklps zmm25, zmm14, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x61,0x0c,0x58,0x14,0x4a,0x80] + vunpcklps zmm25, zmm14, dword ptr [rdx - 512]{1to16} + +// CHECK: vunpcklps zmm25, zmm14, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x61,0x0c,0x58,0x14,0x8a,0xfc,0xfd,0xff,0xff] + vunpcklps zmm25, zmm14, dword ptr [rdx - 516]{1to16} + +// CHECK: vpternlogd zmm10, zmm13, zmm10, 171 +// CHECK: encoding: [0x62,0x53,0x15,0x48,0x25,0xd2,0xab] + vpternlogd zmm10, zmm13, zmm10, 171 + +// CHECK: vpternlogd zmm10 {k7}, zmm13, zmm10, 171 +// CHECK: encoding: [0x62,0x53,0x15,0x4f,0x25,0xd2,0xab] + vpternlogd zmm10 {k7}, zmm13, zmm10, 171 + +// CHECK: vpternlogd zmm10 {k7} {z}, zmm13, zmm10, 171 +// CHECK: encoding: [0x62,0x53,0x15,0xcf,0x25,0xd2,0xab] + vpternlogd zmm10 {k7} {z}, zmm13, zmm10, 171 + +// CHECK: vpternlogd zmm10, zmm13, zmm10, 123 +// CHECK: encoding: [0x62,0x53,0x15,0x48,0x25,0xd2,0x7b] + vpternlogd zmm10, zmm13, zmm10, 123 + +// CHECK: vpternlogd zmm10, zmm13, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0x15,0x48,0x25,0x11,0x7b] + vpternlogd zmm10, zmm13, zmmword ptr [rcx], 123 + +// CHECK: vpternlogd zmm10, zmm13, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x33,0x15,0x48,0x25,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpternlogd zmm10, zmm13, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpternlogd zmm10, zmm13, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x15,0x58,0x25,0x11,0x7b] + vpternlogd zmm10, zmm13, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpternlogd zmm10, zmm13, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0x15,0x48,0x25,0x52,0x7f,0x7b] + vpternlogd zmm10, zmm13, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpternlogd zmm10, zmm13, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0x15,0x48,0x25,0x92,0x00,0x20,0x00,0x00,0x7b] + vpternlogd zmm10, zmm13, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpternlogd zmm10, zmm13, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0x15,0x48,0x25,0x52,0x80,0x7b] + vpternlogd zmm10, zmm13, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpternlogd zmm10, zmm13, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0x15,0x48,0x25,0x92,0xc0,0xdf,0xff,0xff,0x7b] + vpternlogd zmm10, zmm13, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpternlogd zmm10, zmm13, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x15,0x58,0x25,0x52,0x7f,0x7b] + vpternlogd zmm10, zmm13, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpternlogd zmm10, zmm13, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x15,0x58,0x25,0x92,0x00,0x02,0x00,0x00,0x7b] + vpternlogd zmm10, zmm13, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpternlogd zmm10, zmm13, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x15,0x58,0x25,0x52,0x80,0x7b] + vpternlogd zmm10, zmm13, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpternlogd zmm10, zmm13, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x73,0x15,0x58,0x25,0x92,0xfc,0xfd,0xff,0xff,0x7b] + vpternlogd zmm10, zmm13, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpternlogq zmm16, zmm12, zmm13, 171 +// CHECK: encoding: [0x62,0xc3,0x9d,0x48,0x25,0xc5,0xab] + vpternlogq zmm16, zmm12, zmm13, 171 + +// CHECK: vpternlogq zmm16 {k2}, zmm12, zmm13, 171 +// CHECK: encoding: [0x62,0xc3,0x9d,0x4a,0x25,0xc5,0xab] + vpternlogq zmm16 {k2}, zmm12, zmm13, 171 + +// CHECK: vpternlogq zmm16 {k2} {z}, zmm12, zmm13, 171 +// CHECK: encoding: [0x62,0xc3,0x9d,0xca,0x25,0xc5,0xab] + vpternlogq zmm16 {k2} {z}, zmm12, zmm13, 171 + +// CHECK: vpternlogq zmm16, zmm12, zmm13, 123 +// CHECK: encoding: [0x62,0xc3,0x9d,0x48,0x25,0xc5,0x7b] + vpternlogq zmm16, zmm12, zmm13, 123 + +// CHECK: vpternlogq zmm16, zmm12, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x48,0x25,0x01,0x7b] + vpternlogq zmm16, zmm12, zmmword ptr [rcx], 123 + +// CHECK: vpternlogq zmm16, zmm12, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xa3,0x9d,0x48,0x25,0x84,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpternlogq zmm16, zmm12, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpternlogq zmm16, zmm12, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x58,0x25,0x01,0x7b] + vpternlogq zmm16, zmm12, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpternlogq zmm16, zmm12, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x48,0x25,0x42,0x7f,0x7b] + vpternlogq zmm16, zmm12, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpternlogq zmm16, zmm12, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x48,0x25,0x82,0x00,0x20,0x00,0x00,0x7b] + vpternlogq zmm16, zmm12, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpternlogq zmm16, zmm12, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x48,0x25,0x42,0x80,0x7b] + vpternlogq zmm16, zmm12, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpternlogq zmm16, zmm12, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x48,0x25,0x82,0xc0,0xdf,0xff,0xff,0x7b] + vpternlogq zmm16, zmm12, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpternlogq zmm16, zmm12, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x58,0x25,0x42,0x7f,0x7b] + vpternlogq zmm16, zmm12, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpternlogq zmm16, zmm12, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x58,0x25,0x82,0x00,0x04,0x00,0x00,0x7b] + vpternlogq zmm16, zmm12, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpternlogq zmm16, zmm12, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x58,0x25,0x42,0x80,0x7b] + vpternlogq zmm16, zmm12, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpternlogq zmm16, zmm12, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xe3,0x9d,0x58,0x25,0x82,0xf8,0xfb,0xff,0xff,0x7b] + vpternlogq zmm16, zmm12, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpmovqb xmm23, zmm14 +// CHECK: encoding: [0x62,0x32,0x7e,0x48,0x32,0xf7] + vpmovqb xmm23, zmm14 + +// CHECK: vpmovqb xmm23 {k2}, zmm14 +// CHECK: encoding: [0x62,0x32,0x7e,0x4a,0x32,0xf7] + vpmovqb xmm23 {k2}, zmm14 + +// CHECK: vpmovqb xmm23 {k2} {z}, zmm14 +// CHECK: encoding: [0x62,0x32,0x7e,0xca,0x32,0xf7] + vpmovqb xmm23 {k2} {z}, zmm14 + +// CHECK: vpmovsqb xmm20, zmm25 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x22,0xcc] + vpmovsqb xmm20, zmm25 + +// CHECK: vpmovsqb xmm20 {k1}, zmm25 +// CHECK: encoding: [0x62,0x22,0x7e,0x49,0x22,0xcc] + vpmovsqb xmm20 {k1}, zmm25 + +// CHECK: vpmovsqb xmm20 {k1} {z}, zmm25 +// CHECK: encoding: [0x62,0x22,0x7e,0xc9,0x22,0xcc] + vpmovsqb xmm20 {k1} {z}, zmm25 + +// CHECK: vpmovusqb xmm8, zmm2 +// CHECK: encoding: [0x62,0xd2,0x7e,0x48,0x12,0xd0] + vpmovusqb xmm8, zmm2 + +// CHECK: vpmovusqb xmm8 {k4}, zmm2 +// CHECK: encoding: [0x62,0xd2,0x7e,0x4c,0x12,0xd0] + vpmovusqb xmm8 {k4}, zmm2 + +// CHECK: vpmovusqb xmm8 {k4} {z}, zmm2 +// CHECK: encoding: [0x62,0xd2,0x7e,0xcc,0x12,0xd0] + vpmovusqb xmm8 {k4} {z}, zmm2 + +// CHECK: vpmovqw xmm21, zmm19 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x34,0xdd] + vpmovqw xmm21, zmm19 + +// CHECK: vpmovqw xmm21 {k2}, zmm19 +// CHECK: encoding: [0x62,0xa2,0x7e,0x4a,0x34,0xdd] + vpmovqw xmm21 {k2}, zmm19 + +// CHECK: vpmovqw xmm21 {k2} {z}, zmm19 +// CHECK: encoding: [0x62,0xa2,0x7e,0xca,0x34,0xdd] + vpmovqw xmm21 {k2} {z}, zmm19 + +// CHECK: vpmovsqw xmm16, zmm4 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x24,0xe0] + vpmovsqw xmm16, zmm4 + +// CHECK: vpmovsqw xmm16 {k6}, zmm4 +// CHECK: encoding: [0x62,0xb2,0x7e,0x4e,0x24,0xe0] + vpmovsqw xmm16 {k6}, zmm4 + +// CHECK: vpmovsqw xmm16 {k6} {z}, zmm4 +// CHECK: encoding: [0x62,0xb2,0x7e,0xce,0x24,0xe0] + vpmovsqw xmm16 {k6} {z}, zmm4 + +// CHECK: vpmovusqw xmm29, zmm1 +// CHECK: encoding: [0x62,0x92,0x7e,0x48,0x14,0xcd] + vpmovusqw xmm29, zmm1 + +// CHECK: vpmovusqw xmm29 {k2}, zmm1 +// CHECK: encoding: [0x62,0x92,0x7e,0x4a,0x14,0xcd] + vpmovusqw xmm29 {k2}, zmm1 + +// CHECK: vpmovusqw xmm29 {k2} {z}, zmm1 +// CHECK: encoding: [0x62,0x92,0x7e,0xca,0x14,0xcd] + vpmovusqw xmm29 {k2} {z}, zmm1 + +// CHECK: vpmovqd ymm28, zmm29 +// CHECK: encoding: [0x62,0x02,0x7e,0x48,0x35,0xec] + vpmovqd ymm28, zmm29 + +// CHECK: vpmovqd ymm28 {k2}, zmm29 +// CHECK: encoding: [0x62,0x02,0x7e,0x4a,0x35,0xec] + vpmovqd ymm28 {k2}, zmm29 + +// CHECK: vpmovqd ymm28 {k2} {z}, zmm29 +// CHECK: encoding: [0x62,0x02,0x7e,0xca,0x35,0xec] + vpmovqd ymm28 {k2} {z}, zmm29 + +// CHECK: vpmovsqd ymm22, zmm9 +// CHECK: encoding: [0x62,0x32,0x7e,0x48,0x25,0xce] + vpmovsqd ymm22, zmm9 + +// CHECK: vpmovsqd ymm22 {k4}, zmm9 +// CHECK: encoding: [0x62,0x32,0x7e,0x4c,0x25,0xce] + vpmovsqd ymm22 {k4}, zmm9 + +// CHECK: vpmovsqd ymm22 {k4} {z}, zmm9 +// CHECK: encoding: [0x62,0x32,0x7e,0xcc,0x25,0xce] + vpmovsqd ymm22 {k4} {z}, zmm9 + +// CHECK: vpmovusqd ymm2, zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x15,0xd2] + vpmovusqd ymm2, zmm26 + +// CHECK: vpmovusqd ymm2 {k7}, zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0x4f,0x15,0xd2] + vpmovusqd ymm2 {k7}, zmm26 + +// CHECK: vpmovusqd ymm2 {k7} {z}, zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0xcf,0x15,0xd2] + vpmovusqd ymm2 {k7} {z}, zmm26 + +// CHECK: vpmovdb xmm1, zmm11 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x31,0xd9] + vpmovdb xmm1, zmm11 + +// CHECK: vpmovdb xmm1 {k7}, zmm11 +// CHECK: encoding: [0x62,0x72,0x7e,0x4f,0x31,0xd9] + vpmovdb xmm1 {k7}, zmm11 + +// CHECK: vpmovdb xmm1 {k7} {z}, zmm11 +// CHECK: encoding: [0x62,0x72,0x7e,0xcf,0x31,0xd9] + vpmovdb xmm1 {k7} {z}, zmm11 + +// CHECK: vpmovsdb xmm27, zmm1 +// CHECK: encoding: [0x62,0x92,0x7e,0x48,0x21,0xcb] + vpmovsdb xmm27, zmm1 + +// CHECK: vpmovsdb xmm27 {k7}, zmm1 +// CHECK: encoding: [0x62,0x92,0x7e,0x4f,0x21,0xcb] + vpmovsdb xmm27 {k7}, zmm1 + +// CHECK: vpmovsdb xmm27 {k7} {z}, zmm1 +// CHECK: encoding: [0x62,0x92,0x7e,0xcf,0x21,0xcb] + vpmovsdb xmm27 {k7} {z}, zmm1 + +// CHECK: vpmovusdb xmm3, zmm19 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x11,0xdb] + vpmovusdb xmm3, zmm19 + +// CHECK: vpmovusdb xmm3 {k2}, zmm19 +// CHECK: encoding: [0x62,0xe2,0x7e,0x4a,0x11,0xdb] + vpmovusdb xmm3 {k2}, zmm19 + +// CHECK: vpmovusdb xmm3 {k2} {z}, zmm19 +// CHECK: encoding: [0x62,0xe2,0x7e,0xca,0x11,0xdb] + vpmovusdb xmm3 {k2} {z}, zmm19 + +// CHECK: vpmovdw ymm9, zmm10 +// CHECK: encoding: [0x62,0x52,0x7e,0x48,0x33,0xd1] + vpmovdw ymm9, zmm10 + +// CHECK: vpmovdw ymm9 {k4}, zmm10 +// CHECK: encoding: [0x62,0x52,0x7e,0x4c,0x33,0xd1] + vpmovdw ymm9 {k4}, zmm10 + +// CHECK: vpmovdw ymm9 {k4} {z}, zmm10 +// CHECK: encoding: [0x62,0x52,0x7e,0xcc,0x33,0xd1] + vpmovdw ymm9 {k4} {z}, zmm10 + +// CHECK: vpmovsdw ymm24, zmm24 +// CHECK: encoding: [0x62,0x02,0x7e,0x48,0x23,0xc0] + vpmovsdw ymm24, zmm24 + +// CHECK: vpmovsdw ymm24 {k6}, zmm24 +// CHECK: encoding: [0x62,0x02,0x7e,0x4e,0x23,0xc0] + vpmovsdw ymm24 {k6}, zmm24 + +// CHECK: vpmovsdw ymm24 {k6} {z}, zmm24 +// CHECK: encoding: [0x62,0x02,0x7e,0xce,0x23,0xc0] + vpmovsdw ymm24 {k6} {z}, zmm24 + +// CHECK: vpmovusdw ymm15, zmm17 +// CHECK: encoding: [0x62,0xc2,0x7e,0x48,0x13,0xcf] + vpmovusdw ymm15, zmm17 + +// CHECK: vpmovusdw ymm15 {k7}, zmm17 +// CHECK: encoding: [0x62,0xc2,0x7e,0x4f,0x13,0xcf] + vpmovusdw ymm15 {k7}, zmm17 + +// CHECK: vpmovusdw ymm15 {k7} {z}, zmm17 +// CHECK: encoding: [0x62,0xc2,0x7e,0xcf,0x13,0xcf] + vpmovusdw ymm15 {k7} {z}, zmm17 + +// CHECK: vshuff32x4 zmm17, zmm11, zmm4, 171 +// CHECK: encoding: [0x62,0xe3,0x25,0x48,0x23,0xcc,0xab] + vshuff32x4 zmm17, zmm11, zmm4, 171 + +// CHECK: vshuff32x4 zmm17 {k6}, zmm11, zmm4, 171 +// CHECK: encoding: [0x62,0xe3,0x25,0x4e,0x23,0xcc,0xab] + vshuff32x4 zmm17 {k6}, zmm11, zmm4, 171 + +// CHECK: vshuff32x4 zmm17 {k6} {z}, zmm11, zmm4, 171 +// CHECK: encoding: [0x62,0xe3,0x25,0xce,0x23,0xcc,0xab] + vshuff32x4 zmm17 {k6} {z}, zmm11, zmm4, 171 + +// CHECK: vshuff32x4 zmm17, zmm11, zmm4, 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x48,0x23,0xcc,0x7b] + vshuff32x4 zmm17, zmm11, zmm4, 123 + +// CHECK: vshuff32x4 zmm17, zmm11, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x48,0x23,0x09,0x7b] + vshuff32x4 zmm17, zmm11, zmmword ptr [rcx], 123 + +// CHECK: vshuff32x4 zmm17, zmm11, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xa3,0x25,0x48,0x23,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vshuff32x4 zmm17, zmm11, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vshuff32x4 zmm17, zmm11, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x58,0x23,0x09,0x7b] + vshuff32x4 zmm17, zmm11, dword ptr [rcx]{1to16}, 123 + +// CHECK: vshuff32x4 zmm17, zmm11, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x48,0x23,0x4a,0x7f,0x7b] + vshuff32x4 zmm17, zmm11, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshuff32x4 zmm17, zmm11, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x48,0x23,0x8a,0x00,0x20,0x00,0x00,0x7b] + vshuff32x4 zmm17, zmm11, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshuff32x4 zmm17, zmm11, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x48,0x23,0x4a,0x80,0x7b] + vshuff32x4 zmm17, zmm11, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshuff32x4 zmm17, zmm11, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x48,0x23,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vshuff32x4 zmm17, zmm11, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshuff32x4 zmm17, zmm11, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x58,0x23,0x4a,0x7f,0x7b] + vshuff32x4 zmm17, zmm11, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vshuff32x4 zmm17, zmm11, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x58,0x23,0x8a,0x00,0x02,0x00,0x00,0x7b] + vshuff32x4 zmm17, zmm11, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vshuff32x4 zmm17, zmm11, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x58,0x23,0x4a,0x80,0x7b] + vshuff32x4 zmm17, zmm11, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vshuff32x4 zmm17, zmm11, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xe3,0x25,0x58,0x23,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + vshuff32x4 zmm17, zmm11, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vshuff64x2 zmm6, zmm12, zmm24, 171 +// CHECK: encoding: [0x62,0x93,0x9d,0x48,0x23,0xf0,0xab] + vshuff64x2 zmm6, zmm12, zmm24, 171 + +// CHECK: vshuff64x2 zmm6 {k3}, zmm12, zmm24, 171 +// CHECK: encoding: [0x62,0x93,0x9d,0x4b,0x23,0xf0,0xab] + vshuff64x2 zmm6 {k3}, zmm12, zmm24, 171 + +// CHECK: vshuff64x2 zmm6 {k3} {z}, zmm12, zmm24, 171 +// CHECK: encoding: [0x62,0x93,0x9d,0xcb,0x23,0xf0,0xab] + vshuff64x2 zmm6 {k3} {z}, zmm12, zmm24, 171 + +// CHECK: vshuff64x2 zmm6, zmm12, zmm24, 123 +// CHECK: encoding: [0x62,0x93,0x9d,0x48,0x23,0xf0,0x7b] + vshuff64x2 zmm6, zmm12, zmm24, 123 + +// CHECK: vshuff64x2 zmm6, zmm12, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x48,0x23,0x31,0x7b] + vshuff64x2 zmm6, zmm12, zmmword ptr [rcx], 123 + +// CHECK: vshuff64x2 zmm6, zmm12, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0x9d,0x48,0x23,0xb4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vshuff64x2 zmm6, zmm12, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vshuff64x2 zmm6, zmm12, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x58,0x23,0x31,0x7b] + vshuff64x2 zmm6, zmm12, qword ptr [rcx]{1to8}, 123 + +// CHECK: vshuff64x2 zmm6, zmm12, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x48,0x23,0x72,0x7f,0x7b] + vshuff64x2 zmm6, zmm12, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshuff64x2 zmm6, zmm12, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x48,0x23,0xb2,0x00,0x20,0x00,0x00,0x7b] + vshuff64x2 zmm6, zmm12, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshuff64x2 zmm6, zmm12, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x48,0x23,0x72,0x80,0x7b] + vshuff64x2 zmm6, zmm12, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshuff64x2 zmm6, zmm12, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x48,0x23,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vshuff64x2 zmm6, zmm12, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshuff64x2 zmm6, zmm12, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x58,0x23,0x72,0x7f,0x7b] + vshuff64x2 zmm6, zmm12, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vshuff64x2 zmm6, zmm12, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x58,0x23,0xb2,0x00,0x04,0x00,0x00,0x7b] + vshuff64x2 zmm6, zmm12, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vshuff64x2 zmm6, zmm12, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x58,0x23,0x72,0x80,0x7b] + vshuff64x2 zmm6, zmm12, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vshuff64x2 zmm6, zmm12, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf3,0x9d,0x58,0x23,0xb2,0xf8,0xfb,0xff,0xff,0x7b] + vshuff64x2 zmm6, zmm12, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vshufi32x4 zmm3, zmm24, zmm5, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x43,0xdd,0xab] + vshufi32x4 zmm3, zmm24, zmm5, 171 + +// CHECK: vshufi32x4 zmm3 {k4}, zmm24, zmm5, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0x44,0x43,0xdd,0xab] + vshufi32x4 zmm3 {k4}, zmm24, zmm5, 171 + +// CHECK: vshufi32x4 zmm3 {k4} {z}, zmm24, zmm5, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0xc4,0x43,0xdd,0xab] + vshufi32x4 zmm3 {k4} {z}, zmm24, zmm5, 171 + +// CHECK: vshufi32x4 zmm3, zmm24, zmm5, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x43,0xdd,0x7b] + vshufi32x4 zmm3, zmm24, zmm5, 123 + +// CHECK: vshufi32x4 zmm3, zmm24, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x43,0x19,0x7b] + vshufi32x4 zmm3, zmm24, zmmword ptr [rcx], 123 + +// CHECK: vshufi32x4 zmm3, zmm24, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0x3d,0x40,0x43,0x9c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vshufi32x4 zmm3, zmm24, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vshufi32x4 zmm3, zmm24, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x43,0x19,0x7b] + vshufi32x4 zmm3, zmm24, dword ptr [rcx]{1to16}, 123 + +// CHECK: vshufi32x4 zmm3, zmm24, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x43,0x5a,0x7f,0x7b] + vshufi32x4 zmm3, zmm24, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshufi32x4 zmm3, zmm24, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x43,0x9a,0x00,0x20,0x00,0x00,0x7b] + vshufi32x4 zmm3, zmm24, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshufi32x4 zmm3, zmm24, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x43,0x5a,0x80,0x7b] + vshufi32x4 zmm3, zmm24, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshufi32x4 zmm3, zmm24, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x40,0x43,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vshufi32x4 zmm3, zmm24, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshufi32x4 zmm3, zmm24, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x43,0x5a,0x7f,0x7b] + vshufi32x4 zmm3, zmm24, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vshufi32x4 zmm3, zmm24, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x43,0x9a,0x00,0x02,0x00,0x00,0x7b] + vshufi32x4 zmm3, zmm24, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vshufi32x4 zmm3, zmm24, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x43,0x5a,0x80,0x7b] + vshufi32x4 zmm3, zmm24, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vshufi32x4 zmm3, zmm24, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x50,0x43,0x9a,0xfc,0xfd,0xff,0xff,0x7b] + vshufi32x4 zmm3, zmm24, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vshufi64x2 zmm30, zmm14, zmm9, 171 +// CHECK: encoding: [0x62,0x43,0x8d,0x48,0x43,0xf1,0xab] + vshufi64x2 zmm30, zmm14, zmm9, 171 + +// CHECK: vshufi64x2 zmm30 {k1}, zmm14, zmm9, 171 +// CHECK: encoding: [0x62,0x43,0x8d,0x49,0x43,0xf1,0xab] + vshufi64x2 zmm30 {k1}, zmm14, zmm9, 171 + +// CHECK: vshufi64x2 zmm30 {k1} {z}, zmm14, zmm9, 171 +// CHECK: encoding: [0x62,0x43,0x8d,0xc9,0x43,0xf1,0xab] + vshufi64x2 zmm30 {k1} {z}, zmm14, zmm9, 171 + +// CHECK: vshufi64x2 zmm30, zmm14, zmm9, 123 +// CHECK: encoding: [0x62,0x43,0x8d,0x48,0x43,0xf1,0x7b] + vshufi64x2 zmm30, zmm14, zmm9, 123 + +// CHECK: vshufi64x2 zmm30, zmm14, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x48,0x43,0x31,0x7b] + vshufi64x2 zmm30, zmm14, zmmword ptr [rcx], 123 + +// CHECK: vshufi64x2 zmm30, zmm14, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0x8d,0x48,0x43,0xb4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vshufi64x2 zmm30, zmm14, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vshufi64x2 zmm30, zmm14, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x58,0x43,0x31,0x7b] + vshufi64x2 zmm30, zmm14, qword ptr [rcx]{1to8}, 123 + +// CHECK: vshufi64x2 zmm30, zmm14, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x48,0x43,0x72,0x7f,0x7b] + vshufi64x2 zmm30, zmm14, zmmword ptr [rdx + 8128], 123 + +// CHECK: vshufi64x2 zmm30, zmm14, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x48,0x43,0xb2,0x00,0x20,0x00,0x00,0x7b] + vshufi64x2 zmm30, zmm14, zmmword ptr [rdx + 8192], 123 + +// CHECK: vshufi64x2 zmm30, zmm14, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x48,0x43,0x72,0x80,0x7b] + vshufi64x2 zmm30, zmm14, zmmword ptr [rdx - 8192], 123 + +// CHECK: vshufi64x2 zmm30, zmm14, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x48,0x43,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vshufi64x2 zmm30, zmm14, zmmword ptr [rdx - 8256], 123 + +// CHECK: vshufi64x2 zmm30, zmm14, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x58,0x43,0x72,0x7f,0x7b] + vshufi64x2 zmm30, zmm14, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vshufi64x2 zmm30, zmm14, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x58,0x43,0xb2,0x00,0x04,0x00,0x00,0x7b] + vshufi64x2 zmm30, zmm14, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vshufi64x2 zmm30, zmm14, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x58,0x43,0x72,0x80,0x7b] + vshufi64x2 zmm30, zmm14, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vshufi64x2 zmm30, zmm14, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0x8d,0x58,0x43,0xb2,0xf8,0xfb,0xff,0xff,0x7b] + vshufi64x2 zmm30, zmm14, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpermq zmm18, zmm22, zmm19 +// CHECK: encoding: [0x62,0xa2,0xcd,0x40,0x36,0xd3] + vpermq zmm18, zmm22, zmm19 + +// CHECK: vpermq zmm18 {k7}, zmm22, zmm19 +// CHECK: encoding: [0x62,0xa2,0xcd,0x47,0x36,0xd3] + vpermq zmm18 {k7}, zmm22, zmm19 + +// CHECK: vpermq zmm18 {k7} {z}, zmm22, zmm19 +// CHECK: encoding: [0x62,0xa2,0xcd,0xc7,0x36,0xd3] + vpermq zmm18 {k7} {z}, zmm22, zmm19 + +// CHECK: vpermq zmm18, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x36,0x11] + vpermq zmm18, zmm22, zmmword ptr [rcx] + +// CHECK: vpermq zmm18, zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xcd,0x40,0x36,0x94,0xf0,0x34,0x12,0x00,0x00] + vpermq zmm18, zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermq zmm18, zmm22, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x36,0x11] + vpermq zmm18, zmm22, qword ptr [rcx]{1to8} + +// CHECK: vpermq zmm18, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x36,0x52,0x7f] + vpermq zmm18, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpermq zmm18, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x36,0x92,0x00,0x20,0x00,0x00] + vpermq zmm18, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpermq zmm18, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x36,0x52,0x80] + vpermq zmm18, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpermq zmm18, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x36,0x92,0xc0,0xdf,0xff,0xff] + vpermq zmm18, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpermq zmm18, zmm22, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x36,0x52,0x7f] + vpermq zmm18, zmm22, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermq zmm18, zmm22, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x36,0x92,0x00,0x04,0x00,0x00] + vpermq zmm18, zmm22, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermq zmm18, zmm22, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x36,0x52,0x80] + vpermq zmm18, zmm22, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermq zmm18, zmm22, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x36,0x92,0xf8,0xfb,0xff,0xff] + vpermq zmm18, zmm22, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermpd zmm27, zmm12, zmm2 +// CHECK: encoding: [0x62,0x62,0x9d,0x48,0x16,0xda] + vpermpd zmm27, zmm12, zmm2 + +// CHECK: vpermpd zmm27 {k3}, zmm12, zmm2 +// CHECK: encoding: [0x62,0x62,0x9d,0x4b,0x16,0xda] + vpermpd zmm27 {k3}, zmm12, zmm2 + +// CHECK: vpermpd zmm27 {k3} {z}, zmm12, zmm2 +// CHECK: encoding: [0x62,0x62,0x9d,0xcb,0x16,0xda] + vpermpd zmm27 {k3} {z}, zmm12, zmm2 + +// CHECK: vpermpd zmm27, zmm12, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x9d,0x48,0x16,0x19] + vpermpd zmm27, zmm12, zmmword ptr [rcx] + +// CHECK: vpermpd zmm27, zmm12, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x9d,0x48,0x16,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpermpd zmm27, zmm12, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermpd zmm27, zmm12, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0x9d,0x58,0x16,0x19] + vpermpd zmm27, zmm12, qword ptr [rcx]{1to8} + +// CHECK: vpermpd zmm27, zmm12, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x9d,0x48,0x16,0x5a,0x7f] + vpermpd zmm27, zmm12, zmmword ptr [rdx + 8128] + +// CHECK: vpermpd zmm27, zmm12, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x9d,0x48,0x16,0x9a,0x00,0x20,0x00,0x00] + vpermpd zmm27, zmm12, zmmword ptr [rdx + 8192] + +// CHECK: vpermpd zmm27, zmm12, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x9d,0x48,0x16,0x5a,0x80] + vpermpd zmm27, zmm12, zmmword ptr [rdx - 8192] + +// CHECK: vpermpd zmm27, zmm12, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x9d,0x48,0x16,0x9a,0xc0,0xdf,0xff,0xff] + vpermpd zmm27, zmm12, zmmword ptr [rdx - 8256] + +// CHECK: vpermpd zmm27, zmm12, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0x9d,0x58,0x16,0x5a,0x7f] + vpermpd zmm27, zmm12, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermpd zmm27, zmm12, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0x9d,0x58,0x16,0x9a,0x00,0x04,0x00,0x00] + vpermpd zmm27, zmm12, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermpd zmm27, zmm12, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0x9d,0x58,0x16,0x5a,0x80] + vpermpd zmm27, zmm12, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermpd zmm27, zmm12, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0x9d,0x58,0x16,0x9a,0xf8,0xfb,0xff,0xff] + vpermpd zmm27, zmm12, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermt2d zmm19, zmm15, zmm25 +// CHECK: encoding: [0x62,0x82,0x05,0x48,0x7e,0xd9] + vpermt2d zmm19, zmm15, zmm25 + +// CHECK: vpermt2d zmm19 {k2}, zmm15, zmm25 +// CHECK: encoding: [0x62,0x82,0x05,0x4a,0x7e,0xd9] + vpermt2d zmm19 {k2}, zmm15, zmm25 + +// CHECK: vpermt2d zmm19 {k2} {z}, zmm15, zmm25 +// CHECK: encoding: [0x62,0x82,0x05,0xca,0x7e,0xd9] + vpermt2d zmm19 {k2} {z}, zmm15, zmm25 + +// CHECK: vpermt2d zmm19, zmm15, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x05,0x48,0x7e,0x19] + vpermt2d zmm19, zmm15, zmmword ptr [rcx] + +// CHECK: vpermt2d zmm19, zmm15, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x05,0x48,0x7e,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpermt2d zmm19, zmm15, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermt2d zmm19, zmm15, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xe2,0x05,0x58,0x7e,0x19] + vpermt2d zmm19, zmm15, dword ptr [rcx]{1to16} + +// CHECK: vpermt2d zmm19, zmm15, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0x05,0x48,0x7e,0x5a,0x7f] + vpermt2d zmm19, zmm15, zmmword ptr [rdx + 8128] + +// CHECK: vpermt2d zmm19, zmm15, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0x05,0x48,0x7e,0x9a,0x00,0x20,0x00,0x00] + vpermt2d zmm19, zmm15, zmmword ptr [rdx + 8192] + +// CHECK: vpermt2d zmm19, zmm15, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0x05,0x48,0x7e,0x5a,0x80] + vpermt2d zmm19, zmm15, zmmword ptr [rdx - 8192] + +// CHECK: vpermt2d zmm19, zmm15, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0x05,0x48,0x7e,0x9a,0xc0,0xdf,0xff,0xff] + vpermt2d zmm19, zmm15, zmmword ptr [rdx - 8256] + +// CHECK: vpermt2d zmm19, zmm15, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xe2,0x05,0x58,0x7e,0x5a,0x7f] + vpermt2d zmm19, zmm15, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermt2d zmm19, zmm15, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x05,0x58,0x7e,0x9a,0x00,0x02,0x00,0x00] + vpermt2d zmm19, zmm15, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermt2d zmm19, zmm15, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xe2,0x05,0x58,0x7e,0x5a,0x80] + vpermt2d zmm19, zmm15, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermt2d zmm19, zmm15, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xe2,0x05,0x58,0x7e,0x9a,0xfc,0xfd,0xff,0xff] + vpermt2d zmm19, zmm15, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermt2q zmm2, zmm21, zmm4 +// CHECK: encoding: [0x62,0xf2,0xd5,0x40,0x7e,0xd4] + vpermt2q zmm2, zmm21, zmm4 + +// CHECK: vpermt2q zmm2 {k7}, zmm21, zmm4 +// CHECK: encoding: [0x62,0xf2,0xd5,0x47,0x7e,0xd4] + vpermt2q zmm2 {k7}, zmm21, zmm4 + +// CHECK: vpermt2q zmm2 {k7} {z}, zmm21, zmm4 +// CHECK: encoding: [0x62,0xf2,0xd5,0xc7,0x7e,0xd4] + vpermt2q zmm2 {k7} {z}, zmm21, zmm4 + +// CHECK: vpermt2q zmm2, zmm21, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xd5,0x40,0x7e,0x11] + vpermt2q zmm2, zmm21, zmmword ptr [rcx] + +// CHECK: vpermt2q zmm2, zmm21, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xd5,0x40,0x7e,0x94,0xf0,0x34,0x12,0x00,0x00] + vpermt2q zmm2, zmm21, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermt2q zmm2, zmm21, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xd5,0x50,0x7e,0x11] + vpermt2q zmm2, zmm21, qword ptr [rcx]{1to8} + +// CHECK: vpermt2q zmm2, zmm21, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xd5,0x40,0x7e,0x52,0x7f] + vpermt2q zmm2, zmm21, zmmword ptr [rdx + 8128] + +// CHECK: vpermt2q zmm2, zmm21, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xd5,0x40,0x7e,0x92,0x00,0x20,0x00,0x00] + vpermt2q zmm2, zmm21, zmmword ptr [rdx + 8192] + +// CHECK: vpermt2q zmm2, zmm21, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xd5,0x40,0x7e,0x52,0x80] + vpermt2q zmm2, zmm21, zmmword ptr [rdx - 8192] + +// CHECK: vpermt2q zmm2, zmm21, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xd5,0x40,0x7e,0x92,0xc0,0xdf,0xff,0xff] + vpermt2q zmm2, zmm21, zmmword ptr [rdx - 8256] + +// CHECK: vpermt2q zmm2, zmm21, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xd5,0x50,0x7e,0x52,0x7f] + vpermt2q zmm2, zmm21, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermt2q zmm2, zmm21, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xd5,0x50,0x7e,0x92,0x00,0x04,0x00,0x00] + vpermt2q zmm2, zmm21, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermt2q zmm2, zmm21, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xd5,0x50,0x7e,0x52,0x80] + vpermt2q zmm2, zmm21, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermt2q zmm2, zmm21, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xd5,0x50,0x7e,0x92,0xf8,0xfb,0xff,0xff] + vpermt2q zmm2, zmm21, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermt2ps zmm7, zmm15, zmm7 +// CHECK: encoding: [0x62,0xf2,0x05,0x48,0x7f,0xff] + vpermt2ps zmm7, zmm15, zmm7 + +// CHECK: vpermt2ps zmm7 {k7}, zmm15, zmm7 +// CHECK: encoding: [0x62,0xf2,0x05,0x4f,0x7f,0xff] + vpermt2ps zmm7 {k7}, zmm15, zmm7 + +// CHECK: vpermt2ps zmm7 {k7} {z}, zmm15, zmm7 +// CHECK: encoding: [0x62,0xf2,0x05,0xcf,0x7f,0xff] + vpermt2ps zmm7 {k7} {z}, zmm15, zmm7 + +// CHECK: vpermt2ps zmm7, zmm15, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x05,0x48,0x7f,0x39] + vpermt2ps zmm7, zmm15, zmmword ptr [rcx] + +// CHECK: vpermt2ps zmm7, zmm15, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x05,0x48,0x7f,0xbc,0xf0,0x34,0x12,0x00,0x00] + vpermt2ps zmm7, zmm15, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermt2ps zmm7, zmm15, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x05,0x58,0x7f,0x39] + vpermt2ps zmm7, zmm15, dword ptr [rcx]{1to16} + +// CHECK: vpermt2ps zmm7, zmm15, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x05,0x48,0x7f,0x7a,0x7f] + vpermt2ps zmm7, zmm15, zmmword ptr [rdx + 8128] + +// CHECK: vpermt2ps zmm7, zmm15, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x05,0x48,0x7f,0xba,0x00,0x20,0x00,0x00] + vpermt2ps zmm7, zmm15, zmmword ptr [rdx + 8192] + +// CHECK: vpermt2ps zmm7, zmm15, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x05,0x48,0x7f,0x7a,0x80] + vpermt2ps zmm7, zmm15, zmmword ptr [rdx - 8192] + +// CHECK: vpermt2ps zmm7, zmm15, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x05,0x48,0x7f,0xba,0xc0,0xdf,0xff,0xff] + vpermt2ps zmm7, zmm15, zmmword ptr [rdx - 8256] + +// CHECK: vpermt2ps zmm7, zmm15, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x05,0x58,0x7f,0x7a,0x7f] + vpermt2ps zmm7, zmm15, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermt2ps zmm7, zmm15, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x05,0x58,0x7f,0xba,0x00,0x02,0x00,0x00] + vpermt2ps zmm7, zmm15, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermt2ps zmm7, zmm15, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x05,0x58,0x7f,0x7a,0x80] + vpermt2ps zmm7, zmm15, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermt2ps zmm7, zmm15, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x05,0x58,0x7f,0xba,0xfc,0xfd,0xff,0xff] + vpermt2ps zmm7, zmm15, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermt2pd zmm12, zmm22, zmm25 +// CHECK: encoding: [0x62,0x12,0xcd,0x40,0x7f,0xe1] + vpermt2pd zmm12, zmm22, zmm25 + +// CHECK: vpermt2pd zmm12 {k1}, zmm22, zmm25 +// CHECK: encoding: [0x62,0x12,0xcd,0x41,0x7f,0xe1] + vpermt2pd zmm12 {k1}, zmm22, zmm25 + +// CHECK: vpermt2pd zmm12 {k1} {z}, zmm22, zmm25 +// CHECK: encoding: [0x62,0x12,0xcd,0xc1,0x7f,0xe1] + vpermt2pd zmm12 {k1} {z}, zmm22, zmm25 + +// CHECK: vpermt2pd zmm12, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0x7f,0x21] + vpermt2pd zmm12, zmm22, zmmword ptr [rcx] + +// CHECK: vpermt2pd zmm12, zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0xcd,0x40,0x7f,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpermt2pd zmm12, zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermt2pd zmm12, zmm22, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0x7f,0x21] + vpermt2pd zmm12, zmm22, qword ptr [rcx]{1to8} + +// CHECK: vpermt2pd zmm12, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0x7f,0x62,0x7f] + vpermt2pd zmm12, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpermt2pd zmm12, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0x7f,0xa2,0x00,0x20,0x00,0x00] + vpermt2pd zmm12, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpermt2pd zmm12, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0x7f,0x62,0x80] + vpermt2pd zmm12, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpermt2pd zmm12, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0xcd,0x40,0x7f,0xa2,0xc0,0xdf,0xff,0xff] + vpermt2pd zmm12, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpermt2pd zmm12, zmm22, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0x7f,0x62,0x7f] + vpermt2pd zmm12, zmm22, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermt2pd zmm12, zmm22, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0x7f,0xa2,0x00,0x04,0x00,0x00] + vpermt2pd zmm12, zmm22, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermt2pd zmm12, zmm22, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0x7f,0x62,0x80] + vpermt2pd zmm12, zmm22, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermt2pd zmm12, zmm22, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x72,0xcd,0x50,0x7f,0xa2,0xf8,0xfb,0xff,0xff] + vpermt2pd zmm12, zmm22, qword ptr [rdx - 1032]{1to8} + +// CHECK: valignq zmm25, zmm17, zmm16, 171 +// CHECK: encoding: [0x62,0x23,0xf5,0x40,0x03,0xc8,0xab] + valignq zmm25, zmm17, zmm16, 171 + +// CHECK: valignq zmm25 {k7}, zmm17, zmm16, 171 +// CHECK: encoding: [0x62,0x23,0xf5,0x47,0x03,0xc8,0xab] + valignq zmm25 {k7}, zmm17, zmm16, 171 + +// CHECK: valignq zmm25 {k7} {z}, zmm17, zmm16, 171 +// CHECK: encoding: [0x62,0x23,0xf5,0xc7,0x03,0xc8,0xab] + valignq zmm25 {k7} {z}, zmm17, zmm16, 171 + +// CHECK: valignq zmm25, zmm17, zmm16, 123 +// CHECK: encoding: [0x62,0x23,0xf5,0x40,0x03,0xc8,0x7b] + valignq zmm25, zmm17, zmm16, 123 + +// CHECK: valignq zmm25, zmm17, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x40,0x03,0x09,0x7b] + valignq zmm25, zmm17, zmmword ptr [rcx], 123 + +// CHECK: valignq zmm25, zmm17, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0xf5,0x40,0x03,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + valignq zmm25, zmm17, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: valignq zmm25, zmm17, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x50,0x03,0x09,0x7b] + valignq zmm25, zmm17, qword ptr [rcx]{1to8}, 123 + +// CHECK: valignq zmm25, zmm17, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x40,0x03,0x4a,0x7f,0x7b] + valignq zmm25, zmm17, zmmword ptr [rdx + 8128], 123 + +// CHECK: valignq zmm25, zmm17, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x40,0x03,0x8a,0x00,0x20,0x00,0x00,0x7b] + valignq zmm25, zmm17, zmmword ptr [rdx + 8192], 123 + +// CHECK: valignq zmm25, zmm17, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x40,0x03,0x4a,0x80,0x7b] + valignq zmm25, zmm17, zmmword ptr [rdx - 8192], 123 + +// CHECK: valignq zmm25, zmm17, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x40,0x03,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + valignq zmm25, zmm17, zmmword ptr [rdx - 8256], 123 + +// CHECK: valignq zmm25, zmm17, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x50,0x03,0x4a,0x7f,0x7b] + valignq zmm25, zmm17, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: valignq zmm25, zmm17, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x50,0x03,0x8a,0x00,0x04,0x00,0x00,0x7b] + valignq zmm25, zmm17, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: valignq zmm25, zmm17, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x50,0x03,0x4a,0x80,0x7b] + valignq zmm25, zmm17, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: valignq zmm25, zmm17, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x63,0xf5,0x50,0x03,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + valignq zmm25, zmm17, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vcvtsd2usi eax, xmm11 +// CHECK: encoding: [0x62,0xd1,0x7f,0x08,0x79,0xc3] + vcvtsd2usi eax, xmm11 + +// CHECK: vcvtsd2usi eax, xmm11, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0x7f,0x18,0x79,0xc3] + vcvtsd2usi eax, xmm11, {rn-sae} + +// CHECK: vcvtsd2usi eax, xmm11, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0x7f,0x58,0x79,0xc3] + vcvtsd2usi eax, xmm11, {ru-sae} + +// CHECK: vcvtsd2usi eax, xmm11, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0x7f,0x38,0x79,0xc3] + vcvtsd2usi eax, xmm11, {rd-sae} + +// CHECK: vcvtsd2usi eax, xmm11, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0x7f,0x78,0x79,0xc3] + vcvtsd2usi eax, xmm11, {rz-sae} + +// CHECK: vcvtsd2usi eax, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x01] + vcvtsd2usi eax, qword ptr [rcx] + +// CHECK: vcvtsd2usi eax, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x79,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtsd2usi eax, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsd2usi eax, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x42,0x7f] + vcvtsd2usi eax, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi eax, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x82,0x00,0x04,0x00,0x00] + vcvtsd2usi eax, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi eax, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x42,0x80] + vcvtsd2usi eax, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi eax, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x82,0xf8,0xfb,0xff,0xff] + vcvtsd2usi eax, qword ptr [rdx - 1032] + +// CHECK: vcvtsd2usi ebp, xmm11 +// CHECK: encoding: [0x62,0xd1,0x7f,0x08,0x79,0xeb] + vcvtsd2usi ebp, xmm11 + +// CHECK: vcvtsd2usi ebp, xmm11, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0x7f,0x18,0x79,0xeb] + vcvtsd2usi ebp, xmm11, {rn-sae} + +// CHECK: vcvtsd2usi ebp, xmm11, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0x7f,0x58,0x79,0xeb] + vcvtsd2usi ebp, xmm11, {ru-sae} + +// CHECK: vcvtsd2usi ebp, xmm11, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0x7f,0x38,0x79,0xeb] + vcvtsd2usi ebp, xmm11, {rd-sae} + +// CHECK: vcvtsd2usi ebp, xmm11, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0x7f,0x78,0x79,0xeb] + vcvtsd2usi ebp, xmm11, {rz-sae} + +// CHECK: vcvtsd2usi ebp, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x29] + vcvtsd2usi ebp, qword ptr [rcx] + +// CHECK: vcvtsd2usi ebp, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x79,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvtsd2usi ebp, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsd2usi ebp, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x6a,0x7f] + vcvtsd2usi ebp, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi ebp, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0xaa,0x00,0x04,0x00,0x00] + vcvtsd2usi ebp, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi ebp, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0x6a,0x80] + vcvtsd2usi ebp, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi ebp, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x79,0xaa,0xf8,0xfb,0xff,0xff] + vcvtsd2usi ebp, qword ptr [rdx - 1032] + +// CHECK: vcvtsd2usi r13d, xmm11 +// CHECK: encoding: [0x62,0x51,0x7f,0x08,0x79,0xeb] + vcvtsd2usi r13d, xmm11 + +// CHECK: vcvtsd2usi r13d, xmm11, {rn-sae} +// CHECK: encoding: [0x62,0x51,0x7f,0x18,0x79,0xeb] + vcvtsd2usi r13d, xmm11, {rn-sae} + +// CHECK: vcvtsd2usi r13d, xmm11, {ru-sae} +// CHECK: encoding: [0x62,0x51,0x7f,0x58,0x79,0xeb] + vcvtsd2usi r13d, xmm11, {ru-sae} + +// CHECK: vcvtsd2usi r13d, xmm11, {rd-sae} +// CHECK: encoding: [0x62,0x51,0x7f,0x38,0x79,0xeb] + vcvtsd2usi r13d, xmm11, {rd-sae} + +// CHECK: vcvtsd2usi r13d, xmm11, {rz-sae} +// CHECK: encoding: [0x62,0x51,0x7f,0x78,0x79,0xeb] + vcvtsd2usi r13d, xmm11, {rz-sae} + +// CHECK: vcvtsd2usi r13d, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0x29] + vcvtsd2usi r13d, qword ptr [rcx] + +// CHECK: vcvtsd2usi r13d, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x7f,0x08,0x79,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvtsd2usi r13d, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsd2usi r13d, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0x6a,0x7f] + vcvtsd2usi r13d, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi r13d, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0xaa,0x00,0x04,0x00,0x00] + vcvtsd2usi r13d, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi r13d, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0x6a,0x80] + vcvtsd2usi r13d, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi r13d, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x79,0xaa,0xf8,0xfb,0xff,0xff] + vcvtsd2usi r13d, qword ptr [rdx - 1032] + +// CHECK: vcvtsd2usi rax, xmm13 +// CHECK: encoding: [0x62,0xd1,0xff,0x08,0x79,0xc5] + vcvtsd2usi rax, xmm13 + +// CHECK: vcvtsd2usi rax, xmm13, {rn-sae} +// CHECK: encoding: [0x62,0xd1,0xff,0x18,0x79,0xc5] + vcvtsd2usi rax, xmm13, {rn-sae} + +// CHECK: vcvtsd2usi rax, xmm13, {ru-sae} +// CHECK: encoding: [0x62,0xd1,0xff,0x58,0x79,0xc5] + vcvtsd2usi rax, xmm13, {ru-sae} + +// CHECK: vcvtsd2usi rax, xmm13, {rd-sae} +// CHECK: encoding: [0x62,0xd1,0xff,0x38,0x79,0xc5] + vcvtsd2usi rax, xmm13, {rd-sae} + +// CHECK: vcvtsd2usi rax, xmm13, {rz-sae} +// CHECK: encoding: [0x62,0xd1,0xff,0x78,0x79,0xc5] + vcvtsd2usi rax, xmm13, {rz-sae} + +// CHECK: vcvtsd2usi rax, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x01] + vcvtsd2usi rax, qword ptr [rcx] + +// CHECK: vcvtsd2usi rax, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xff,0x08,0x79,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtsd2usi rax, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsd2usi rax, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x42,0x7f] + vcvtsd2usi rax, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi rax, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x82,0x00,0x04,0x00,0x00] + vcvtsd2usi rax, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi rax, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x42,0x80] + vcvtsd2usi rax, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi rax, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x79,0x82,0xf8,0xfb,0xff,0xff] + vcvtsd2usi rax, qword ptr [rdx - 1032] + +// CHECK: vcvtsd2usi r8, xmm13 +// CHECK: encoding: [0x62,0x51,0xff,0x08,0x79,0xc5] + vcvtsd2usi r8, xmm13 + +// CHECK: vcvtsd2usi r8, xmm13, {rn-sae} +// CHECK: encoding: [0x62,0x51,0xff,0x18,0x79,0xc5] + vcvtsd2usi r8, xmm13, {rn-sae} + +// CHECK: vcvtsd2usi r8, xmm13, {ru-sae} +// CHECK: encoding: [0x62,0x51,0xff,0x58,0x79,0xc5] + vcvtsd2usi r8, xmm13, {ru-sae} + +// CHECK: vcvtsd2usi r8, xmm13, {rd-sae} +// CHECK: encoding: [0x62,0x51,0xff,0x38,0x79,0xc5] + vcvtsd2usi r8, xmm13, {rd-sae} + +// CHECK: vcvtsd2usi r8, xmm13, {rz-sae} +// CHECK: encoding: [0x62,0x51,0xff,0x78,0x79,0xc5] + vcvtsd2usi r8, xmm13, {rz-sae} + +// CHECK: vcvtsd2usi r8, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x01] + vcvtsd2usi r8, qword ptr [rcx] + +// CHECK: vcvtsd2usi r8, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xff,0x08,0x79,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtsd2usi r8, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtsd2usi r8, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x42,0x7f] + vcvtsd2usi r8, qword ptr [rdx + 1016] + +// CHECK: vcvtsd2usi r8, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x82,0x00,0x04,0x00,0x00] + vcvtsd2usi r8, qword ptr [rdx + 1024] + +// CHECK: vcvtsd2usi r8, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x42,0x80] + vcvtsd2usi r8, qword ptr [rdx - 1024] + +// CHECK: vcvtsd2usi r8, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x79,0x82,0xf8,0xfb,0xff,0xff] + vcvtsd2usi r8, qword ptr [rdx - 1032] + +// CHECK: vcvtss2usi eax, xmm1 +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0xc1] + vcvtss2usi eax, xmm1 + +// CHECK: vcvtss2usi eax, xmm1, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x18,0x79,0xc1] + vcvtss2usi eax, xmm1, {rn-sae} + +// CHECK: vcvtss2usi eax, xmm1, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x58,0x79,0xc1] + vcvtss2usi eax, xmm1, {ru-sae} + +// CHECK: vcvtss2usi eax, xmm1, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x38,0x79,0xc1] + vcvtss2usi eax, xmm1, {rd-sae} + +// CHECK: vcvtss2usi eax, xmm1, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x78,0x79,0xc1] + vcvtss2usi eax, xmm1, {rz-sae} + +// CHECK: vcvtss2usi eax, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x01] + vcvtss2usi eax, dword ptr [rcx] + +// CHECK: vcvtss2usi eax, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x79,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtss2usi eax, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtss2usi eax, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x42,0x7f] + vcvtss2usi eax, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi eax, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x82,0x00,0x02,0x00,0x00] + vcvtss2usi eax, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi eax, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x42,0x80] + vcvtss2usi eax, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi eax, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x82,0xfc,0xfd,0xff,0xff] + vcvtss2usi eax, dword ptr [rdx - 516] + +// CHECK: vcvtss2usi ebp, xmm1 +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0xe9] + vcvtss2usi ebp, xmm1 + +// CHECK: vcvtss2usi ebp, xmm1, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x18,0x79,0xe9] + vcvtss2usi ebp, xmm1, {rn-sae} + +// CHECK: vcvtss2usi ebp, xmm1, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x58,0x79,0xe9] + vcvtss2usi ebp, xmm1, {ru-sae} + +// CHECK: vcvtss2usi ebp, xmm1, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x38,0x79,0xe9] + vcvtss2usi ebp, xmm1, {rd-sae} + +// CHECK: vcvtss2usi ebp, xmm1, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0x7e,0x78,0x79,0xe9] + vcvtss2usi ebp, xmm1, {rz-sae} + +// CHECK: vcvtss2usi ebp, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x29] + vcvtss2usi ebp, dword ptr [rcx] + +// CHECK: vcvtss2usi ebp, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x79,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvtss2usi ebp, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtss2usi ebp, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x6a,0x7f] + vcvtss2usi ebp, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi ebp, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0xaa,0x00,0x02,0x00,0x00] + vcvtss2usi ebp, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi ebp, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0x6a,0x80] + vcvtss2usi ebp, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi ebp, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x79,0xaa,0xfc,0xfd,0xff,0xff] + vcvtss2usi ebp, dword ptr [rdx - 516] + +// CHECK: vcvtss2usi r13d, xmm1 +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0xe9] + vcvtss2usi r13d, xmm1 + +// CHECK: vcvtss2usi r13d, xmm1, {rn-sae} +// CHECK: encoding: [0x62,0x71,0x7e,0x18,0x79,0xe9] + vcvtss2usi r13d, xmm1, {rn-sae} + +// CHECK: vcvtss2usi r13d, xmm1, {ru-sae} +// CHECK: encoding: [0x62,0x71,0x7e,0x58,0x79,0xe9] + vcvtss2usi r13d, xmm1, {ru-sae} + +// CHECK: vcvtss2usi r13d, xmm1, {rd-sae} +// CHECK: encoding: [0x62,0x71,0x7e,0x38,0x79,0xe9] + vcvtss2usi r13d, xmm1, {rd-sae} + +// CHECK: vcvtss2usi r13d, xmm1, {rz-sae} +// CHECK: encoding: [0x62,0x71,0x7e,0x78,0x79,0xe9] + vcvtss2usi r13d, xmm1, {rz-sae} + +// CHECK: vcvtss2usi r13d, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0x29] + vcvtss2usi r13d, dword ptr [rcx] + +// CHECK: vcvtss2usi r13d, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x7e,0x08,0x79,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvtss2usi r13d, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtss2usi r13d, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0x6a,0x7f] + vcvtss2usi r13d, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi r13d, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0xaa,0x00,0x02,0x00,0x00] + vcvtss2usi r13d, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi r13d, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0x6a,0x80] + vcvtss2usi r13d, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi r13d, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x79,0xaa,0xfc,0xfd,0xff,0xff] + vcvtss2usi r13d, dword ptr [rdx - 516] + +// CHECK: vcvtss2usi rax, xmm3 +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0xc3] + vcvtss2usi rax, xmm3 + +// CHECK: vcvtss2usi rax, xmm3, {rn-sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x18,0x79,0xc3] + vcvtss2usi rax, xmm3, {rn-sae} + +// CHECK: vcvtss2usi rax, xmm3, {ru-sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x58,0x79,0xc3] + vcvtss2usi rax, xmm3, {ru-sae} + +// CHECK: vcvtss2usi rax, xmm3, {rd-sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x38,0x79,0xc3] + vcvtss2usi rax, xmm3, {rd-sae} + +// CHECK: vcvtss2usi rax, xmm3, {rz-sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x78,0x79,0xc3] + vcvtss2usi rax, xmm3, {rz-sae} + +// CHECK: vcvtss2usi rax, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x01] + vcvtss2usi rax, dword ptr [rcx] + +// CHECK: vcvtss2usi rax, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xfe,0x08,0x79,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtss2usi rax, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtss2usi rax, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x42,0x7f] + vcvtss2usi rax, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi rax, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x82,0x00,0x02,0x00,0x00] + vcvtss2usi rax, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi rax, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x42,0x80] + vcvtss2usi rax, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi rax, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x79,0x82,0xfc,0xfd,0xff,0xff] + vcvtss2usi rax, dword ptr [rdx - 516] + +// CHECK: vcvtss2usi r8, xmm3 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0xc3] + vcvtss2usi r8, xmm3 + +// CHECK: vcvtss2usi r8, xmm3, {rn-sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x18,0x79,0xc3] + vcvtss2usi r8, xmm3, {rn-sae} + +// CHECK: vcvtss2usi r8, xmm3, {ru-sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x58,0x79,0xc3] + vcvtss2usi r8, xmm3, {ru-sae} + +// CHECK: vcvtss2usi r8, xmm3, {rd-sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x38,0x79,0xc3] + vcvtss2usi r8, xmm3, {rd-sae} + +// CHECK: vcvtss2usi r8, xmm3, {rz-sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x78,0x79,0xc3] + vcvtss2usi r8, xmm3, {rz-sae} + +// CHECK: vcvtss2usi r8, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x01] + vcvtss2usi r8, dword ptr [rcx] + +// CHECK: vcvtss2usi r8, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xfe,0x08,0x79,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvtss2usi r8, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtss2usi r8, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x42,0x7f] + vcvtss2usi r8, dword ptr [rdx + 508] + +// CHECK: vcvtss2usi r8, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x82,0x00,0x02,0x00,0x00] + vcvtss2usi r8, dword ptr [rdx + 512] + +// CHECK: vcvtss2usi r8, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x42,0x80] + vcvtss2usi r8, dword ptr [rdx - 512] + +// CHECK: vcvtss2usi r8, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x79,0x82,0xfc,0xfd,0xff,0xff] + vcvtss2usi r8, dword ptr [rdx - 516] + +// CHECK: vcvtusi2sd xmm26, xmm17, eax +// CHECK: encoding: [0x62,0x61,0x77,0x00,0x7b,0xd0] + vcvtusi2sd xmm26, xmm17, eax + +// CHECK: vcvtusi2sd xmm26, xmm17, ebp +// CHECK: encoding: [0x62,0x61,0x77,0x00,0x7b,0xd5] + vcvtusi2sd xmm26, xmm17, ebp + +// CHECK: vcvtusi2sd xmm26, xmm17, r13d +// CHECK: encoding: [0x62,0x41,0x77,0x00,0x7b,0xd5] + vcvtusi2sd xmm26, xmm17, r13d + +// CHECK: vcvtusi2sd xmm26, xmm17, dword ptr [rcx] +// CHECK: encoding: [0x62,0x61,0x77,0x00,0x7b,0x11] + vcvtusi2sd xmm26, xmm17, dword ptr [rcx] + +// CHECK: vcvtusi2sd xmm26, xmm17, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x21,0x77,0x00,0x7b,0x94,0xf0,0x34,0x12,0x00,0x00] + vcvtusi2sd xmm26, xmm17, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtusi2sd xmm26, xmm17, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x61,0x77,0x00,0x7b,0x52,0x7f] + vcvtusi2sd xmm26, xmm17, dword ptr [rdx + 508] + +// CHECK: vcvtusi2sd xmm26, xmm17, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x61,0x77,0x00,0x7b,0x92,0x00,0x02,0x00,0x00] + vcvtusi2sd xmm26, xmm17, dword ptr [rdx + 512] + +// CHECK: vcvtusi2sd xmm26, xmm17, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x61,0x77,0x00,0x7b,0x52,0x80] + vcvtusi2sd xmm26, xmm17, dword ptr [rdx - 512] + +// CHECK: vcvtusi2sd xmm26, xmm17, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x61,0x77,0x00,0x7b,0x92,0xfc,0xfd,0xff,0xff] + vcvtusi2sd xmm26, xmm17, dword ptr [rdx - 516] + +// CHECK: vcvtusi2sd xmm11, xmm6, rax +// CHECK: encoding: [0x62,0x71,0xcf,0x08,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, rax + +// CHECK: vcvtusi2sd xmm11, xmm6, {rn-sae}, rax +// CHECK: encoding: [0x62,0x71,0xcf,0x18,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, {rn-sae}, rax + +// CHECK: vcvtusi2sd xmm11, xmm6, {ru-sae}, rax +// CHECK: encoding: [0x62,0x71,0xcf,0x58,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, {ru-sae}, rax + +// CHECK: vcvtusi2sd xmm11, xmm6, {rd-sae}, rax +// CHECK: encoding: [0x62,0x71,0xcf,0x38,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, {rd-sae}, rax + +// CHECK: vcvtusi2sd xmm11, xmm6, {rz-sae}, rax +// CHECK: encoding: [0x62,0x71,0xcf,0x78,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, {rz-sae}, rax + +// CHECK: vcvtusi2sd xmm11, xmm6, r8 +// CHECK: encoding: [0x62,0x51,0xcf,0x08,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, r8 + +// CHECK: vcvtusi2sd xmm11, xmm6, {rn-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xcf,0x18,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, {rn-sae}, r8 + +// CHECK: vcvtusi2sd xmm11, xmm6, {ru-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xcf,0x58,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, {ru-sae}, r8 + +// CHECK: vcvtusi2sd xmm11, xmm6, {rd-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xcf,0x38,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, {rd-sae}, r8 + +// CHECK: vcvtusi2sd xmm11, xmm6, {rz-sae}, r8 +// CHECK: encoding: [0x62,0x51,0xcf,0x78,0x7b,0xd8] + vcvtusi2sd xmm11, xmm6, {rz-sae}, r8 + +// CHECK: vcvtusi2sd xmm11, xmm6, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xcf,0x08,0x7b,0x19] + vcvtusi2sd xmm11, xmm6, qword ptr [rcx] + +// CHECK: vcvtusi2sd xmm11, xmm6, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xcf,0x08,0x7b,0x9c,0xf0,0x34,0x12,0x00,0x00] + vcvtusi2sd xmm11, xmm6, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtusi2sd xmm11, xmm6, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0xcf,0x08,0x7b,0x5a,0x7f] + vcvtusi2sd xmm11, xmm6, qword ptr [rdx + 1016] + +// CHECK: vcvtusi2sd xmm11, xmm6, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0xcf,0x08,0x7b,0x9a,0x00,0x04,0x00,0x00] + vcvtusi2sd xmm11, xmm6, qword ptr [rdx + 1024] + +// CHECK: vcvtusi2sd xmm11, xmm6, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0xcf,0x08,0x7b,0x5a,0x80] + vcvtusi2sd xmm11, xmm6, qword ptr [rdx - 1024] + +// CHECK: vcvtusi2sd xmm11, xmm6, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0xcf,0x08,0x7b,0x9a,0xf8,0xfb,0xff,0xff] + vcvtusi2sd xmm11, xmm6, qword ptr [rdx - 1032] + +// CHECK: vcvtusi2ss xmm9, xmm7, eax +// CHECK: encoding: [0x62,0x71,0x46,0x08,0x7b,0xc8] + vcvtusi2ss xmm9, xmm7, eax + +// CHECK: vcvtusi2ss xmm9, xmm7, {rn-sae}, eax +// CHECK: encoding: [0x62,0x71,0x46,0x18,0x7b,0xc8] + vcvtusi2ss xmm9, xmm7, {rn-sae}, eax + +// CHECK: vcvtusi2ss xmm9, xmm7, {ru-sae}, eax +// CHECK: encoding: [0x62,0x71,0x46,0x58,0x7b,0xc8] + vcvtusi2ss xmm9, xmm7, {ru-sae}, eax + +// CHECK: vcvtusi2ss xmm9, xmm7, {rd-sae}, eax +// CHECK: encoding: [0x62,0x71,0x46,0x38,0x7b,0xc8] + vcvtusi2ss xmm9, xmm7, {rd-sae}, eax + +// CHECK: vcvtusi2ss xmm9, xmm7, {rz-sae}, eax +// CHECK: encoding: [0x62,0x71,0x46,0x78,0x7b,0xc8] + vcvtusi2ss xmm9, xmm7, {rz-sae}, eax + +// CHECK: vcvtusi2ss xmm9, xmm7, ebp +// CHECK: encoding: [0x62,0x71,0x46,0x08,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, ebp + +// CHECK: vcvtusi2ss xmm9, xmm7, {rn-sae}, ebp +// CHECK: encoding: [0x62,0x71,0x46,0x18,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, {rn-sae}, ebp + +// CHECK: vcvtusi2ss xmm9, xmm7, {ru-sae}, ebp +// CHECK: encoding: [0x62,0x71,0x46,0x58,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, {ru-sae}, ebp + +// CHECK: vcvtusi2ss xmm9, xmm7, {rd-sae}, ebp +// CHECK: encoding: [0x62,0x71,0x46,0x38,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, {rd-sae}, ebp + +// CHECK: vcvtusi2ss xmm9, xmm7, {rz-sae}, ebp +// CHECK: encoding: [0x62,0x71,0x46,0x78,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, {rz-sae}, ebp + +// CHECK: vcvtusi2ss xmm9, xmm7, r13d +// CHECK: encoding: [0x62,0x51,0x46,0x08,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, r13d + +// CHECK: vcvtusi2ss xmm9, xmm7, {rn-sae}, r13d +// CHECK: encoding: [0x62,0x51,0x46,0x18,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, {rn-sae}, r13d + +// CHECK: vcvtusi2ss xmm9, xmm7, {ru-sae}, r13d +// CHECK: encoding: [0x62,0x51,0x46,0x58,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, {ru-sae}, r13d + +// CHECK: vcvtusi2ss xmm9, xmm7, {rd-sae}, r13d +// CHECK: encoding: [0x62,0x51,0x46,0x38,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, {rd-sae}, r13d + +// CHECK: vcvtusi2ss xmm9, xmm7, {rz-sae}, r13d +// CHECK: encoding: [0x62,0x51,0x46,0x78,0x7b,0xcd] + vcvtusi2ss xmm9, xmm7, {rz-sae}, r13d + +// CHECK: vcvtusi2ss xmm9, xmm7, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x46,0x08,0x7b,0x09] + vcvtusi2ss xmm9, xmm7, dword ptr [rcx] + +// CHECK: vcvtusi2ss xmm9, xmm7, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x46,0x08,0x7b,0x8c,0xf0,0x34,0x12,0x00,0x00] + vcvtusi2ss xmm9, xmm7, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtusi2ss xmm9, xmm7, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0x46,0x08,0x7b,0x4a,0x7f] + vcvtusi2ss xmm9, xmm7, dword ptr [rdx + 508] + +// CHECK: vcvtusi2ss xmm9, xmm7, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0x46,0x08,0x7b,0x8a,0x00,0x02,0x00,0x00] + vcvtusi2ss xmm9, xmm7, dword ptr [rdx + 512] + +// CHECK: vcvtusi2ss xmm9, xmm7, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0x46,0x08,0x7b,0x4a,0x80] + vcvtusi2ss xmm9, xmm7, dword ptr [rdx - 512] + +// CHECK: vcvtusi2ss xmm9, xmm7, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0x46,0x08,0x7b,0x8a,0xfc,0xfd,0xff,0xff] + vcvtusi2ss xmm9, xmm7, dword ptr [rdx - 516] + +// CHECK: vcvtusi2ss xmm21, xmm10, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, rax + +// CHECK: vcvtusi2ss xmm21, xmm10, {rn-sae}, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x18,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, {rn-sae}, rax + +// CHECK: vcvtusi2ss xmm21, xmm10, {ru-sae}, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x58,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, {ru-sae}, rax + +// CHECK: vcvtusi2ss xmm21, xmm10, {rd-sae}, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x38,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, {rd-sae}, rax + +// CHECK: vcvtusi2ss xmm21, xmm10, {rz-sae}, rax +// CHECK: encoding: [0x62,0xe1,0xae,0x78,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, {rz-sae}, rax + +// CHECK: vcvtusi2ss xmm21, xmm10, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x08,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, r8 + +// CHECK: vcvtusi2ss xmm21, xmm10, {rn-sae}, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x18,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, {rn-sae}, r8 + +// CHECK: vcvtusi2ss xmm21, xmm10, {ru-sae}, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x58,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, {ru-sae}, r8 + +// CHECK: vcvtusi2ss xmm21, xmm10, {rd-sae}, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x38,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, {rd-sae}, r8 + +// CHECK: vcvtusi2ss xmm21, xmm10, {rz-sae}, r8 +// CHECK: encoding: [0x62,0xc1,0xae,0x78,0x7b,0xe8] + vcvtusi2ss xmm21, xmm10, {rz-sae}, r8 + +// CHECK: vcvtusi2ss xmm21, xmm10, qword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x7b,0x29] + vcvtusi2ss xmm21, xmm10, qword ptr [rcx] + +// CHECK: vcvtusi2ss xmm21, xmm10, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xae,0x08,0x7b,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvtusi2ss xmm21, xmm10, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvtusi2ss xmm21, xmm10, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x7b,0x6a,0x7f] + vcvtusi2ss xmm21, xmm10, qword ptr [rdx + 1016] + +// CHECK: vcvtusi2ss xmm21, xmm10, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x7b,0xaa,0x00,0x04,0x00,0x00] + vcvtusi2ss xmm21, xmm10, qword ptr [rdx + 1024] + +// CHECK: vcvtusi2ss xmm21, xmm10, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x7b,0x6a,0x80] + vcvtusi2ss xmm21, xmm10, qword ptr [rdx - 1024] + +// CHECK: vcvtusi2ss xmm21, xmm10, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xe1,0xae,0x08,0x7b,0xaa,0xf8,0xfb,0xff,0xff] + vcvtusi2ss xmm21, xmm10, qword ptr [rdx - 1032] + +// CHECK: vscalefpd zmm7, zmm4, zmm16 +// CHECK: encoding: [0x62,0xb2,0xdd,0x48,0x2c,0xf8] + vscalefpd zmm7, zmm4, zmm16 + +// CHECK: vscalefpd zmm7 {k5}, zmm4, zmm16 +// CHECK: encoding: [0x62,0xb2,0xdd,0x4d,0x2c,0xf8] + vscalefpd zmm7 {k5}, zmm4, zmm16 + +// CHECK: vscalefpd zmm7 {k5} {z}, zmm4, zmm16 +// CHECK: encoding: [0x62,0xb2,0xdd,0xcd,0x2c,0xf8] + vscalefpd zmm7 {k5} {z}, zmm4, zmm16 + +// CHECK: vscalefpd zmm7, zmm4, zmm16, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0xdd,0x18,0x2c,0xf8] + vscalefpd zmm7, zmm4, zmm16, {rn-sae} + +// CHECK: vscalefpd zmm7, zmm4, zmm16, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0xdd,0x58,0x2c,0xf8] + vscalefpd zmm7, zmm4, zmm16, {ru-sae} + +// CHECK: vscalefpd zmm7, zmm4, zmm16, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0xdd,0x38,0x2c,0xf8] + vscalefpd zmm7, zmm4, zmm16, {rd-sae} + +// CHECK: vscalefpd zmm7, zmm4, zmm16, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0xdd,0x78,0x2c,0xf8] + vscalefpd zmm7, zmm4, zmm16, {rz-sae} + +// CHECK: vscalefpd zmm7, zmm4, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0xdd,0x48,0x2c,0x39] + vscalefpd zmm7, zmm4, zmmword ptr [rcx] + +// CHECK: vscalefpd zmm7, zmm4, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0xdd,0x48,0x2c,0xbc,0xf0,0x34,0x12,0x00,0x00] + vscalefpd zmm7, zmm4, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vscalefpd zmm7, zmm4, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x58,0x2c,0x39] + vscalefpd zmm7, zmm4, qword ptr [rcx]{1to8} + +// CHECK: vscalefpd zmm7, zmm4, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0xdd,0x48,0x2c,0x7a,0x7f] + vscalefpd zmm7, zmm4, zmmword ptr [rdx + 8128] + +// CHECK: vscalefpd zmm7, zmm4, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0xdd,0x48,0x2c,0xba,0x00,0x20,0x00,0x00] + vscalefpd zmm7, zmm4, zmmword ptr [rdx + 8192] + +// CHECK: vscalefpd zmm7, zmm4, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0xdd,0x48,0x2c,0x7a,0x80] + vscalefpd zmm7, zmm4, zmmword ptr [rdx - 8192] + +// CHECK: vscalefpd zmm7, zmm4, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0xdd,0x48,0x2c,0xba,0xc0,0xdf,0xff,0xff] + vscalefpd zmm7, zmm4, zmmword ptr [rdx - 8256] + +// CHECK: vscalefpd zmm7, zmm4, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x58,0x2c,0x7a,0x7f] + vscalefpd zmm7, zmm4, qword ptr [rdx + 1016]{1to8} + +// CHECK: vscalefpd zmm7, zmm4, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x58,0x2c,0xba,0x00,0x04,0x00,0x00] + vscalefpd zmm7, zmm4, qword ptr [rdx + 1024]{1to8} + +// CHECK: vscalefpd zmm7, zmm4, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x58,0x2c,0x7a,0x80] + vscalefpd zmm7, zmm4, qword ptr [rdx - 1024]{1to8} + +// CHECK: vscalefpd zmm7, zmm4, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xf2,0xdd,0x58,0x2c,0xba,0xf8,0xfb,0xff,0xff] + vscalefpd zmm7, zmm4, qword ptr [rdx - 1032]{1to8} + +// CHECK: vscalefps zmm4, zmm11, zmm19 +// CHECK: encoding: [0x62,0xb2,0x25,0x48,0x2c,0xe3] + vscalefps zmm4, zmm11, zmm19 + +// CHECK: vscalefps zmm4 {k2}, zmm11, zmm19 +// CHECK: encoding: [0x62,0xb2,0x25,0x4a,0x2c,0xe3] + vscalefps zmm4 {k2}, zmm11, zmm19 + +// CHECK: vscalefps zmm4 {k2} {z}, zmm11, zmm19 +// CHECK: encoding: [0x62,0xb2,0x25,0xca,0x2c,0xe3] + vscalefps zmm4 {k2} {z}, zmm11, zmm19 + +// CHECK: vscalefps zmm4, zmm11, zmm19, {rn-sae} +// CHECK: encoding: [0x62,0xb2,0x25,0x18,0x2c,0xe3] + vscalefps zmm4, zmm11, zmm19, {rn-sae} + +// CHECK: vscalefps zmm4, zmm11, zmm19, {ru-sae} +// CHECK: encoding: [0x62,0xb2,0x25,0x58,0x2c,0xe3] + vscalefps zmm4, zmm11, zmm19, {ru-sae} + +// CHECK: vscalefps zmm4, zmm11, zmm19, {rd-sae} +// CHECK: encoding: [0x62,0xb2,0x25,0x38,0x2c,0xe3] + vscalefps zmm4, zmm11, zmm19, {rd-sae} + +// CHECK: vscalefps zmm4, zmm11, zmm19, {rz-sae} +// CHECK: encoding: [0x62,0xb2,0x25,0x78,0x2c,0xe3] + vscalefps zmm4, zmm11, zmm19, {rz-sae} + +// CHECK: vscalefps zmm4, zmm11, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x25,0x48,0x2c,0x21] + vscalefps zmm4, zmm11, zmmword ptr [rcx] + +// CHECK: vscalefps zmm4, zmm11, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x25,0x48,0x2c,0xa4,0xf0,0x34,0x12,0x00,0x00] + vscalefps zmm4, zmm11, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vscalefps zmm4, zmm11, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x25,0x58,0x2c,0x21] + vscalefps zmm4, zmm11, dword ptr [rcx]{1to16} + +// CHECK: vscalefps zmm4, zmm11, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x25,0x48,0x2c,0x62,0x7f] + vscalefps zmm4, zmm11, zmmword ptr [rdx + 8128] + +// CHECK: vscalefps zmm4, zmm11, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x25,0x48,0x2c,0xa2,0x00,0x20,0x00,0x00] + vscalefps zmm4, zmm11, zmmword ptr [rdx + 8192] + +// CHECK: vscalefps zmm4, zmm11, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x25,0x48,0x2c,0x62,0x80] + vscalefps zmm4, zmm11, zmmword ptr [rdx - 8192] + +// CHECK: vscalefps zmm4, zmm11, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x25,0x48,0x2c,0xa2,0xc0,0xdf,0xff,0xff] + vscalefps zmm4, zmm11, zmmword ptr [rdx - 8256] + +// CHECK: vscalefps zmm4, zmm11, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x25,0x58,0x2c,0x62,0x7f] + vscalefps zmm4, zmm11, dword ptr [rdx + 508]{1to16} + +// CHECK: vscalefps zmm4, zmm11, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x25,0x58,0x2c,0xa2,0x00,0x02,0x00,0x00] + vscalefps zmm4, zmm11, dword ptr [rdx + 512]{1to16} + +// CHECK: vscalefps zmm4, zmm11, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x25,0x58,0x2c,0x62,0x80] + vscalefps zmm4, zmm11, dword ptr [rdx - 512]{1to16} + +// CHECK: vscalefps zmm4, zmm11, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x25,0x58,0x2c,0xa2,0xfc,0xfd,0xff,0xff] + vscalefps zmm4, zmm11, dword ptr [rdx - 516]{1to16} + +// CHECK: vscalefsd xmm29, xmm19, xmm22 +// CHECK: encoding: [0x62,0x22,0xe5,0x00,0x2d,0xee] + vscalefsd xmm29, xmm19, xmm22 + +// CHECK: vscalefsd xmm29 {k4}, xmm19, xmm22 +// CHECK: encoding: [0x62,0x22,0xe5,0x04,0x2d,0xee] + vscalefsd xmm29 {k4}, xmm19, xmm22 + +// CHECK: vscalefsd xmm29 {k4} {z}, xmm19, xmm22 +// CHECK: encoding: [0x62,0x22,0xe5,0x84,0x2d,0xee] + vscalefsd xmm29 {k4} {z}, xmm19, xmm22 + +// CHECK: vscalefsd xmm29, xmm19, xmm22, {rn-sae} +// CHECK: encoding: [0x62,0x22,0xe5,0x10,0x2d,0xee] + vscalefsd xmm29, xmm19, xmm22, {rn-sae} + +// CHECK: vscalefsd xmm29, xmm19, xmm22, {ru-sae} +// CHECK: encoding: [0x62,0x22,0xe5,0x50,0x2d,0xee] + vscalefsd xmm29, xmm19, xmm22, {ru-sae} + +// CHECK: vscalefsd xmm29, xmm19, xmm22, {rd-sae} +// CHECK: encoding: [0x62,0x22,0xe5,0x30,0x2d,0xee] + vscalefsd xmm29, xmm19, xmm22, {rd-sae} + +// CHECK: vscalefsd xmm29, xmm19, xmm22, {rz-sae} +// CHECK: encoding: [0x62,0x22,0xe5,0x70,0x2d,0xee] + vscalefsd xmm29, xmm19, xmm22, {rz-sae} + +// CHECK: vscalefsd xmm29, xmm19, qword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xe5,0x00,0x2d,0x29] + vscalefsd xmm29, xmm19, qword ptr [rcx] + +// CHECK: vscalefsd xmm29, xmm19, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xe5,0x00,0x2d,0xac,0xf0,0x34,0x12,0x00,0x00] + vscalefsd xmm29, xmm19, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vscalefsd xmm29, xmm19, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x62,0xe5,0x00,0x2d,0x6a,0x7f] + vscalefsd xmm29, xmm19, qword ptr [rdx + 1016] + +// CHECK: vscalefsd xmm29, xmm19, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x62,0xe5,0x00,0x2d,0xaa,0x00,0x04,0x00,0x00] + vscalefsd xmm29, xmm19, qword ptr [rdx + 1024] + +// CHECK: vscalefsd xmm29, xmm19, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x62,0xe5,0x00,0x2d,0x6a,0x80] + vscalefsd xmm29, xmm19, qword ptr [rdx - 1024] + +// CHECK: vscalefsd xmm29, xmm19, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x62,0xe5,0x00,0x2d,0xaa,0xf8,0xfb,0xff,0xff] + vscalefsd xmm29, xmm19, qword ptr [rdx - 1032] + +// CHECK: vscalefss xmm20, xmm12, xmm6 +// CHECK: encoding: [0x62,0xe2,0x1d,0x08,0x2d,0xe6] + vscalefss xmm20, xmm12, xmm6 + +// CHECK: vscalefss xmm20 {k2}, xmm12, xmm6 +// CHECK: encoding: [0x62,0xe2,0x1d,0x0a,0x2d,0xe6] + vscalefss xmm20 {k2}, xmm12, xmm6 + +// CHECK: vscalefss xmm20 {k2} {z}, xmm12, xmm6 +// CHECK: encoding: [0x62,0xe2,0x1d,0x8a,0x2d,0xe6] + vscalefss xmm20 {k2} {z}, xmm12, xmm6 + +// CHECK: vscalefss xmm20, xmm12, xmm6, {rn-sae} +// CHECK: encoding: [0x62,0xe2,0x1d,0x18,0x2d,0xe6] + vscalefss xmm20, xmm12, xmm6, {rn-sae} + +// CHECK: vscalefss xmm20, xmm12, xmm6, {ru-sae} +// CHECK: encoding: [0x62,0xe2,0x1d,0x58,0x2d,0xe6] + vscalefss xmm20, xmm12, xmm6, {ru-sae} + +// CHECK: vscalefss xmm20, xmm12, xmm6, {rd-sae} +// CHECK: encoding: [0x62,0xe2,0x1d,0x38,0x2d,0xe6] + vscalefss xmm20, xmm12, xmm6, {rd-sae} + +// CHECK: vscalefss xmm20, xmm12, xmm6, {rz-sae} +// CHECK: encoding: [0x62,0xe2,0x1d,0x78,0x2d,0xe6] + vscalefss xmm20, xmm12, xmm6, {rz-sae} + +// CHECK: vscalefss xmm20, xmm12, dword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0x1d,0x08,0x2d,0x21] + vscalefss xmm20, xmm12, dword ptr [rcx] + +// CHECK: vscalefss xmm20, xmm12, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0x1d,0x08,0x2d,0xa4,0xf0,0x34,0x12,0x00,0x00] + vscalefss xmm20, xmm12, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vscalefss xmm20, xmm12, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xe2,0x1d,0x08,0x2d,0x62,0x7f] + vscalefss xmm20, xmm12, dword ptr [rdx + 508] + +// CHECK: vscalefss xmm20, xmm12, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xe2,0x1d,0x08,0x2d,0xa2,0x00,0x02,0x00,0x00] + vscalefss xmm20, xmm12, dword ptr [rdx + 512] + +// CHECK: vscalefss xmm20, xmm12, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xe2,0x1d,0x08,0x2d,0x62,0x80] + vscalefss xmm20, xmm12, dword ptr [rdx - 512] + +// CHECK: vscalefss xmm20, xmm12, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xe2,0x1d,0x08,0x2d,0xa2,0xfc,0xfd,0xff,0xff] + vscalefss xmm20, xmm12, dword ptr [rdx - 516] + +// CHECK: vfixupimmps zmm4, zmm8, zmm7, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0x48,0x54,0xe7,0xab] + vfixupimmps zmm4, zmm8, zmm7, 171 + +// CHECK: vfixupimmps zmm4 {k7}, zmm8, zmm7, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0x4f,0x54,0xe7,0xab] + vfixupimmps zmm4 {k7}, zmm8, zmm7, 171 + +// CHECK: vfixupimmps zmm4 {k7} {z}, zmm8, zmm7, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0xcf,0x54,0xe7,0xab] + vfixupimmps zmm4 {k7} {z}, zmm8, zmm7, 171 + +// CHECK: vfixupimmps zmm4, zmm8, zmm7, {sae}, 171 +// CHECK: encoding: [0x62,0xf3,0x3d,0x18,0x54,0xe7,0xab] + vfixupimmps zmm4, zmm8, zmm7, {sae}, 171 + +// CHECK: vfixupimmps zmm4, zmm8, zmm7, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x48,0x54,0xe7,0x7b] + vfixupimmps zmm4, zmm8, zmm7, 123 + +// CHECK: vfixupimmps zmm4, zmm8, zmm7, {sae}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x18,0x54,0xe7,0x7b] + vfixupimmps zmm4, zmm8, zmm7, {sae}, 123 + +// CHECK: vfixupimmps zmm4, zmm8, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x48,0x54,0x21,0x7b] + vfixupimmps zmm4, zmm8, zmmword ptr [rcx], 123 + +// CHECK: vfixupimmps zmm4, zmm8, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0x3d,0x48,0x54,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vfixupimmps zmm4, zmm8, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vfixupimmps zmm4, zmm8, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x58,0x54,0x21,0x7b] + vfixupimmps zmm4, zmm8, dword ptr [rcx]{1to16}, 123 + +// CHECK: vfixupimmps zmm4, zmm8, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x48,0x54,0x62,0x7f,0x7b] + vfixupimmps zmm4, zmm8, zmmword ptr [rdx + 8128], 123 + +// CHECK: vfixupimmps zmm4, zmm8, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x48,0x54,0xa2,0x00,0x20,0x00,0x00,0x7b] + vfixupimmps zmm4, zmm8, zmmword ptr [rdx + 8192], 123 + +// CHECK: vfixupimmps zmm4, zmm8, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x48,0x54,0x62,0x80,0x7b] + vfixupimmps zmm4, zmm8, zmmword ptr [rdx - 8192], 123 + +// CHECK: vfixupimmps zmm4, zmm8, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x48,0x54,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + vfixupimmps zmm4, zmm8, zmmword ptr [rdx - 8256], 123 + +// CHECK: vfixupimmps zmm4, zmm8, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x58,0x54,0x62,0x7f,0x7b] + vfixupimmps zmm4, zmm8, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vfixupimmps zmm4, zmm8, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x58,0x54,0xa2,0x00,0x02,0x00,0x00,0x7b] + vfixupimmps zmm4, zmm8, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vfixupimmps zmm4, zmm8, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x58,0x54,0x62,0x80,0x7b] + vfixupimmps zmm4, zmm8, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vfixupimmps zmm4, zmm8, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf3,0x3d,0x58,0x54,0xa2,0xfc,0xfd,0xff,0xff,0x7b] + vfixupimmps zmm4, zmm8, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vfixupimmpd zmm15, zmm5, zmm5, 171 +// CHECK: encoding: [0x62,0x73,0xd5,0x48,0x54,0xfd,0xab] + vfixupimmpd zmm15, zmm5, zmm5, 171 + +// CHECK: vfixupimmpd zmm15 {k5}, zmm5, zmm5, 171 +// CHECK: encoding: [0x62,0x73,0xd5,0x4d,0x54,0xfd,0xab] + vfixupimmpd zmm15 {k5}, zmm5, zmm5, 171 + +// CHECK: vfixupimmpd zmm15 {k5} {z}, zmm5, zmm5, 171 +// CHECK: encoding: [0x62,0x73,0xd5,0xcd,0x54,0xfd,0xab] + vfixupimmpd zmm15 {k5} {z}, zmm5, zmm5, 171 + +// CHECK: vfixupimmpd zmm15, zmm5, zmm5, {sae}, 171 +// CHECK: encoding: [0x62,0x73,0xd5,0x18,0x54,0xfd,0xab] + vfixupimmpd zmm15, zmm5, zmm5, {sae}, 171 + +// CHECK: vfixupimmpd zmm15, zmm5, zmm5, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x48,0x54,0xfd,0x7b] + vfixupimmpd zmm15, zmm5, zmm5, 123 + +// CHECK: vfixupimmpd zmm15, zmm5, zmm5, {sae}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x18,0x54,0xfd,0x7b] + vfixupimmpd zmm15, zmm5, zmm5, {sae}, 123 + +// CHECK: vfixupimmpd zmm15, zmm5, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x48,0x54,0x39,0x7b] + vfixupimmpd zmm15, zmm5, zmmword ptr [rcx], 123 + +// CHECK: vfixupimmpd zmm15, zmm5, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x33,0xd5,0x48,0x54,0xbc,0xf0,0x34,0x12,0x00,0x00,0x7b] + vfixupimmpd zmm15, zmm5, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vfixupimmpd zmm15, zmm5, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x58,0x54,0x39,0x7b] + vfixupimmpd zmm15, zmm5, qword ptr [rcx]{1to8}, 123 + +// CHECK: vfixupimmpd zmm15, zmm5, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x48,0x54,0x7a,0x7f,0x7b] + vfixupimmpd zmm15, zmm5, zmmword ptr [rdx + 8128], 123 + +// CHECK: vfixupimmpd zmm15, zmm5, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x48,0x54,0xba,0x00,0x20,0x00,0x00,0x7b] + vfixupimmpd zmm15, zmm5, zmmword ptr [rdx + 8192], 123 + +// CHECK: vfixupimmpd zmm15, zmm5, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x48,0x54,0x7a,0x80,0x7b] + vfixupimmpd zmm15, zmm5, zmmword ptr [rdx - 8192], 123 + +// CHECK: vfixupimmpd zmm15, zmm5, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x48,0x54,0xba,0xc0,0xdf,0xff,0xff,0x7b] + vfixupimmpd zmm15, zmm5, zmmword ptr [rdx - 8256], 123 + +// CHECK: vfixupimmpd zmm15, zmm5, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x58,0x54,0x7a,0x7f,0x7b] + vfixupimmpd zmm15, zmm5, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vfixupimmpd zmm15, zmm5, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x58,0x54,0xba,0x00,0x04,0x00,0x00,0x7b] + vfixupimmpd zmm15, zmm5, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vfixupimmpd zmm15, zmm5, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x58,0x54,0x7a,0x80,0x7b] + vfixupimmpd zmm15, zmm5, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vfixupimmpd zmm15, zmm5, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xd5,0x58,0x54,0xba,0xf8,0xfb,0xff,0xff,0x7b] + vfixupimmpd zmm15, zmm5, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vfixupimmss xmm25, xmm24, xmm7, 171 +// CHECK: encoding: [0x62,0x63,0x3d,0x00,0x55,0xcf,0xab] + vfixupimmss xmm25, xmm24, xmm7, 171 + +// CHECK: vfixupimmss xmm25 {k4}, xmm24, xmm7, 171 +// CHECK: encoding: [0x62,0x63,0x3d,0x04,0x55,0xcf,0xab] + vfixupimmss xmm25 {k4}, xmm24, xmm7, 171 + +// CHECK: vfixupimmss xmm25 {k4} {z}, xmm24, xmm7, 171 +// CHECK: encoding: [0x62,0x63,0x3d,0x84,0x55,0xcf,0xab] + vfixupimmss xmm25 {k4} {z}, xmm24, xmm7, 171 + +// CHECK: vfixupimmss xmm25, xmm24, xmm7, {sae}, 171 +// CHECK: encoding: [0x62,0x63,0x3d,0x10,0x55,0xcf,0xab] + vfixupimmss xmm25, xmm24, xmm7, {sae}, 171 + +// CHECK: vfixupimmss xmm25, xmm24, xmm7, 123 +// CHECK: encoding: [0x62,0x63,0x3d,0x00,0x55,0xcf,0x7b] + vfixupimmss xmm25, xmm24, xmm7, 123 + +// CHECK: vfixupimmss xmm25, xmm24, xmm7, {sae}, 123 +// CHECK: encoding: [0x62,0x63,0x3d,0x10,0x55,0xcf,0x7b] + vfixupimmss xmm25, xmm24, xmm7, {sae}, 123 + +// CHECK: vfixupimmss xmm25, xmm24, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x3d,0x00,0x55,0x09,0x7b] + vfixupimmss xmm25, xmm24, dword ptr [rcx], 123 + +// CHECK: vfixupimmss xmm25, xmm24, dword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0x3d,0x00,0x55,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vfixupimmss xmm25, xmm24, dword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vfixupimmss xmm25, xmm24, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0x63,0x3d,0x00,0x55,0x4a,0x7f,0x7b] + vfixupimmss xmm25, xmm24, dword ptr [rdx + 508], 123 + +// CHECK: vfixupimmss xmm25, xmm24, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0x63,0x3d,0x00,0x55,0x8a,0x00,0x02,0x00,0x00,0x7b] + vfixupimmss xmm25, xmm24, dword ptr [rdx + 512], 123 + +// CHECK: vfixupimmss xmm25, xmm24, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0x63,0x3d,0x00,0x55,0x4a,0x80,0x7b] + vfixupimmss xmm25, xmm24, dword ptr [rdx - 512], 123 + +// CHECK: vfixupimmss xmm25, xmm24, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0x63,0x3d,0x00,0x55,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + vfixupimmss xmm25, xmm24, dword ptr [rdx - 516], 123 + +// CHECK: vfixupimmsd xmm24, xmm12, xmm16, 171 +// CHECK: encoding: [0x62,0x23,0x9d,0x08,0x55,0xc0,0xab] + vfixupimmsd xmm24, xmm12, xmm16, 171 + +// CHECK: vfixupimmsd xmm24 {k2}, xmm12, xmm16, 171 +// CHECK: encoding: [0x62,0x23,0x9d,0x0a,0x55,0xc0,0xab] + vfixupimmsd xmm24 {k2}, xmm12, xmm16, 171 + +// CHECK: vfixupimmsd xmm24 {k2} {z}, xmm12, xmm16, 171 +// CHECK: encoding: [0x62,0x23,0x9d,0x8a,0x55,0xc0,0xab] + vfixupimmsd xmm24 {k2} {z}, xmm12, xmm16, 171 + +// CHECK: vfixupimmsd xmm24, xmm12, xmm16, {sae}, 171 +// CHECK: encoding: [0x62,0x23,0x9d,0x18,0x55,0xc0,0xab] + vfixupimmsd xmm24, xmm12, xmm16, {sae}, 171 + +// CHECK: vfixupimmsd xmm24, xmm12, xmm16, 123 +// CHECK: encoding: [0x62,0x23,0x9d,0x08,0x55,0xc0,0x7b] + vfixupimmsd xmm24, xmm12, xmm16, 123 + +// CHECK: vfixupimmsd xmm24, xmm12, xmm16, {sae}, 123 +// CHECK: encoding: [0x62,0x23,0x9d,0x18,0x55,0xc0,0x7b] + vfixupimmsd xmm24, xmm12, xmm16, {sae}, 123 + +// CHECK: vfixupimmsd xmm24, xmm12, qword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x55,0x01,0x7b] + vfixupimmsd xmm24, xmm12, qword ptr [rcx], 123 + +// CHECK: vfixupimmsd xmm24, xmm12, qword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0x9d,0x08,0x55,0x84,0xf0,0x34,0x12,0x00,0x00,0x7b] + vfixupimmsd xmm24, xmm12, qword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vfixupimmsd xmm24, xmm12, qword ptr [rdx + 1016], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x55,0x42,0x7f,0x7b] + vfixupimmsd xmm24, xmm12, qword ptr [rdx + 1016], 123 + +// CHECK: vfixupimmsd xmm24, xmm12, qword ptr [rdx + 1024], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x55,0x82,0x00,0x04,0x00,0x00,0x7b] + vfixupimmsd xmm24, xmm12, qword ptr [rdx + 1024], 123 + +// CHECK: vfixupimmsd xmm24, xmm12, qword ptr [rdx - 1024], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x55,0x42,0x80,0x7b] + vfixupimmsd xmm24, xmm12, qword ptr [rdx - 1024], 123 + +// CHECK: vfixupimmsd xmm24, xmm12, qword ptr [rdx - 1032], 123 +// CHECK: encoding: [0x62,0x63,0x9d,0x08,0x55,0x82,0xf8,0xfb,0xff,0xff,0x7b] + vfixupimmsd xmm24, xmm12, qword ptr [rdx - 1032], 123 + +// CHECK: vpslld zmm27, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0xf5,0xab] + vpslld zmm27, zmm5, 171 + +// CHECK: vpslld zmm27 {k1}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x25,0x41,0x72,0xf5,0xab] + vpslld zmm27 {k1}, zmm5, 171 + +// CHECK: vpslld zmm27 {k1} {z}, zmm5, 171 +// CHECK: encoding: [0x62,0xf1,0x25,0xc1,0x72,0xf5,0xab] + vpslld zmm27 {k1} {z}, zmm5, 171 + +// CHECK: vpslld zmm27, zmm5, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0xf5,0x7b] + vpslld zmm27, zmm5, 123 + +// CHECK: vpslld zmm27, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0x31,0x7b] + vpslld zmm27, zmmword ptr [rcx], 123 + +// CHECK: vpslld zmm27, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x25,0x40,0x72,0xb4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpslld zmm27, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpslld zmm27, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0x31,0x7b] + vpslld zmm27, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpslld zmm27, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0x72,0x7f,0x7b] + vpslld zmm27, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpslld zmm27, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0xb2,0x00,0x20,0x00,0x00,0x7b] + vpslld zmm27, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpslld zmm27, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0x72,0x80,0x7b] + vpslld zmm27, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpslld zmm27, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x40,0x72,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vpslld zmm27, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpslld zmm27, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0x72,0x7f,0x7b] + vpslld zmm27, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpslld zmm27, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0xb2,0x00,0x02,0x00,0x00,0x7b] + vpslld zmm27, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpslld zmm27, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0x72,0x80,0x7b] + vpslld zmm27, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpslld zmm27, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x25,0x50,0x72,0xb2,0xfc,0xfd,0xff,0xff,0x7b] + vpslld zmm27, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpsllq zmm4, zmm6, 171 +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x73,0xf6,0xab] + vpsllq zmm4, zmm6, 171 + +// CHECK: vpsllq zmm4 {k4}, zmm6, 171 +// CHECK: encoding: [0x62,0xf1,0xdd,0x4c,0x73,0xf6,0xab] + vpsllq zmm4 {k4}, zmm6, 171 + +// CHECK: vpsllq zmm4 {k4} {z}, zmm6, 171 +// CHECK: encoding: [0x62,0xf1,0xdd,0xcc,0x73,0xf6,0xab] + vpsllq zmm4 {k4} {z}, zmm6, 171 + +// CHECK: vpsllq zmm4, zmm6, 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x73,0xf6,0x7b] + vpsllq zmm4, zmm6, 123 + +// CHECK: vpsllq zmm4, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x73,0x31,0x7b] + vpsllq zmm4, zmmword ptr [rcx], 123 + +// CHECK: vpsllq zmm4, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0xdd,0x48,0x73,0xb4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpsllq zmm4, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpsllq zmm4, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x73,0x31,0x7b] + vpsllq zmm4, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpsllq zmm4, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x73,0x72,0x7f,0x7b] + vpsllq zmm4, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsllq zmm4, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x73,0xb2,0x00,0x20,0x00,0x00,0x7b] + vpsllq zmm4, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsllq zmm4, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x73,0x72,0x80,0x7b] + vpsllq zmm4, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsllq zmm4, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x48,0x73,0xb2,0xc0,0xdf,0xff,0xff,0x7b] + vpsllq zmm4, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsllq zmm4, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x73,0x72,0x7f,0x7b] + vpsllq zmm4, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpsllq zmm4, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x73,0xb2,0x00,0x04,0x00,0x00,0x7b] + vpsllq zmm4, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpsllq zmm4, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x73,0x72,0x80,0x7b] + vpsllq zmm4, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpsllq zmm4, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xdd,0x58,0x73,0xb2,0xf8,0xfb,0xff,0xff,0x7b] + vpsllq zmm4, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vpsrad zmm8, zmm20, 171 +// CHECK: encoding: [0x62,0xb1,0x3d,0x48,0x72,0xe4,0xab] + vpsrad zmm8, zmm20, 171 + +// CHECK: vpsrad zmm8 {k2}, zmm20, 171 +// CHECK: encoding: [0x62,0xb1,0x3d,0x4a,0x72,0xe4,0xab] + vpsrad zmm8 {k2}, zmm20, 171 + +// CHECK: vpsrad zmm8 {k2} {z}, zmm20, 171 +// CHECK: encoding: [0x62,0xb1,0x3d,0xca,0x72,0xe4,0xab] + vpsrad zmm8 {k2} {z}, zmm20, 171 + +// CHECK: vpsrad zmm8, zmm20, 123 +// CHECK: encoding: [0x62,0xb1,0x3d,0x48,0x72,0xe4,0x7b] + vpsrad zmm8, zmm20, 123 + +// CHECK: vpsrad zmm8, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x72,0x21,0x7b] + vpsrad zmm8, zmmword ptr [rcx], 123 + +// CHECK: vpsrad zmm8, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x3d,0x48,0x72,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpsrad zmm8, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpsrad zmm8, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x72,0x21,0x7b] + vpsrad zmm8, dword ptr [rcx]{1to16}, 123 + +// CHECK: vpsrad zmm8, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x72,0x62,0x7f,0x7b] + vpsrad zmm8, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsrad zmm8, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x72,0xa2,0x00,0x20,0x00,0x00,0x7b] + vpsrad zmm8, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsrad zmm8, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x72,0x62,0x80,0x7b] + vpsrad zmm8, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsrad zmm8, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x48,0x72,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + vpsrad zmm8, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsrad zmm8, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x72,0x62,0x7f,0x7b] + vpsrad zmm8, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vpsrad zmm8, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x72,0xa2,0x00,0x02,0x00,0x00,0x7b] + vpsrad zmm8, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vpsrad zmm8, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x72,0x62,0x80,0x7b] + vpsrad zmm8, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vpsrad zmm8, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x3d,0x58,0x72,0xa2,0xfc,0xfd,0xff,0xff,0x7b] + vpsrad zmm8, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vpsraq zmm3, zmm18, 171 +// CHECK: encoding: [0x62,0xb1,0xe5,0x48,0x72,0xe2,0xab] + vpsraq zmm3, zmm18, 171 + +// CHECK: vpsraq zmm3 {k6}, zmm18, 171 +// CHECK: encoding: [0x62,0xb1,0xe5,0x4e,0x72,0xe2,0xab] + vpsraq zmm3 {k6}, zmm18, 171 + +// CHECK: vpsraq zmm3 {k6} {z}, zmm18, 171 +// CHECK: encoding: [0x62,0xb1,0xe5,0xce,0x72,0xe2,0xab] + vpsraq zmm3 {k6} {z}, zmm18, 171 + +// CHECK: vpsraq zmm3, zmm18, 123 +// CHECK: encoding: [0x62,0xb1,0xe5,0x48,0x72,0xe2,0x7b] + vpsraq zmm3, zmm18, 123 + +// CHECK: vpsraq zmm3, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x48,0x72,0x21,0x7b] + vpsraq zmm3, zmmword ptr [rcx], 123 + +// CHECK: vpsraq zmm3, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0xe5,0x48,0x72,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpsraq zmm3, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vpsraq zmm3, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x58,0x72,0x21,0x7b] + vpsraq zmm3, qword ptr [rcx]{1to8}, 123 + +// CHECK: vpsraq zmm3, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x48,0x72,0x62,0x7f,0x7b] + vpsraq zmm3, zmmword ptr [rdx + 8128], 123 + +// CHECK: vpsraq zmm3, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x48,0x72,0xa2,0x00,0x20,0x00,0x00,0x7b] + vpsraq zmm3, zmmword ptr [rdx + 8192], 123 + +// CHECK: vpsraq zmm3, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x48,0x72,0x62,0x80,0x7b] + vpsraq zmm3, zmmword ptr [rdx - 8192], 123 + +// CHECK: vpsraq zmm3, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x48,0x72,0xa2,0xc0,0xdf,0xff,0xff,0x7b] + vpsraq zmm3, zmmword ptr [rdx - 8256], 123 + +// CHECK: vpsraq zmm3, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x58,0x72,0x62,0x7f,0x7b] + vpsraq zmm3, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vpsraq zmm3, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x58,0x72,0xa2,0x00,0x04,0x00,0x00,0x7b] + vpsraq zmm3, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vpsraq zmm3, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x58,0x72,0x62,0x80,0x7b] + vpsraq zmm3, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vpsraq zmm3, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xe5,0x58,0x72,0xa2,0xf8,0xfb,0xff,0xff,0x7b] + vpsraq zmm3, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vprolvd zmm28, zmm1, zmm10 +// CHECK: encoding: [0x62,0x42,0x75,0x48,0x15,0xe2] + vprolvd zmm28, zmm1, zmm10 + +// CHECK: vprolvd zmm28 {k6}, zmm1, zmm10 +// CHECK: encoding: [0x62,0x42,0x75,0x4e,0x15,0xe2] + vprolvd zmm28 {k6}, zmm1, zmm10 + +// CHECK: vprolvd zmm28 {k6} {z}, zmm1, zmm10 +// CHECK: encoding: [0x62,0x42,0x75,0xce,0x15,0xe2] + vprolvd zmm28 {k6} {z}, zmm1, zmm10 + +// CHECK: vprolvd zmm28, zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x75,0x48,0x15,0x21] + vprolvd zmm28, zmm1, zmmword ptr [rcx] + +// CHECK: vprolvd zmm28, zmm1, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x75,0x48,0x15,0xa4,0xf0,0x34,0x12,0x00,0x00] + vprolvd zmm28, zmm1, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vprolvd zmm28, zmm1, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x75,0x58,0x15,0x21] + vprolvd zmm28, zmm1, dword ptr [rcx]{1to16} + +// CHECK: vprolvd zmm28, zmm1, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x75,0x48,0x15,0x62,0x7f] + vprolvd zmm28, zmm1, zmmword ptr [rdx + 8128] + +// CHECK: vprolvd zmm28, zmm1, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x75,0x48,0x15,0xa2,0x00,0x20,0x00,0x00] + vprolvd zmm28, zmm1, zmmword ptr [rdx + 8192] + +// CHECK: vprolvd zmm28, zmm1, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x75,0x48,0x15,0x62,0x80] + vprolvd zmm28, zmm1, zmmword ptr [rdx - 8192] + +// CHECK: vprolvd zmm28, zmm1, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x75,0x48,0x15,0xa2,0xc0,0xdf,0xff,0xff] + vprolvd zmm28, zmm1, zmmword ptr [rdx - 8256] + +// CHECK: vprolvd zmm28, zmm1, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x75,0x58,0x15,0x62,0x7f] + vprolvd zmm28, zmm1, dword ptr [rdx + 508]{1to16} + +// CHECK: vprolvd zmm28, zmm1, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x75,0x58,0x15,0xa2,0x00,0x02,0x00,0x00] + vprolvd zmm28, zmm1, dword ptr [rdx + 512]{1to16} + +// CHECK: vprolvd zmm28, zmm1, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x75,0x58,0x15,0x62,0x80] + vprolvd zmm28, zmm1, dword ptr [rdx - 512]{1to16} + +// CHECK: vprolvd zmm28, zmm1, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x75,0x58,0x15,0xa2,0xfc,0xfd,0xff,0xff] + vprolvd zmm28, zmm1, dword ptr [rdx - 516]{1to16} + +// CHECK: vprold zmm19, zmm27, 171 +// CHECK: encoding: [0x62,0x91,0x65,0x40,0x72,0xcb,0xab] + vprold zmm19, zmm27, 171 + +// CHECK: vprold zmm19 {k4}, zmm27, 171 +// CHECK: encoding: [0x62,0x91,0x65,0x44,0x72,0xcb,0xab] + vprold zmm19 {k4}, zmm27, 171 + +// CHECK: vprold zmm19 {k4} {z}, zmm27, 171 +// CHECK: encoding: [0x62,0x91,0x65,0xc4,0x72,0xcb,0xab] + vprold zmm19 {k4} {z}, zmm27, 171 + +// CHECK: vprold zmm19, zmm27, 123 +// CHECK: encoding: [0x62,0x91,0x65,0x40,0x72,0xcb,0x7b] + vprold zmm19, zmm27, 123 + +// CHECK: vprold zmm19, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x40,0x72,0x09,0x7b] + vprold zmm19, zmmword ptr [rcx], 123 + +// CHECK: vprold zmm19, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x65,0x40,0x72,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vprold zmm19, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vprold zmm19, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x50,0x72,0x09,0x7b] + vprold zmm19, dword ptr [rcx]{1to16}, 123 + +// CHECK: vprold zmm19, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x40,0x72,0x4a,0x7f,0x7b] + vprold zmm19, zmmword ptr [rdx + 8128], 123 + +// CHECK: vprold zmm19, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x40,0x72,0x8a,0x00,0x20,0x00,0x00,0x7b] + vprold zmm19, zmmword ptr [rdx + 8192], 123 + +// CHECK: vprold zmm19, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x40,0x72,0x4a,0x80,0x7b] + vprold zmm19, zmmword ptr [rdx - 8192], 123 + +// CHECK: vprold zmm19, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x40,0x72,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vprold zmm19, zmmword ptr [rdx - 8256], 123 + +// CHECK: vprold zmm19, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x50,0x72,0x4a,0x7f,0x7b] + vprold zmm19, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vprold zmm19, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x50,0x72,0x8a,0x00,0x02,0x00,0x00,0x7b] + vprold zmm19, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vprold zmm19, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x50,0x72,0x4a,0x80,0x7b] + vprold zmm19, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vprold zmm19, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x65,0x50,0x72,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + vprold zmm19, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vprolvq zmm25, zmm1, zmm22 +// CHECK: encoding: [0x62,0x22,0xf5,0x48,0x15,0xce] + vprolvq zmm25, zmm1, zmm22 + +// CHECK: vprolvq zmm25 {k7}, zmm1, zmm22 +// CHECK: encoding: [0x62,0x22,0xf5,0x4f,0x15,0xce] + vprolvq zmm25 {k7}, zmm1, zmm22 + +// CHECK: vprolvq zmm25 {k7} {z}, zmm1, zmm22 +// CHECK: encoding: [0x62,0x22,0xf5,0xcf,0x15,0xce] + vprolvq zmm25 {k7} {z}, zmm1, zmm22 + +// CHECK: vprolvq zmm25, zmm1, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0xf5,0x48,0x15,0x09] + vprolvq zmm25, zmm1, zmmword ptr [rcx] + +// CHECK: vprolvq zmm25, zmm1, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0xf5,0x48,0x15,0x8c,0xf0,0x34,0x12,0x00,0x00] + vprolvq zmm25, zmm1, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vprolvq zmm25, zmm1, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0x62,0xf5,0x58,0x15,0x09] + vprolvq zmm25, zmm1, qword ptr [rcx]{1to8} + +// CHECK: vprolvq zmm25, zmm1, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0xf5,0x48,0x15,0x4a,0x7f] + vprolvq zmm25, zmm1, zmmword ptr [rdx + 8128] + +// CHECK: vprolvq zmm25, zmm1, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0xf5,0x48,0x15,0x8a,0x00,0x20,0x00,0x00] + vprolvq zmm25, zmm1, zmmword ptr [rdx + 8192] + +// CHECK: vprolvq zmm25, zmm1, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0xf5,0x48,0x15,0x4a,0x80] + vprolvq zmm25, zmm1, zmmword ptr [rdx - 8192] + +// CHECK: vprolvq zmm25, zmm1, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0xf5,0x48,0x15,0x8a,0xc0,0xdf,0xff,0xff] + vprolvq zmm25, zmm1, zmmword ptr [rdx - 8256] + +// CHECK: vprolvq zmm25, zmm1, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0x62,0xf5,0x58,0x15,0x4a,0x7f] + vprolvq zmm25, zmm1, qword ptr [rdx + 1016]{1to8} + +// CHECK: vprolvq zmm25, zmm1, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xf5,0x58,0x15,0x8a,0x00,0x04,0x00,0x00] + vprolvq zmm25, zmm1, qword ptr [rdx + 1024]{1to8} + +// CHECK: vprolvq zmm25, zmm1, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0x62,0xf5,0x58,0x15,0x4a,0x80] + vprolvq zmm25, zmm1, qword ptr [rdx - 1024]{1to8} + +// CHECK: vprolvq zmm25, zmm1, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0x62,0xf5,0x58,0x15,0x8a,0xf8,0xfb,0xff,0xff] + vprolvq zmm25, zmm1, qword ptr [rdx - 1032]{1to8} + +// CHECK: vprolq zmm17, zmm10, 171 +// CHECK: encoding: [0x62,0xd1,0xf5,0x40,0x72,0xca,0xab] + vprolq zmm17, zmm10, 171 + +// CHECK: vprolq zmm17 {k4}, zmm10, 171 +// CHECK: encoding: [0x62,0xd1,0xf5,0x44,0x72,0xca,0xab] + vprolq zmm17 {k4}, zmm10, 171 + +// CHECK: vprolq zmm17 {k4} {z}, zmm10, 171 +// CHECK: encoding: [0x62,0xd1,0xf5,0xc4,0x72,0xca,0xab] + vprolq zmm17 {k4} {z}, zmm10, 171 + +// CHECK: vprolq zmm17, zmm10, 123 +// CHECK: encoding: [0x62,0xd1,0xf5,0x40,0x72,0xca,0x7b] + vprolq zmm17, zmm10, 123 + +// CHECK: vprolq zmm17, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x40,0x72,0x09,0x7b] + vprolq zmm17, zmmword ptr [rcx], 123 + +// CHECK: vprolq zmm17, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0xf5,0x40,0x72,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vprolq zmm17, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vprolq zmm17, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x50,0x72,0x09,0x7b] + vprolq zmm17, qword ptr [rcx]{1to8}, 123 + +// CHECK: vprolq zmm17, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x40,0x72,0x4a,0x7f,0x7b] + vprolq zmm17, zmmword ptr [rdx + 8128], 123 + +// CHECK: vprolq zmm17, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x40,0x72,0x8a,0x00,0x20,0x00,0x00,0x7b] + vprolq zmm17, zmmword ptr [rdx + 8192], 123 + +// CHECK: vprolq zmm17, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x40,0x72,0x4a,0x80,0x7b] + vprolq zmm17, zmmword ptr [rdx - 8192], 123 + +// CHECK: vprolq zmm17, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x40,0x72,0x8a,0xc0,0xdf,0xff,0xff,0x7b] + vprolq zmm17, zmmword ptr [rdx - 8256], 123 + +// CHECK: vprolq zmm17, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x50,0x72,0x4a,0x7f,0x7b] + vprolq zmm17, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vprolq zmm17, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x50,0x72,0x8a,0x00,0x04,0x00,0x00,0x7b] + vprolq zmm17, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vprolq zmm17, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x50,0x72,0x4a,0x80,0x7b] + vprolq zmm17, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vprolq zmm17, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xf5,0x50,0x72,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + vprolq zmm17, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vprorvd zmm1, zmm8, zmm13 +// CHECK: encoding: [0x62,0xd2,0x3d,0x48,0x14,0xcd] + vprorvd zmm1, zmm8, zmm13 + +// CHECK: vprorvd zmm1 {k2}, zmm8, zmm13 +// CHECK: encoding: [0x62,0xd2,0x3d,0x4a,0x14,0xcd] + vprorvd zmm1 {k2}, zmm8, zmm13 + +// CHECK: vprorvd zmm1 {k2} {z}, zmm8, zmm13 +// CHECK: encoding: [0x62,0xd2,0x3d,0xca,0x14,0xcd] + vprorvd zmm1 {k2} {z}, zmm8, zmm13 + +// CHECK: vprorvd zmm1, zmm8, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x14,0x09] + vprorvd zmm1, zmm8, zmmword ptr [rcx] + +// CHECK: vprorvd zmm1, zmm8, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb2,0x3d,0x48,0x14,0x8c,0xf0,0x34,0x12,0x00,0x00] + vprorvd zmm1, zmm8, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vprorvd zmm1, zmm8, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x14,0x09] + vprorvd zmm1, zmm8, dword ptr [rcx]{1to16} + +// CHECK: vprorvd zmm1, zmm8, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x14,0x4a,0x7f] + vprorvd zmm1, zmm8, zmmword ptr [rdx + 8128] + +// CHECK: vprorvd zmm1, zmm8, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x14,0x8a,0x00,0x20,0x00,0x00] + vprorvd zmm1, zmm8, zmmword ptr [rdx + 8192] + +// CHECK: vprorvd zmm1, zmm8, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x14,0x4a,0x80] + vprorvd zmm1, zmm8, zmmword ptr [rdx - 8192] + +// CHECK: vprorvd zmm1, zmm8, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf2,0x3d,0x48,0x14,0x8a,0xc0,0xdf,0xff,0xff] + vprorvd zmm1, zmm8, zmmword ptr [rdx - 8256] + +// CHECK: vprorvd zmm1, zmm8, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x14,0x4a,0x7f] + vprorvd zmm1, zmm8, dword ptr [rdx + 508]{1to16} + +// CHECK: vprorvd zmm1, zmm8, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x14,0x8a,0x00,0x02,0x00,0x00] + vprorvd zmm1, zmm8, dword ptr [rdx + 512]{1to16} + +// CHECK: vprorvd zmm1, zmm8, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x14,0x4a,0x80] + vprorvd zmm1, zmm8, dword ptr [rdx - 512]{1to16} + +// CHECK: vprorvd zmm1, zmm8, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf2,0x3d,0x58,0x14,0x8a,0xfc,0xfd,0xff,0xff] + vprorvd zmm1, zmm8, dword ptr [rdx - 516]{1to16} + +// CHECK: vprord zmm7, zmm15, 171 +// CHECK: encoding: [0x62,0xd1,0x45,0x48,0x72,0xc7,0xab] + vprord zmm7, zmm15, 171 + +// CHECK: vprord zmm7 {k1}, zmm15, 171 +// CHECK: encoding: [0x62,0xd1,0x45,0x49,0x72,0xc7,0xab] + vprord zmm7 {k1}, zmm15, 171 + +// CHECK: vprord zmm7 {k1} {z}, zmm15, 171 +// CHECK: encoding: [0x62,0xd1,0x45,0xc9,0x72,0xc7,0xab] + vprord zmm7 {k1} {z}, zmm15, 171 + +// CHECK: vprord zmm7, zmm15, 123 +// CHECK: encoding: [0x62,0xd1,0x45,0x48,0x72,0xc7,0x7b] + vprord zmm7, zmm15, 123 + +// CHECK: vprord zmm7, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x48,0x72,0x01,0x7b] + vprord zmm7, zmmword ptr [rcx], 123 + +// CHECK: vprord zmm7, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0x45,0x48,0x72,0x84,0xf0,0x34,0x12,0x00,0x00,0x7b] + vprord zmm7, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vprord zmm7, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x58,0x72,0x01,0x7b] + vprord zmm7, dword ptr [rcx]{1to16}, 123 + +// CHECK: vprord zmm7, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x48,0x72,0x42,0x7f,0x7b] + vprord zmm7, zmmword ptr [rdx + 8128], 123 + +// CHECK: vprord zmm7, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x48,0x72,0x82,0x00,0x20,0x00,0x00,0x7b] + vprord zmm7, zmmword ptr [rdx + 8192], 123 + +// CHECK: vprord zmm7, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x48,0x72,0x42,0x80,0x7b] + vprord zmm7, zmmword ptr [rdx - 8192], 123 + +// CHECK: vprord zmm7, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x48,0x72,0x82,0xc0,0xdf,0xff,0xff,0x7b] + vprord zmm7, zmmword ptr [rdx - 8256], 123 + +// CHECK: vprord zmm7, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x58,0x72,0x42,0x7f,0x7b] + vprord zmm7, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vprord zmm7, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x58,0x72,0x82,0x00,0x02,0x00,0x00,0x7b] + vprord zmm7, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vprord zmm7, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x58,0x72,0x42,0x80,0x7b] + vprord zmm7, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vprord zmm7, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0xf1,0x45,0x58,0x72,0x82,0xfc,0xfd,0xff,0xff,0x7b] + vprord zmm7, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vprorvq zmm21, zmm23, zmm24 +// CHECK: encoding: [0x62,0x82,0xc5,0x40,0x14,0xe8] + vprorvq zmm21, zmm23, zmm24 + +// CHECK: vprorvq zmm21 {k7}, zmm23, zmm24 +// CHECK: encoding: [0x62,0x82,0xc5,0x47,0x14,0xe8] + vprorvq zmm21 {k7}, zmm23, zmm24 + +// CHECK: vprorvq zmm21 {k7} {z}, zmm23, zmm24 +// CHECK: encoding: [0x62,0x82,0xc5,0xc7,0x14,0xe8] + vprorvq zmm21 {k7} {z}, zmm23, zmm24 + +// CHECK: vprorvq zmm21, zmm23, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x14,0x29] + vprorvq zmm21, zmm23, zmmword ptr [rcx] + +// CHECK: vprorvq zmm21, zmm23, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xc5,0x40,0x14,0xac,0xf0,0x34,0x12,0x00,0x00] + vprorvq zmm21, zmm23, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vprorvq zmm21, zmm23, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x14,0x29] + vprorvq zmm21, zmm23, qword ptr [rcx]{1to8} + +// CHECK: vprorvq zmm21, zmm23, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x14,0x6a,0x7f] + vprorvq zmm21, zmm23, zmmword ptr [rdx + 8128] + +// CHECK: vprorvq zmm21, zmm23, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x14,0xaa,0x00,0x20,0x00,0x00] + vprorvq zmm21, zmm23, zmmword ptr [rdx + 8192] + +// CHECK: vprorvq zmm21, zmm23, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x14,0x6a,0x80] + vprorvq zmm21, zmm23, zmmword ptr [rdx - 8192] + +// CHECK: vprorvq zmm21, zmm23, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x14,0xaa,0xc0,0xdf,0xff,0xff] + vprorvq zmm21, zmm23, zmmword ptr [rdx - 8256] + +// CHECK: vprorvq zmm21, zmm23, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x14,0x6a,0x7f] + vprorvq zmm21, zmm23, qword ptr [rdx + 1016]{1to8} + +// CHECK: vprorvq zmm21, zmm23, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x14,0xaa,0x00,0x04,0x00,0x00] + vprorvq zmm21, zmm23, qword ptr [rdx + 1024]{1to8} + +// CHECK: vprorvq zmm21, zmm23, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x14,0x6a,0x80] + vprorvq zmm21, zmm23, qword ptr [rdx - 1024]{1to8} + +// CHECK: vprorvq zmm21, zmm23, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x14,0xaa,0xf8,0xfb,0xff,0xff] + vprorvq zmm21, zmm23, qword ptr [rdx - 1032]{1to8} + +// CHECK: vprorq zmm16, zmm27, 171 +// CHECK: encoding: [0x62,0x91,0xfd,0x40,0x72,0xc3,0xab] + vprorq zmm16, zmm27, 171 + +// CHECK: vprorq zmm16 {k3}, zmm27, 171 +// CHECK: encoding: [0x62,0x91,0xfd,0x43,0x72,0xc3,0xab] + vprorq zmm16 {k3}, zmm27, 171 + +// CHECK: vprorq zmm16 {k3} {z}, zmm27, 171 +// CHECK: encoding: [0x62,0x91,0xfd,0xc3,0x72,0xc3,0xab] + vprorq zmm16 {k3} {z}, zmm27, 171 + +// CHECK: vprorq zmm16, zmm27, 123 +// CHECK: encoding: [0x62,0x91,0xfd,0x40,0x72,0xc3,0x7b] + vprorq zmm16, zmm27, 123 + +// CHECK: vprorq zmm16, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x40,0x72,0x01,0x7b] + vprorq zmm16, zmmword ptr [rcx], 123 + +// CHECK: vprorq zmm16, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb1,0xfd,0x40,0x72,0x84,0xf0,0x34,0x12,0x00,0x00,0x7b] + vprorq zmm16, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vprorq zmm16, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x50,0x72,0x01,0x7b] + vprorq zmm16, qword ptr [rcx]{1to8}, 123 + +// CHECK: vprorq zmm16, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x40,0x72,0x42,0x7f,0x7b] + vprorq zmm16, zmmword ptr [rdx + 8128], 123 + +// CHECK: vprorq zmm16, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x40,0x72,0x82,0x00,0x20,0x00,0x00,0x7b] + vprorq zmm16, zmmword ptr [rdx + 8192], 123 + +// CHECK: vprorq zmm16, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x40,0x72,0x42,0x80,0x7b] + vprorq zmm16, zmmword ptr [rdx - 8192], 123 + +// CHECK: vprorq zmm16, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x40,0x72,0x82,0xc0,0xdf,0xff,0xff,0x7b] + vprorq zmm16, zmmword ptr [rdx - 8256], 123 + +// CHECK: vprorq zmm16, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x50,0x72,0x42,0x7f,0x7b] + vprorq zmm16, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vprorq zmm16, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x50,0x72,0x82,0x00,0x04,0x00,0x00,0x7b] + vprorq zmm16, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vprorq zmm16, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x50,0x72,0x42,0x80,0x7b] + vprorq zmm16, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vprorq zmm16, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0xf1,0xfd,0x50,0x72,0x82,0xf8,0xfb,0xff,0xff,0x7b] + vprorq zmm16, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vrndscalepd zmm13, zmm26, 171 +// CHECK: encoding: [0x62,0x13,0xfd,0x48,0x09,0xea,0xab] + vrndscalepd zmm13, zmm26, 171 + +// CHECK: vrndscalepd zmm13 {k2}, zmm26, 171 +// CHECK: encoding: [0x62,0x13,0xfd,0x4a,0x09,0xea,0xab] + vrndscalepd zmm13 {k2}, zmm26, 171 + +// CHECK: vrndscalepd zmm13 {k2} {z}, zmm26, 171 +// CHECK: encoding: [0x62,0x13,0xfd,0xca,0x09,0xea,0xab] + vrndscalepd zmm13 {k2} {z}, zmm26, 171 + +// CHECK: vrndscalepd zmm13, zmm26, {sae}, 171 +// CHECK: encoding: [0x62,0x13,0xfd,0x18,0x09,0xea,0xab] + vrndscalepd zmm13, zmm26, {sae}, 171 + +// CHECK: vrndscalepd zmm13, zmm26, 123 +// CHECK: encoding: [0x62,0x13,0xfd,0x48,0x09,0xea,0x7b] + vrndscalepd zmm13, zmm26, 123 + +// CHECK: vrndscalepd zmm13, zmm26, {sae}, 123 +// CHECK: encoding: [0x62,0x13,0xfd,0x18,0x09,0xea,0x7b] + vrndscalepd zmm13, zmm26, {sae}, 123 + +// CHECK: vrndscalepd zmm13, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x09,0x29,0x7b] + vrndscalepd zmm13, zmmword ptr [rcx], 123 + +// CHECK: vrndscalepd zmm13, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x33,0xfd,0x48,0x09,0xac,0xf0,0x34,0x12,0x00,0x00,0x7b] + vrndscalepd zmm13, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vrndscalepd zmm13, qword ptr [rcx]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x09,0x29,0x7b] + vrndscalepd zmm13, qword ptr [rcx]{1to8}, 123 + +// CHECK: vrndscalepd zmm13, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x09,0x6a,0x7f,0x7b] + vrndscalepd zmm13, zmmword ptr [rdx + 8128], 123 + +// CHECK: vrndscalepd zmm13, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x09,0xaa,0x00,0x20,0x00,0x00,0x7b] + vrndscalepd zmm13, zmmword ptr [rdx + 8192], 123 + +// CHECK: vrndscalepd zmm13, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x09,0x6a,0x80,0x7b] + vrndscalepd zmm13, zmmword ptr [rdx - 8192], 123 + +// CHECK: vrndscalepd zmm13, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x09,0xaa,0xc0,0xdf,0xff,0xff,0x7b] + vrndscalepd zmm13, zmmword ptr [rdx - 8256], 123 + +// CHECK: vrndscalepd zmm13, qword ptr [rdx + 1016]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x09,0x6a,0x7f,0x7b] + vrndscalepd zmm13, qword ptr [rdx + 1016]{1to8}, 123 + +// CHECK: vrndscalepd zmm13, qword ptr [rdx + 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x09,0xaa,0x00,0x04,0x00,0x00,0x7b] + vrndscalepd zmm13, qword ptr [rdx + 1024]{1to8}, 123 + +// CHECK: vrndscalepd zmm13, qword ptr [rdx - 1024]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x09,0x6a,0x80,0x7b] + vrndscalepd zmm13, qword ptr [rdx - 1024]{1to8}, 123 + +// CHECK: vrndscalepd zmm13, qword ptr [rdx - 1032]{1to8}, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x58,0x09,0xaa,0xf8,0xfb,0xff,0xff,0x7b] + vrndscalepd zmm13, qword ptr [rdx - 1032]{1to8}, 123 + +// CHECK: vrndscaleps zmm24, zmm7, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x08,0xc7,0xab] + vrndscaleps zmm24, zmm7, 171 + +// CHECK: vrndscaleps zmm24 {k1}, zmm7, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0x49,0x08,0xc7,0xab] + vrndscaleps zmm24 {k1}, zmm7, 171 + +// CHECK: vrndscaleps zmm24 {k1} {z}, zmm7, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0xc9,0x08,0xc7,0xab] + vrndscaleps zmm24 {k1} {z}, zmm7, 171 + +// CHECK: vrndscaleps zmm24, zmm7, {sae}, 171 +// CHECK: encoding: [0x62,0x63,0x7d,0x18,0x08,0xc7,0xab] + vrndscaleps zmm24, zmm7, {sae}, 171 + +// CHECK: vrndscaleps zmm24, zmm7, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x08,0xc7,0x7b] + vrndscaleps zmm24, zmm7, 123 + +// CHECK: vrndscaleps zmm24, zmm7, {sae}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x18,0x08,0xc7,0x7b] + vrndscaleps zmm24, zmm7, {sae}, 123 + +// CHECK: vrndscaleps zmm24, zmmword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x08,0x01,0x7b] + vrndscaleps zmm24, zmmword ptr [rcx], 123 + +// CHECK: vrndscaleps zmm24, zmmword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0x7d,0x48,0x08,0x84,0xf0,0x34,0x12,0x00,0x00,0x7b] + vrndscaleps zmm24, zmmword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vrndscaleps zmm24, dword ptr [rcx]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x08,0x01,0x7b] + vrndscaleps zmm24, dword ptr [rcx]{1to16}, 123 + +// CHECK: vrndscaleps zmm24, zmmword ptr [rdx + 8128], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x08,0x42,0x7f,0x7b] + vrndscaleps zmm24, zmmword ptr [rdx + 8128], 123 + +// CHECK: vrndscaleps zmm24, zmmword ptr [rdx + 8192], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x08,0x82,0x00,0x20,0x00,0x00,0x7b] + vrndscaleps zmm24, zmmword ptr [rdx + 8192], 123 + +// CHECK: vrndscaleps zmm24, zmmword ptr [rdx - 8192], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x08,0x42,0x80,0x7b] + vrndscaleps zmm24, zmmword ptr [rdx - 8192], 123 + +// CHECK: vrndscaleps zmm24, zmmword ptr [rdx - 8256], 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x48,0x08,0x82,0xc0,0xdf,0xff,0xff,0x7b] + vrndscaleps zmm24, zmmword ptr [rdx - 8256], 123 + +// CHECK: vrndscaleps zmm24, dword ptr [rdx + 508]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x08,0x42,0x7f,0x7b] + vrndscaleps zmm24, dword ptr [rdx + 508]{1to16}, 123 + +// CHECK: vrndscaleps zmm24, dword ptr [rdx + 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x08,0x82,0x00,0x02,0x00,0x00,0x7b] + vrndscaleps zmm24, dword ptr [rdx + 512]{1to16}, 123 + +// CHECK: vrndscaleps zmm24, dword ptr [rdx - 512]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x08,0x42,0x80,0x7b] + vrndscaleps zmm24, dword ptr [rdx - 512]{1to16}, 123 + +// CHECK: vrndscaleps zmm24, dword ptr [rdx - 516]{1to16}, 123 +// CHECK: encoding: [0x62,0x63,0x7d,0x58,0x08,0x82,0xfc,0xfd,0xff,0xff,0x7b] + vrndscaleps zmm24, dword ptr [rdx - 516]{1to16}, 123 + +// CHECK: vrndscalesd xmm26, xmm7, xmm18, 171 +// CHECK: encoding: [0x62,0x23,0xc5,0x08,0x0b,0xd2,0xab] + vrndscalesd xmm26, xmm7, xmm18, 171 + +// CHECK: vrndscalesd xmm26 {k1}, xmm7, xmm18, 171 +// CHECK: encoding: [0x62,0x23,0xc5,0x09,0x0b,0xd2,0xab] + vrndscalesd xmm26 {k1}, xmm7, xmm18, 171 + +// CHECK: vrndscalesd xmm26 {k1} {z}, xmm7, xmm18, 171 +// CHECK: encoding: [0x62,0x23,0xc5,0x89,0x0b,0xd2,0xab] + vrndscalesd xmm26 {k1} {z}, xmm7, xmm18, 171 + +// CHECK: vrndscalesd xmm26, xmm7, xmm18, {sae}, 171 +// CHECK: encoding: [0x62,0x23,0xc5,0x18,0x0b,0xd2,0xab] + vrndscalesd xmm26, xmm7, xmm18, {sae}, 171 + +// CHECK: vrndscalesd xmm26, xmm7, xmm18, 123 +// CHECK: encoding: [0x62,0x23,0xc5,0x08,0x0b,0xd2,0x7b] + vrndscalesd xmm26, xmm7, xmm18, 123 + +// CHECK: vrndscalesd xmm26, xmm7, xmm18, {sae}, 123 +// CHECK: encoding: [0x62,0x23,0xc5,0x18,0x0b,0xd2,0x7b] + vrndscalesd xmm26, xmm7, xmm18, {sae}, 123 + +// CHECK: vrndscalesd xmm26, xmm7, qword ptr [rcx], 123 +// CHECK: encoding: [0x62,0x63,0xc5,0x08,0x0b,0x11,0x7b] + vrndscalesd xmm26, xmm7, qword ptr [rcx], 123 + +// CHECK: vrndscalesd xmm26, xmm7, qword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0x23,0xc5,0x08,0x0b,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vrndscalesd xmm26, xmm7, qword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vrndscalesd xmm26, xmm7, qword ptr [rdx + 1016], 123 +// CHECK: encoding: [0x62,0x63,0xc5,0x08,0x0b,0x52,0x7f,0x7b] + vrndscalesd xmm26, xmm7, qword ptr [rdx + 1016], 123 + +// CHECK: vrndscalesd xmm26, xmm7, qword ptr [rdx + 1024], 123 +// CHECK: encoding: [0x62,0x63,0xc5,0x08,0x0b,0x92,0x00,0x04,0x00,0x00,0x7b] + vrndscalesd xmm26, xmm7, qword ptr [rdx + 1024], 123 + +// CHECK: vrndscalesd xmm26, xmm7, qword ptr [rdx - 1024], 123 +// CHECK: encoding: [0x62,0x63,0xc5,0x08,0x0b,0x52,0x80,0x7b] + vrndscalesd xmm26, xmm7, qword ptr [rdx - 1024], 123 + +// CHECK: vrndscalesd xmm26, xmm7, qword ptr [rdx - 1032], 123 +// CHECK: encoding: [0x62,0x63,0xc5,0x08,0x0b,0x92,0xf8,0xfb,0xff,0xff,0x7b] + vrndscalesd xmm26, xmm7, qword ptr [rdx - 1032], 123 + +// CHECK: vrndscaless xmm7, xmm23, xmm6, 171 +// CHECK: encoding: [0x62,0xf3,0x45,0x00,0x0a,0xfe,0xab] + vrndscaless xmm7, xmm23, xmm6, 171 + +// CHECK: vrndscaless xmm7 {k4}, xmm23, xmm6, 171 +// CHECK: encoding: [0x62,0xf3,0x45,0x04,0x0a,0xfe,0xab] + vrndscaless xmm7 {k4}, xmm23, xmm6, 171 + +// CHECK: vrndscaless xmm7 {k4} {z}, xmm23, xmm6, 171 +// CHECK: encoding: [0x62,0xf3,0x45,0x84,0x0a,0xfe,0xab] + vrndscaless xmm7 {k4} {z}, xmm23, xmm6, 171 + +// CHECK: vrndscaless xmm7, xmm23, xmm6, {sae}, 171 +// CHECK: encoding: [0x62,0xf3,0x45,0x10,0x0a,0xfe,0xab] + vrndscaless xmm7, xmm23, xmm6, {sae}, 171 + +// CHECK: vrndscaless xmm7, xmm23, xmm6, 123 +// CHECK: encoding: [0x62,0xf3,0x45,0x00,0x0a,0xfe,0x7b] + vrndscaless xmm7, xmm23, xmm6, 123 + +// CHECK: vrndscaless xmm7, xmm23, xmm6, {sae}, 123 +// CHECK: encoding: [0x62,0xf3,0x45,0x10,0x0a,0xfe,0x7b] + vrndscaless xmm7, xmm23, xmm6, {sae}, 123 + +// CHECK: vrndscaless xmm7, xmm23, dword ptr [rcx], 123 +// CHECK: encoding: [0x62,0xf3,0x45,0x00,0x0a,0x39,0x7b] + vrndscaless xmm7, xmm23, dword ptr [rcx], 123 + +// CHECK: vrndscaless xmm7, xmm23, dword ptr [rax + 8*r14 + 4660], 123 +// CHECK: encoding: [0x62,0xb3,0x45,0x00,0x0a,0xbc,0xf0,0x34,0x12,0x00,0x00,0x7b] + vrndscaless xmm7, xmm23, dword ptr [rax + 8*r14 + 4660], 123 + +// CHECK: vrndscaless xmm7, xmm23, dword ptr [rdx + 508], 123 +// CHECK: encoding: [0x62,0xf3,0x45,0x00,0x0a,0x7a,0x7f,0x7b] + vrndscaless xmm7, xmm23, dword ptr [rdx + 508], 123 + +// CHECK: vrndscaless xmm7, xmm23, dword ptr [rdx + 512], 123 +// CHECK: encoding: [0x62,0xf3,0x45,0x00,0x0a,0xba,0x00,0x02,0x00,0x00,0x7b] + vrndscaless xmm7, xmm23, dword ptr [rdx + 512], 123 + +// CHECK: vrndscaless xmm7, xmm23, dword ptr [rdx - 512], 123 +// CHECK: encoding: [0x62,0xf3,0x45,0x00,0x0a,0x7a,0x80,0x7b] + vrndscaless xmm7, xmm23, dword ptr [rdx - 512], 123 + +// CHECK: vrndscaless xmm7, xmm23, dword ptr [rdx - 516], 123 +// CHECK: encoding: [0x62,0xf3,0x45,0x00,0x0a,0xba,0xfc,0xfd,0xff,0xff,0x7b] + vrndscaless xmm7, xmm23, dword ptr [rdx - 516], 123 + +// CHECK: vpcompressq zmmword ptr [rcx], zmm19 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x8b,0x19] + vpcompressq zmmword ptr [rcx], zmm19 + +// CHECK: vpcompressq zmmword ptr [rcx] {k3}, zmm19 +// CHECK: encoding: [0x62,0xe2,0xfd,0x4b,0x8b,0x19] + vpcompressq zmmword ptr [rcx] {k3}, zmm19 + +// CHECK: vpcompressq zmmword ptr [rax + 8*r14 + 4660], zmm19 +// CHECK: encoding: [0x62,0xa2,0xfd,0x48,0x8b,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpcompressq zmmword ptr [rax + 8*r14 + 4660], zmm19 + +// CHECK: vpcompressq zmmword ptr [rdx + 1016], zmm19 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x8b,0x5a,0x7f] + vpcompressq zmmword ptr [rdx + 1016], zmm19 + +// CHECK: vpcompressq zmmword ptr [rdx + 1024], zmm19 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x8b,0x9a,0x00,0x04,0x00,0x00] + vpcompressq zmmword ptr [rdx + 1024], zmm19 + +// CHECK: vpcompressq zmmword ptr [rdx - 1024], zmm19 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x8b,0x5a,0x80] + vpcompressq zmmword ptr [rdx - 1024], zmm19 + +// CHECK: vpcompressq zmmword ptr [rdx - 1032], zmm19 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x8b,0x9a,0xf8,0xfb,0xff,0xff] + vpcompressq zmmword ptr [rdx - 1032], zmm19 + +// CHECK: vpcompressq zmm12, zmm8 +// CHECK: encoding: [0x62,0x52,0xfd,0x48,0x8b,0xc4] + vpcompressq zmm12, zmm8 + +// CHECK: vpcompressq zmm12 {k6}, zmm8 +// CHECK: encoding: [0x62,0x52,0xfd,0x4e,0x8b,0xc4] + vpcompressq zmm12 {k6}, zmm8 + +// CHECK: vpcompressq zmm12 {k6} {z}, zmm8 +// CHECK: encoding: [0x62,0x52,0xfd,0xce,0x8b,0xc4] + vpcompressq zmm12 {k6} {z}, zmm8 + +// CHECK: kandw k5, k4, k6 +// CHECK: encoding: [0xc5,0xdc,0x41,0xee] + kandw k5, k4, k6 + +// CHECK: kandnw k5, k4, k6 +// CHECK: encoding: [0xc5,0xdc,0x42,0xee] + kandnw k5, k4, k6 + +// CHECK: korw k2, k3, k5 +// CHECK: encoding: [0xc5,0xe4,0x45,0xd5] + korw k2, k3, k5 + +// CHECK: kxnorw k2, k6, k7 +// CHECK: encoding: [0xc5,0xcc,0x46,0xd7] + kxnorw k2, k6, k7 + +// CHECK: kxorw k3, k4, k6 +// CHECK: encoding: [0xc5,0xdc,0x47,0xde] + kxorw k3, k4, k6 + +// CHECK: knotw k4, k3 +// CHECK: encoding: [0xc5,0xf8,0x44,0xe3] + knotw k4, k3 + +// CHECK: kortestw k3, k6 +// CHECK: encoding: [0xc5,0xf8,0x98,0xde] + kortestw k3, k6 + +// CHECK: kshiftrw k3, k5, 171 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x30,0xdd,0xab] + kshiftrw k3, k5, 171 + +// CHECK: kshiftrw k3, k5, 123 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x30,0xdd,0x7b] + kshiftrw k3, k5, 123 + +// CHECK: kshiftlw k3, k3, 171 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x32,0xdb,0xab] + kshiftlw k3, k3, 171 + +// CHECK: kshiftlw k3, k3, 123 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x32,0xdb,0x7b] + kshiftlw k3, k3, 123 + +// CHECK: kmovw k2, k5 +// CHECK: encoding: [0xc5,0xf8,0x90,0xd5] + kmovw k2, k5 + +// CHECK: kmovw k2, word ptr [rcx] +// CHECK: encoding: [0xc5,0xf8,0x90,0x11] + kmovw k2, word ptr [rcx] + +// CHECK: kmovw k2, word ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0xc4,0xa1,0x78,0x90,0x94,0xf0,0x34,0x12,0x00,0x00] + kmovw k2, word ptr [rax + 8*r14 + 4660] + +// CHECK: kmovw word ptr [rcx], k5 +// CHECK: encoding: [0xc5,0xf8,0x91,0x29] + kmovw word ptr [rcx], k5 + +// CHECK: kmovw word ptr [rax + 8*r14 + 4660], k5 +// CHECK: encoding: [0xc4,0xa1,0x78,0x91,0xac,0xf0,0x34,0x12,0x00,0x00] + kmovw word ptr [rax + 8*r14 + 4660], k5 + +// CHECK: kmovw k3, eax +// CHECK: encoding: [0xc5,0xf8,0x92,0xd8] + kmovw k3, eax + +// CHECK: kmovw k3, ebp +// CHECK: encoding: [0xc5,0xf8,0x92,0xdd] + kmovw k3, ebp + +// CHECK: kmovw k3, r13d +// CHECK: encoding: [0xc4,0xc1,0x78,0x92,0xdd] + kmovw k3, r13d + +// CHECK: kmovw eax, k3 +// CHECK: encoding: [0xc5,0xf8,0x93,0xc3] + kmovw eax, k3 + +// CHECK: kmovw ebp, k3 +// CHECK: encoding: [0xc5,0xf8,0x93,0xeb] + kmovw ebp, k3 + +// CHECK: kmovw r13d, k3 +// CHECK: encoding: [0xc5,0x78,0x93,0xeb] + kmovw r13d, k3 + +// CHECK: kunpckbw k2, k3, k7 +// CHECK: encoding: [0xc5,0xe5,0x4b,0xd7] + kunpckbw k2, k3, k7 + +// CHECK: vcvtps2ph ymmword ptr [rcx], zmm6, 171 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x1d,0x31,0xab] + vcvtps2ph ymmword ptr [rcx], zmm6, 171 + +// CHECK: vcvtps2ph ymmword ptr [rcx] {k1}, zmm6, 171 +// CHECK: encoding: [0x62,0xf3,0x7d,0x49,0x1d,0x31,0xab] + vcvtps2ph ymmword ptr [rcx] {k1}, zmm6, 171 + +// CHECK: vcvtps2ph ymmword ptr [rcx], zmm6, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x1d,0x31,0x7b] + vcvtps2ph ymmword ptr [rcx], zmm6, 123 + +// CHECK: vcvtps2ph ymmword ptr [rax + 8*r14 + 4660], zmm6, 123 +// CHECK: encoding: [0x62,0xb3,0x7d,0x48,0x1d,0xb4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vcvtps2ph ymmword ptr [rax + 8*r14 + 4660], zmm6, 123 + +// CHECK: vcvtps2ph ymmword ptr [rdx + 4064], zmm6, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x1d,0x72,0x7f,0x7b] + vcvtps2ph ymmword ptr [rdx + 4064], zmm6, 123 + +// CHECK: vcvtps2ph ymmword ptr [rdx + 4096], zmm6, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x1d,0xb2,0x00,0x10,0x00,0x00,0x7b] + vcvtps2ph ymmword ptr [rdx + 4096], zmm6, 123 + +// CHECK: vcvtps2ph ymmword ptr [rdx - 4096], zmm6, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x1d,0x72,0x80,0x7b] + vcvtps2ph ymmword ptr [rdx - 4096], zmm6, 123 + +// CHECK: vcvtps2ph ymmword ptr [rdx - 4128], zmm6, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x1d,0xb2,0xe0,0xef,0xff,0xff,0x7b] + vcvtps2ph ymmword ptr [rdx - 4128], zmm6, 123 + +// CHECK: vextractf32x4 xmmword ptr [rcx], zmm22, 171 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0x31,0xab] + vextractf32x4 xmmword ptr [rcx], zmm22, 171 + +// CHECK: vextractf32x4 xmmword ptr [rcx] {k3}, zmm22, 171 +// CHECK: encoding: [0x62,0xe3,0x7d,0x4b,0x19,0x31,0xab] + vextractf32x4 xmmword ptr [rcx] {k3}, zmm22, 171 + +// CHECK: vextractf32x4 xmmword ptr [rcx], zmm22, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0x31,0x7b] + vextractf32x4 xmmword ptr [rcx], zmm22, 123 + +// CHECK: vextractf32x4 xmmword ptr [rax + 8*r14 + 4660], zmm22, 123 +// CHECK: encoding: [0x62,0xa3,0x7d,0x48,0x19,0xb4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vextractf32x4 xmmword ptr [rax + 8*r14 + 4660], zmm22, 123 + +// CHECK: vextractf32x4 xmmword ptr [rdx + 2032], zmm22, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0x72,0x7f,0x7b] + vextractf32x4 xmmword ptr [rdx + 2032], zmm22, 123 + +// CHECK: vextractf32x4 xmmword ptr [rdx + 2048], zmm22, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0xb2,0x00,0x08,0x00,0x00,0x7b] + vextractf32x4 xmmword ptr [rdx + 2048], zmm22, 123 + +// CHECK: vextractf32x4 xmmword ptr [rdx - 2048], zmm22, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0x72,0x80,0x7b] + vextractf32x4 xmmword ptr [rdx - 2048], zmm22, 123 + +// CHECK: vextractf32x4 xmmword ptr [rdx - 2064], zmm22, 123 +// CHECK: encoding: [0x62,0xe3,0x7d,0x48,0x19,0xb2,0xf0,0xf7,0xff,0xff,0x7b] + vextractf32x4 xmmword ptr [rdx - 2064], zmm22, 123 + +// CHECK: vextractf64x4 ymmword ptr [rcx], zmm12, 171 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x1b,0x21,0xab] + vextractf64x4 ymmword ptr [rcx], zmm12, 171 + +// CHECK: vextractf64x4 ymmword ptr [rcx] {k7}, zmm12, 171 +// CHECK: encoding: [0x62,0x73,0xfd,0x4f,0x1b,0x21,0xab] + vextractf64x4 ymmword ptr [rcx] {k7}, zmm12, 171 + +// CHECK: vextractf64x4 ymmword ptr [rcx], zmm12, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x1b,0x21,0x7b] + vextractf64x4 ymmword ptr [rcx], zmm12, 123 + +// CHECK: vextractf64x4 ymmword ptr [rax + 8*r14 + 4660], zmm12, 123 +// CHECK: encoding: [0x62,0x33,0xfd,0x48,0x1b,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vextractf64x4 ymmword ptr [rax + 8*r14 + 4660], zmm12, 123 + +// CHECK: vextractf64x4 ymmword ptr [rdx + 4064], zmm12, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x1b,0x62,0x7f,0x7b] + vextractf64x4 ymmword ptr [rdx + 4064], zmm12, 123 + +// CHECK: vextractf64x4 ymmword ptr [rdx + 4096], zmm12, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x1b,0xa2,0x00,0x10,0x00,0x00,0x7b] + vextractf64x4 ymmword ptr [rdx + 4096], zmm12, 123 + +// CHECK: vextractf64x4 ymmword ptr [rdx - 4096], zmm12, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x1b,0x62,0x80,0x7b] + vextractf64x4 ymmword ptr [rdx - 4096], zmm12, 123 + +// CHECK: vextractf64x4 ymmword ptr [rdx - 4128], zmm12, 123 +// CHECK: encoding: [0x62,0x73,0xfd,0x48,0x1b,0xa2,0xe0,0xef,0xff,0xff,0x7b] + vextractf64x4 ymmword ptr [rdx - 4128], zmm12, 123 + +// CHECK: vextracti32x4 xmmword ptr [rcx], zmm1, 171 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x39,0x09,0xab] + vextracti32x4 xmmword ptr [rcx], zmm1, 171 + +// CHECK: vextracti32x4 xmmword ptr [rcx] {k3}, zmm1, 171 +// CHECK: encoding: [0x62,0xf3,0x7d,0x4b,0x39,0x09,0xab] + vextracti32x4 xmmword ptr [rcx] {k3}, zmm1, 171 + +// CHECK: vextracti32x4 xmmword ptr [rcx], zmm1, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x39,0x09,0x7b] + vextracti32x4 xmmword ptr [rcx], zmm1, 123 + +// CHECK: vextracti32x4 xmmword ptr [rax + 8*r14 + 4660], zmm1, 123 +// CHECK: encoding: [0x62,0xb3,0x7d,0x48,0x39,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vextracti32x4 xmmword ptr [rax + 8*r14 + 4660], zmm1, 123 + +// CHECK: vextracti32x4 xmmword ptr [rdx + 2032], zmm1, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x39,0x4a,0x7f,0x7b] + vextracti32x4 xmmword ptr [rdx + 2032], zmm1, 123 + +// CHECK: vextracti32x4 xmmword ptr [rdx + 2048], zmm1, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x39,0x8a,0x00,0x08,0x00,0x00,0x7b] + vextracti32x4 xmmword ptr [rdx + 2048], zmm1, 123 + +// CHECK: vextracti32x4 xmmword ptr [rdx - 2048], zmm1, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x39,0x4a,0x80,0x7b] + vextracti32x4 xmmword ptr [rdx - 2048], zmm1, 123 + +// CHECK: vextracti32x4 xmmword ptr [rdx - 2064], zmm1, 123 +// CHECK: encoding: [0x62,0xf3,0x7d,0x48,0x39,0x8a,0xf0,0xf7,0xff,0xff,0x7b] + vextracti32x4 xmmword ptr [rdx - 2064], zmm1, 123 + +// CHECK: vextracti64x4 ymmword ptr [rcx], zmm2, 171 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x3b,0x11,0xab] + vextracti64x4 ymmword ptr [rcx], zmm2, 171 + +// CHECK: vextracti64x4 ymmword ptr [rcx] {k2}, zmm2, 171 +// CHECK: encoding: [0x62,0xf3,0xfd,0x4a,0x3b,0x11,0xab] + vextracti64x4 ymmword ptr [rcx] {k2}, zmm2, 171 + +// CHECK: vextracti64x4 ymmword ptr [rcx], zmm2, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x3b,0x11,0x7b] + vextracti64x4 ymmword ptr [rcx], zmm2, 123 + +// CHECK: vextracti64x4 ymmword ptr [rax + 8*r14 + 4660], zmm2, 123 +// CHECK: encoding: [0x62,0xb3,0xfd,0x48,0x3b,0x94,0xf0,0x34,0x12,0x00,0x00,0x7b] + vextracti64x4 ymmword ptr [rax + 8*r14 + 4660], zmm2, 123 + +// CHECK: vextracti64x4 ymmword ptr [rdx + 4064], zmm2, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x3b,0x52,0x7f,0x7b] + vextracti64x4 ymmword ptr [rdx + 4064], zmm2, 123 + +// CHECK: vextracti64x4 ymmword ptr [rdx + 4096], zmm2, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x3b,0x92,0x00,0x10,0x00,0x00,0x7b] + vextracti64x4 ymmword ptr [rdx + 4096], zmm2, 123 + +// CHECK: vextracti64x4 ymmword ptr [rdx - 4096], zmm2, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x3b,0x52,0x80,0x7b] + vextracti64x4 ymmword ptr [rdx - 4096], zmm2, 123 + +// CHECK: vextracti64x4 ymmword ptr [rdx - 4128], zmm2, 123 +// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x3b,0x92,0xe0,0xef,0xff,0xff,0x7b] + vextracti64x4 ymmword ptr [rdx - 4128], zmm2, 123 + +// CHECK: vmovapd zmmword ptr [rcx], zmm27 +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x29,0x19] + vmovapd zmmword ptr [rcx], zmm27 + +// CHECK: vmovapd zmmword ptr [rcx] {k1}, zmm27 +// CHECK: encoding: [0x62,0x61,0xfd,0x49,0x29,0x19] + vmovapd zmmword ptr [rcx] {k1}, zmm27 + +// CHECK: vmovapd zmmword ptr [rax + 8*r14 + 4660], zmm27 +// CHECK: encoding: [0x62,0x21,0xfd,0x48,0x29,0x9c,0xf0,0x34,0x12,0x00,0x00] + vmovapd zmmword ptr [rax + 8*r14 + 4660], zmm27 + +// CHECK: vmovapd zmmword ptr [rdx + 8128], zmm27 +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x29,0x5a,0x7f] + vmovapd zmmword ptr [rdx + 8128], zmm27 + +// CHECK: vmovapd zmmword ptr [rdx + 8192], zmm27 +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x29,0x9a,0x00,0x20,0x00,0x00] + vmovapd zmmword ptr [rdx + 8192], zmm27 + +// CHECK: vmovapd zmmword ptr [rdx - 8192], zmm27 +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x29,0x5a,0x80] + vmovapd zmmword ptr [rdx - 8192], zmm27 + +// CHECK: vmovapd zmmword ptr [rdx - 8256], zmm27 +// CHECK: encoding: [0x62,0x61,0xfd,0x48,0x29,0x9a,0xc0,0xdf,0xff,0xff] + vmovapd zmmword ptr [rdx - 8256], zmm27 + +// CHECK: vmovaps zmmword ptr [rcx], zmm17 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x29,0x09] + vmovaps zmmword ptr [rcx], zmm17 + +// CHECK: vmovaps zmmword ptr [rcx] {k5}, zmm17 +// CHECK: encoding: [0x62,0xe1,0x7c,0x4d,0x29,0x09] + vmovaps zmmword ptr [rcx] {k5}, zmm17 + +// CHECK: vmovaps zmmword ptr [rax + 8*r14 + 4660], zmm17 +// CHECK: encoding: [0x62,0xa1,0x7c,0x48,0x29,0x8c,0xf0,0x34,0x12,0x00,0x00] + vmovaps zmmword ptr [rax + 8*r14 + 4660], zmm17 + +// CHECK: vmovaps zmmword ptr [rdx + 8128], zmm17 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x29,0x4a,0x7f] + vmovaps zmmword ptr [rdx + 8128], zmm17 + +// CHECK: vmovaps zmmword ptr [rdx + 8192], zmm17 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x29,0x8a,0x00,0x20,0x00,0x00] + vmovaps zmmword ptr [rdx + 8192], zmm17 + +// CHECK: vmovaps zmmword ptr [rdx - 8192], zmm17 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x29,0x4a,0x80] + vmovaps zmmword ptr [rdx - 8192], zmm17 + +// CHECK: vmovaps zmmword ptr [rdx - 8256], zmm17 +// CHECK: encoding: [0x62,0xe1,0x7c,0x48,0x29,0x8a,0xc0,0xdf,0xff,0xff] + vmovaps zmmword ptr [rdx - 8256], zmm17 + +// CHECK: vmovdqa32 zmmword ptr [rcx], zmm3 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x7f,0x19] + vmovdqa32 zmmword ptr [rcx], zmm3 + +// CHECK: vmovdqa32 zmmword ptr [rcx] {k1}, zmm3 +// CHECK: encoding: [0x62,0xf1,0x7d,0x49,0x7f,0x19] + vmovdqa32 zmmword ptr [rcx] {k1}, zmm3 + +// CHECK: vmovdqa32 zmmword ptr [rax + 8*r14 + 4660], zmm3 +// CHECK: encoding: [0x62,0xb1,0x7d,0x48,0x7f,0x9c,0xf0,0x34,0x12,0x00,0x00] + vmovdqa32 zmmword ptr [rax + 8*r14 + 4660], zmm3 + +// CHECK: vmovdqa32 zmmword ptr [rdx + 8128], zmm3 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x7f,0x5a,0x7f] + vmovdqa32 zmmword ptr [rdx + 8128], zmm3 + +// CHECK: vmovdqa32 zmmword ptr [rdx + 8192], zmm3 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x7f,0x9a,0x00,0x20,0x00,0x00] + vmovdqa32 zmmword ptr [rdx + 8192], zmm3 + +// CHECK: vmovdqa32 zmmword ptr [rdx - 8192], zmm3 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x7f,0x5a,0x80] + vmovdqa32 zmmword ptr [rdx - 8192], zmm3 + +// CHECK: vmovdqa32 zmmword ptr [rdx - 8256], zmm3 +// CHECK: encoding: [0x62,0xf1,0x7d,0x48,0x7f,0x9a,0xc0,0xdf,0xff,0xff] + vmovdqa32 zmmword ptr [rdx - 8256], zmm3 + +// CHECK: vmovdqa64 zmmword ptr [rcx], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x11] + vmovdqa64 zmmword ptr [rcx], zmm18 + +// CHECK: vmovdqa64 zmmword ptr [rcx] {k1}, zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x49,0x7f,0x11] + vmovdqa64 zmmword ptr [rcx] {k1}, zmm18 + +// CHECK: vmovdqa64 zmmword ptr [rax + 8*r14 + 4660], zmm18 +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x7f,0x94,0xf0,0x34,0x12,0x00,0x00] + vmovdqa64 zmmword ptr [rax + 8*r14 + 4660], zmm18 + +// CHECK: vmovdqa64 zmmword ptr [rdx + 8128], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x52,0x7f] + vmovdqa64 zmmword ptr [rdx + 8128], zmm18 + +// CHECK: vmovdqa64 zmmword ptr [rdx + 8192], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x92,0x00,0x20,0x00,0x00] + vmovdqa64 zmmword ptr [rdx + 8192], zmm18 + +// CHECK: vmovdqa64 zmmword ptr [rdx - 8192], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x52,0x80] + vmovdqa64 zmmword ptr [rdx - 8192], zmm18 + +// CHECK: vmovdqa64 zmmword ptr [rdx - 8256], zmm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x7f,0x92,0xc0,0xdf,0xff,0xff] + vmovdqa64 zmmword ptr [rdx - 8256], zmm18 + +// CHECK: vmovdqu32 zmmword ptr [rcx], zmm2 +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x7f,0x11] + vmovdqu32 zmmword ptr [rcx], zmm2 + +// CHECK: vmovdqu32 zmmword ptr [rcx] {k7}, zmm2 +// CHECK: encoding: [0x62,0xf1,0x7e,0x4f,0x7f,0x11] + vmovdqu32 zmmword ptr [rcx] {k7}, zmm2 + +// CHECK: vmovdqu32 zmmword ptr [rax + 8*r14 + 4660], zmm2 +// CHECK: encoding: [0x62,0xb1,0x7e,0x48,0x7f,0x94,0xf0,0x34,0x12,0x00,0x00] + vmovdqu32 zmmword ptr [rax + 8*r14 + 4660], zmm2 + +// CHECK: vmovdqu32 zmmword ptr [rdx + 8128], zmm2 +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x7f,0x52,0x7f] + vmovdqu32 zmmword ptr [rdx + 8128], zmm2 + +// CHECK: vmovdqu32 zmmword ptr [rdx + 8192], zmm2 +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x7f,0x92,0x00,0x20,0x00,0x00] + vmovdqu32 zmmword ptr [rdx + 8192], zmm2 + +// CHECK: vmovdqu32 zmmword ptr [rdx - 8192], zmm2 +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x7f,0x52,0x80] + vmovdqu32 zmmword ptr [rdx - 8192], zmm2 + +// CHECK: vmovdqu32 zmmword ptr [rdx - 8256], zmm2 +// CHECK: encoding: [0x62,0xf1,0x7e,0x48,0x7f,0x92,0xc0,0xdf,0xff,0xff] + vmovdqu32 zmmword ptr [rdx - 8256], zmm2 + +// CHECK: vmovdqu64 zmmword ptr [rcx], zmm7 +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x7f,0x39] + vmovdqu64 zmmword ptr [rcx], zmm7 + +// CHECK: vmovdqu64 zmmword ptr [rcx] {k1}, zmm7 +// CHECK: encoding: [0x62,0xf1,0xfe,0x49,0x7f,0x39] + vmovdqu64 zmmword ptr [rcx] {k1}, zmm7 + +// CHECK: vmovdqu64 zmmword ptr [rax + 8*r14 + 4660], zmm7 +// CHECK: encoding: [0x62,0xb1,0xfe,0x48,0x7f,0xbc,0xf0,0x34,0x12,0x00,0x00] + vmovdqu64 zmmword ptr [rax + 8*r14 + 4660], zmm7 + +// CHECK: vmovdqu64 zmmword ptr [rdx + 8128], zmm7 +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x7f,0x7a,0x7f] + vmovdqu64 zmmword ptr [rdx + 8128], zmm7 + +// CHECK: vmovdqu64 zmmword ptr [rdx + 8192], zmm7 +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x7f,0xba,0x00,0x20,0x00,0x00] + vmovdqu64 zmmword ptr [rdx + 8192], zmm7 + +// CHECK: vmovdqu64 zmmword ptr [rdx - 8192], zmm7 +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x7f,0x7a,0x80] + vmovdqu64 zmmword ptr [rdx - 8192], zmm7 + +// CHECK: vmovdqu64 zmmword ptr [rdx - 8256], zmm7 +// CHECK: encoding: [0x62,0xf1,0xfe,0x48,0x7f,0xba,0xc0,0xdf,0xff,0xff] + vmovdqu64 zmmword ptr [rdx - 8256], zmm7 + +// CHECK: vmovupd zmmword ptr [rcx], zmm8 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x01] + vmovupd zmmword ptr [rcx], zmm8 + +// CHECK: vmovupd zmmword ptr [rcx] {k4}, zmm8 +// CHECK: encoding: [0x62,0x71,0xfd,0x4c,0x11,0x01] + vmovupd zmmword ptr [rcx] {k4}, zmm8 + +// CHECK: vmovupd zmmword ptr [rax + 8*r14 + 4660], zmm8 +// CHECK: encoding: [0x62,0x31,0xfd,0x48,0x11,0x84,0xf0,0x34,0x12,0x00,0x00] + vmovupd zmmword ptr [rax + 8*r14 + 4660], zmm8 + +// CHECK: vmovupd zmmword ptr [rdx + 8128], zmm8 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x42,0x7f] + vmovupd zmmword ptr [rdx + 8128], zmm8 + +// CHECK: vmovupd zmmword ptr [rdx + 8192], zmm8 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x82,0x00,0x20,0x00,0x00] + vmovupd zmmword ptr [rdx + 8192], zmm8 + +// CHECK: vmovupd zmmword ptr [rdx - 8192], zmm8 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x42,0x80] + vmovupd zmmword ptr [rdx - 8192], zmm8 + +// CHECK: vmovupd zmmword ptr [rdx - 8256], zmm8 +// CHECK: encoding: [0x62,0x71,0xfd,0x48,0x11,0x82,0xc0,0xdf,0xff,0xff] + vmovupd zmmword ptr [rdx - 8256], zmm8 + +// CHECK: vmovups zmmword ptr [rcx], zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x11,0x21] + vmovups zmmword ptr [rcx], zmm4 + +// CHECK: vmovups zmmword ptr [rcx] {k1}, zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0x49,0x11,0x21] + vmovups zmmword ptr [rcx] {k1}, zmm4 + +// CHECK: vmovups zmmword ptr [rax + 8*r14 + 4660], zmm4 +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x11,0xa4,0xf0,0x34,0x12,0x00,0x00] + vmovups zmmword ptr [rax + 8*r14 + 4660], zmm4 + +// CHECK: vmovups zmmword ptr [rdx + 8128], zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x11,0x62,0x7f] + vmovups zmmword ptr [rdx + 8128], zmm4 + +// CHECK: vmovups zmmword ptr [rdx + 8192], zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x11,0xa2,0x00,0x20,0x00,0x00] + vmovups zmmword ptr [rdx + 8192], zmm4 + +// CHECK: vmovups zmmword ptr [rdx - 8192], zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x11,0x62,0x80] + vmovups zmmword ptr [rdx - 8192], zmm4 + +// CHECK: vmovups zmmword ptr [rdx - 8256], zmm4 +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x11,0xa2,0xc0,0xdf,0xff,0xff] + vmovups zmmword ptr [rdx - 8256], zmm4 + +// CHECK: vpmovqb qword ptr [rcx], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x32,0x31] + vpmovqb qword ptr [rcx], zmm14 + +// CHECK: vpmovqb qword ptr [rcx] {k2}, zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x4a,0x32,0x31] + vpmovqb qword ptr [rcx] {k2}, zmm14 + +// CHECK: vpmovqb qword ptr [rax + 8*r14 + 4660], zmm14 +// CHECK: encoding: [0x62,0x32,0x7e,0x48,0x32,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpmovqb qword ptr [rax + 8*r14 + 4660], zmm14 + +// CHECK: vpmovqb qword ptr [rdx + 1016], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x32,0x72,0x7f] + vpmovqb qword ptr [rdx + 1016], zmm14 + +// CHECK: vpmovqb qword ptr [rdx + 1024], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x32,0xb2,0x00,0x04,0x00,0x00] + vpmovqb qword ptr [rdx + 1024], zmm14 + +// CHECK: vpmovqb qword ptr [rdx - 1024], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x32,0x72,0x80] + vpmovqb qword ptr [rdx - 1024], zmm14 + +// CHECK: vpmovqb qword ptr [rdx - 1032], zmm14 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x32,0xb2,0xf8,0xfb,0xff,0xff] + vpmovqb qword ptr [rdx - 1032], zmm14 + +// CHECK: vpmovsqb qword ptr [rcx], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x11] + vpmovsqb qword ptr [rcx], zmm18 + +// CHECK: vpmovsqb qword ptr [rcx] {k6}, zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x4e,0x22,0x11] + vpmovsqb qword ptr [rcx] {k6}, zmm18 + +// CHECK: vpmovsqb qword ptr [rax + 8*r14 + 4660], zmm18 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x22,0x94,0xf0,0x34,0x12,0x00,0x00] + vpmovsqb qword ptr [rax + 8*r14 + 4660], zmm18 + +// CHECK: vpmovsqb qword ptr [rdx + 1016], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x52,0x7f] + vpmovsqb qword ptr [rdx + 1016], zmm18 + +// CHECK: vpmovsqb qword ptr [rdx + 1024], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x92,0x00,0x04,0x00,0x00] + vpmovsqb qword ptr [rdx + 1024], zmm18 + +// CHECK: vpmovsqb qword ptr [rdx - 1024], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x52,0x80] + vpmovsqb qword ptr [rdx - 1024], zmm18 + +// CHECK: vpmovsqb qword ptr [rdx - 1032], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x22,0x92,0xf8,0xfb,0xff,0xff] + vpmovsqb qword ptr [rdx - 1032], zmm18 + +// CHECK: vpmovusqb qword ptr [rcx], zmm13 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x12,0x29] + vpmovusqb qword ptr [rcx], zmm13 + +// CHECK: vpmovusqb qword ptr [rcx] {k2}, zmm13 +// CHECK: encoding: [0x62,0x72,0x7e,0x4a,0x12,0x29] + vpmovusqb qword ptr [rcx] {k2}, zmm13 + +// CHECK: vpmovusqb qword ptr [rax + 8*r14 + 4660], zmm13 +// CHECK: encoding: [0x62,0x32,0x7e,0x48,0x12,0xac,0xf0,0x34,0x12,0x00,0x00] + vpmovusqb qword ptr [rax + 8*r14 + 4660], zmm13 + +// CHECK: vpmovusqb qword ptr [rdx + 1016], zmm13 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x12,0x6a,0x7f] + vpmovusqb qword ptr [rdx + 1016], zmm13 + +// CHECK: vpmovusqb qword ptr [rdx + 1024], zmm13 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x12,0xaa,0x00,0x04,0x00,0x00] + vpmovusqb qword ptr [rdx + 1024], zmm13 + +// CHECK: vpmovusqb qword ptr [rdx - 1024], zmm13 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x12,0x6a,0x80] + vpmovusqb qword ptr [rdx - 1024], zmm13 + +// CHECK: vpmovusqb qword ptr [rdx - 1032], zmm13 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x12,0xaa,0xf8,0xfb,0xff,0xff] + vpmovusqb qword ptr [rdx - 1032], zmm13 + +// CHECK: vpmovqw xmmword ptr [rcx], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x34,0x31] + vpmovqw xmmword ptr [rcx], zmm22 + +// CHECK: vpmovqw xmmword ptr [rcx] {k6}, zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x4e,0x34,0x31] + vpmovqw xmmword ptr [rcx] {k6}, zmm22 + +// CHECK: vpmovqw xmmword ptr [rax + 8*r14 + 4660], zmm22 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x34,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpmovqw xmmword ptr [rax + 8*r14 + 4660], zmm22 + +// CHECK: vpmovqw xmmword ptr [rdx + 2032], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x34,0x72,0x7f] + vpmovqw xmmword ptr [rdx + 2032], zmm22 + +// CHECK: vpmovqw xmmword ptr [rdx + 2048], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x34,0xb2,0x00,0x08,0x00,0x00] + vpmovqw xmmword ptr [rdx + 2048], zmm22 + +// CHECK: vpmovqw xmmword ptr [rdx - 2048], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x34,0x72,0x80] + vpmovqw xmmword ptr [rdx - 2048], zmm22 + +// CHECK: vpmovqw xmmword ptr [rdx - 2064], zmm22 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x34,0xb2,0xf0,0xf7,0xff,0xff] + vpmovqw xmmword ptr [rdx - 2064], zmm22 + +// CHECK: vpmovsqw xmmword ptr [rcx], zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x24,0x11] + vpmovsqw xmmword ptr [rcx], zmm26 + +// CHECK: vpmovsqw xmmword ptr [rcx] {k2}, zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0x4a,0x24,0x11] + vpmovsqw xmmword ptr [rcx] {k2}, zmm26 + +// CHECK: vpmovsqw xmmword ptr [rax + 8*r14 + 4660], zmm26 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x24,0x94,0xf0,0x34,0x12,0x00,0x00] + vpmovsqw xmmword ptr [rax + 8*r14 + 4660], zmm26 + +// CHECK: vpmovsqw xmmword ptr [rdx + 2032], zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x24,0x52,0x7f] + vpmovsqw xmmword ptr [rdx + 2032], zmm26 + +// CHECK: vpmovsqw xmmword ptr [rdx + 2048], zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x24,0x92,0x00,0x08,0x00,0x00] + vpmovsqw xmmword ptr [rdx + 2048], zmm26 + +// CHECK: vpmovsqw xmmword ptr [rdx - 2048], zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x24,0x52,0x80] + vpmovsqw xmmword ptr [rdx - 2048], zmm26 + +// CHECK: vpmovsqw xmmword ptr [rdx - 2064], zmm26 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x24,0x92,0xf0,0xf7,0xff,0xff] + vpmovsqw xmmword ptr [rdx - 2064], zmm26 + +// CHECK: vpmovusqw xmmword ptr [rcx], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x14,0x31] + vpmovusqw xmmword ptr [rcx], zmm6 + +// CHECK: vpmovusqw xmmword ptr [rcx] {k7}, zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4f,0x14,0x31] + vpmovusqw xmmword ptr [rcx] {k7}, zmm6 + +// CHECK: vpmovusqw xmmword ptr [rax + 8*r14 + 4660], zmm6 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x14,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpmovusqw xmmword ptr [rax + 8*r14 + 4660], zmm6 + +// CHECK: vpmovusqw xmmword ptr [rdx + 2032], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x14,0x72,0x7f] + vpmovusqw xmmword ptr [rdx + 2032], zmm6 + +// CHECK: vpmovusqw xmmword ptr [rdx + 2048], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x14,0xb2,0x00,0x08,0x00,0x00] + vpmovusqw xmmword ptr [rdx + 2048], zmm6 + +// CHECK: vpmovusqw xmmword ptr [rdx - 2048], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x14,0x72,0x80] + vpmovusqw xmmword ptr [rdx - 2048], zmm6 + +// CHECK: vpmovusqw xmmword ptr [rdx - 2064], zmm6 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x14,0xb2,0xf0,0xf7,0xff,0xff] + vpmovusqw xmmword ptr [rdx - 2064], zmm6 + +// CHECK: vpmovqd ymmword ptr [rcx], zmm10 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x35,0x11] + vpmovqd ymmword ptr [rcx], zmm10 + +// CHECK: vpmovqd ymmword ptr [rcx] {k5}, zmm10 +// CHECK: encoding: [0x62,0x72,0x7e,0x4d,0x35,0x11] + vpmovqd ymmword ptr [rcx] {k5}, zmm10 + +// CHECK: vpmovqd ymmword ptr [rax + 8*r14 + 4660], zmm10 +// CHECK: encoding: [0x62,0x32,0x7e,0x48,0x35,0x94,0xf0,0x34,0x12,0x00,0x00] + vpmovqd ymmword ptr [rax + 8*r14 + 4660], zmm10 + +// CHECK: vpmovqd ymmword ptr [rdx + 4064], zmm10 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x35,0x52,0x7f] + vpmovqd ymmword ptr [rdx + 4064], zmm10 + +// CHECK: vpmovqd ymmword ptr [rdx + 4096], zmm10 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x35,0x92,0x00,0x10,0x00,0x00] + vpmovqd ymmword ptr [rdx + 4096], zmm10 + +// CHECK: vpmovqd ymmword ptr [rdx - 4096], zmm10 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x35,0x52,0x80] + vpmovqd ymmword ptr [rdx - 4096], zmm10 + +// CHECK: vpmovqd ymmword ptr [rdx - 4128], zmm10 +// CHECK: encoding: [0x62,0x72,0x7e,0x48,0x35,0x92,0xe0,0xef,0xff,0xff] + vpmovqd ymmword ptr [rdx - 4128], zmm10 + +// CHECK: vpmovsqd ymmword ptr [rcx], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x25,0x11] + vpmovsqd ymmword ptr [rcx], zmm18 + +// CHECK: vpmovsqd ymmword ptr [rcx] {k5}, zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x4d,0x25,0x11] + vpmovsqd ymmword ptr [rcx] {k5}, zmm18 + +// CHECK: vpmovsqd ymmword ptr [rax + 8*r14 + 4660], zmm18 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x25,0x94,0xf0,0x34,0x12,0x00,0x00] + vpmovsqd ymmword ptr [rax + 8*r14 + 4660], zmm18 + +// CHECK: vpmovsqd ymmword ptr [rdx + 4064], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x25,0x52,0x7f] + vpmovsqd ymmword ptr [rdx + 4064], zmm18 + +// CHECK: vpmovsqd ymmword ptr [rdx + 4096], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x25,0x92,0x00,0x10,0x00,0x00] + vpmovsqd ymmword ptr [rdx + 4096], zmm18 + +// CHECK: vpmovsqd ymmword ptr [rdx - 4096], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x25,0x52,0x80] + vpmovsqd ymmword ptr [rdx - 4096], zmm18 + +// CHECK: vpmovsqd ymmword ptr [rdx - 4128], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x25,0x92,0xe0,0xef,0xff,0xff] + vpmovsqd ymmword ptr [rdx - 4128], zmm18 + +// CHECK: vpmovusqd ymmword ptr [rcx], zmm17 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0x09] + vpmovusqd ymmword ptr [rcx], zmm17 + +// CHECK: vpmovusqd ymmword ptr [rcx] {k4}, zmm17 +// CHECK: encoding: [0x62,0xe2,0x7e,0x4c,0x15,0x09] + vpmovusqd ymmword ptr [rcx] {k4}, zmm17 + +// CHECK: vpmovusqd ymmword ptr [rax + 8*r14 + 4660], zmm17 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x15,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpmovusqd ymmword ptr [rax + 8*r14 + 4660], zmm17 + +// CHECK: vpmovusqd ymmword ptr [rdx + 4064], zmm17 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0x4a,0x7f] + vpmovusqd ymmword ptr [rdx + 4064], zmm17 + +// CHECK: vpmovusqd ymmword ptr [rdx + 4096], zmm17 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0x8a,0x00,0x10,0x00,0x00] + vpmovusqd ymmword ptr [rdx + 4096], zmm17 + +// CHECK: vpmovusqd ymmword ptr [rdx - 4096], zmm17 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0x4a,0x80] + vpmovusqd ymmword ptr [rdx - 4096], zmm17 + +// CHECK: vpmovusqd ymmword ptr [rdx - 4128], zmm17 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x15,0x8a,0xe0,0xef,0xff,0xff] + vpmovusqd ymmword ptr [rdx - 4128], zmm17 + +// CHECK: vpmovdb xmmword ptr [rcx], zmm29 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x31,0x29] + vpmovdb xmmword ptr [rcx], zmm29 + +// CHECK: vpmovdb xmmword ptr [rcx] {k4}, zmm29 +// CHECK: encoding: [0x62,0x62,0x7e,0x4c,0x31,0x29] + vpmovdb xmmword ptr [rcx] {k4}, zmm29 + +// CHECK: vpmovdb xmmword ptr [rax + 8*r14 + 4660], zmm29 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x31,0xac,0xf0,0x34,0x12,0x00,0x00] + vpmovdb xmmword ptr [rax + 8*r14 + 4660], zmm29 + +// CHECK: vpmovdb xmmword ptr [rdx + 2032], zmm29 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x31,0x6a,0x7f] + vpmovdb xmmword ptr [rdx + 2032], zmm29 + +// CHECK: vpmovdb xmmword ptr [rdx + 2048], zmm29 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x31,0xaa,0x00,0x08,0x00,0x00] + vpmovdb xmmword ptr [rdx + 2048], zmm29 + +// CHECK: vpmovdb xmmword ptr [rdx - 2048], zmm29 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x31,0x6a,0x80] + vpmovdb xmmword ptr [rdx - 2048], zmm29 + +// CHECK: vpmovdb xmmword ptr [rdx - 2064], zmm29 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x31,0xaa,0xf0,0xf7,0xff,0xff] + vpmovdb xmmword ptr [rdx - 2064], zmm29 + +// CHECK: vpmovsdb xmmword ptr [rcx], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x21,0x21] + vpmovsdb xmmword ptr [rcx], zmm28 + +// CHECK: vpmovsdb xmmword ptr [rcx] {k5}, zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x4d,0x21,0x21] + vpmovsdb xmmword ptr [rcx] {k5}, zmm28 + +// CHECK: vpmovsdb xmmword ptr [rax + 8*r14 + 4660], zmm28 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x21,0xa4,0xf0,0x34,0x12,0x00,0x00] + vpmovsdb xmmword ptr [rax + 8*r14 + 4660], zmm28 + +// CHECK: vpmovsdb xmmword ptr [rdx + 2032], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x21,0x62,0x7f] + vpmovsdb xmmword ptr [rdx + 2032], zmm28 + +// CHECK: vpmovsdb xmmword ptr [rdx + 2048], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x21,0xa2,0x00,0x08,0x00,0x00] + vpmovsdb xmmword ptr [rdx + 2048], zmm28 + +// CHECK: vpmovsdb xmmword ptr [rdx - 2048], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x21,0x62,0x80] + vpmovsdb xmmword ptr [rdx - 2048], zmm28 + +// CHECK: vpmovsdb xmmword ptr [rdx - 2064], zmm28 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x21,0xa2,0xf0,0xf7,0xff,0xff] + vpmovsdb xmmword ptr [rdx - 2064], zmm28 + +// CHECK: vpmovusdb xmmword ptr [rcx], zmm30 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x11,0x31] + vpmovusdb xmmword ptr [rcx], zmm30 + +// CHECK: vpmovusdb xmmword ptr [rcx] {k1}, zmm30 +// CHECK: encoding: [0x62,0x62,0x7e,0x49,0x11,0x31] + vpmovusdb xmmword ptr [rcx] {k1}, zmm30 + +// CHECK: vpmovusdb xmmword ptr [rax + 8*r14 + 4660], zmm30 +// CHECK: encoding: [0x62,0x22,0x7e,0x48,0x11,0xb4,0xf0,0x34,0x12,0x00,0x00] + vpmovusdb xmmword ptr [rax + 8*r14 + 4660], zmm30 + +// CHECK: vpmovusdb xmmword ptr [rdx + 2032], zmm30 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x11,0x72,0x7f] + vpmovusdb xmmword ptr [rdx + 2032], zmm30 + +// CHECK: vpmovusdb xmmword ptr [rdx + 2048], zmm30 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x11,0xb2,0x00,0x08,0x00,0x00] + vpmovusdb xmmword ptr [rdx + 2048], zmm30 + +// CHECK: vpmovusdb xmmword ptr [rdx - 2048], zmm30 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x11,0x72,0x80] + vpmovusdb xmmword ptr [rdx - 2048], zmm30 + +// CHECK: vpmovusdb xmmword ptr [rdx - 2064], zmm30 +// CHECK: encoding: [0x62,0x62,0x7e,0x48,0x11,0xb2,0xf0,0xf7,0xff,0xff] + vpmovusdb xmmword ptr [rdx - 2064], zmm30 + +// CHECK: vpmovdw ymmword ptr [rcx], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0x29] + vpmovdw ymmword ptr [rcx], zmm5 + +// CHECK: vpmovdw ymmword ptr [rcx] {k7}, zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4f,0x33,0x29] + vpmovdw ymmword ptr [rcx] {k7}, zmm5 + +// CHECK: vpmovdw ymmword ptr [rax + 8*r14 + 4660], zmm5 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x33,0xac,0xf0,0x34,0x12,0x00,0x00] + vpmovdw ymmword ptr [rax + 8*r14 + 4660], zmm5 + +// CHECK: vpmovdw ymmword ptr [rdx + 4064], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0x6a,0x7f] + vpmovdw ymmword ptr [rdx + 4064], zmm5 + +// CHECK: vpmovdw ymmword ptr [rdx + 4096], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0xaa,0x00,0x10,0x00,0x00] + vpmovdw ymmword ptr [rdx + 4096], zmm5 + +// CHECK: vpmovdw ymmword ptr [rdx - 4096], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0x6a,0x80] + vpmovdw ymmword ptr [rdx - 4096], zmm5 + +// CHECK: vpmovdw ymmword ptr [rdx - 4128], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x33,0xaa,0xe0,0xef,0xff,0xff] + vpmovdw ymmword ptr [rdx - 4128], zmm5 + +// CHECK: vpmovsdw ymmword ptr [rcx], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x23,0x11] + vpmovsdw ymmword ptr [rcx], zmm18 + +// CHECK: vpmovsdw ymmword ptr [rcx] {k7}, zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x4f,0x23,0x11] + vpmovsdw ymmword ptr [rcx] {k7}, zmm18 + +// CHECK: vpmovsdw ymmword ptr [rax + 8*r14 + 4660], zmm18 +// CHECK: encoding: [0x62,0xa2,0x7e,0x48,0x23,0x94,0xf0,0x34,0x12,0x00,0x00] + vpmovsdw ymmword ptr [rax + 8*r14 + 4660], zmm18 + +// CHECK: vpmovsdw ymmword ptr [rdx + 4064], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x23,0x52,0x7f] + vpmovsdw ymmword ptr [rdx + 4064], zmm18 + +// CHECK: vpmovsdw ymmword ptr [rdx + 4096], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x23,0x92,0x00,0x10,0x00,0x00] + vpmovsdw ymmword ptr [rdx + 4096], zmm18 + +// CHECK: vpmovsdw ymmword ptr [rdx - 4096], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x23,0x52,0x80] + vpmovsdw ymmword ptr [rdx - 4096], zmm18 + +// CHECK: vpmovsdw ymmword ptr [rdx - 4128], zmm18 +// CHECK: encoding: [0x62,0xe2,0x7e,0x48,0x23,0x92,0xe0,0xef,0xff,0xff] + vpmovsdw ymmword ptr [rdx - 4128], zmm18 + +// CHECK: vpmovusdw ymmword ptr [rcx], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0x29] + vpmovusdw ymmword ptr [rcx], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rcx] {k4}, zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x4c,0x13,0x29] + vpmovusdw ymmword ptr [rcx] {k4}, zmm5 + +// CHECK: vpmovusdw ymmword ptr [rax + 8*r14 + 4660], zmm5 +// CHECK: encoding: [0x62,0xb2,0x7e,0x48,0x13,0xac,0xf0,0x34,0x12,0x00,0x00] + vpmovusdw ymmword ptr [rax + 8*r14 + 4660], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rdx + 4064], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0x6a,0x7f] + vpmovusdw ymmword ptr [rdx + 4064], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rdx + 4096], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0xaa,0x00,0x10,0x00,0x00] + vpmovusdw ymmword ptr [rdx + 4096], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rdx - 4096], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0x6a,0x80] + vpmovusdw ymmword ptr [rdx - 4096], zmm5 + +// CHECK: vpmovusdw ymmword ptr [rdx - 4128], zmm5 +// CHECK: encoding: [0x62,0xf2,0x7e,0x48,0x13,0xaa,0xe0,0xef,0xff,0xff] + vpmovusdw ymmword ptr [rdx - 4128], zmm5 + +// CHECK: vcvttpd2udq ymm20, zmm14 +// CHECK: encoding: [0x62,0xc1,0xfc,0x48,0x78,0xe6] + vcvttpd2udq ymm20, zmm14 + +// CHECK: vcvttpd2udq ymm20 {k3}, zmm14 +// CHECK: encoding: [0x62,0xc1,0xfc,0x4b,0x78,0xe6] + vcvttpd2udq ymm20 {k3}, zmm14 + +// CHECK: vcvttpd2udq ymm20 {k3} {z}, zmm14 +// CHECK: encoding: [0x62,0xc1,0xfc,0xcb,0x78,0xe6] + vcvttpd2udq ymm20 {k3} {z}, zmm14 + +// CHECK: vcvttpd2udq ymm20, zmm14, {sae} +// CHECK: encoding: [0x62,0xc1,0xfc,0x18,0x78,0xe6] + vcvttpd2udq ymm20, zmm14, {sae} + +// CHECK: vcvttpd2udq ymm20, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0x21] + vcvttpd2udq ymm20, zmmword ptr [rcx] + +// CHECK: vcvttpd2udq ymm20, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa1,0xfc,0x48,0x78,0xa4,0xf0,0x34,0x12,0x00,0x00] + vcvttpd2udq ymm20, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttpd2udq ymm20, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0x21] + vcvttpd2udq ymm20, qword ptr [rcx]{1to8} + +// CHECK: vcvttpd2udq ymm20, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0x62,0x7f] + vcvttpd2udq ymm20, zmmword ptr [rdx + 8128] + +// CHECK: vcvttpd2udq ymm20, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0xa2,0x00,0x20,0x00,0x00] + vcvttpd2udq ymm20, zmmword ptr [rdx + 8192] + +// CHECK: vcvttpd2udq ymm20, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0x62,0x80] + vcvttpd2udq ymm20, zmmword ptr [rdx - 8192] + +// CHECK: vcvttpd2udq ymm20, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe1,0xfc,0x48,0x78,0xa2,0xc0,0xdf,0xff,0xff] + vcvttpd2udq ymm20, zmmword ptr [rdx - 8256] + +// CHECK: vcvttpd2udq ymm20, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0x62,0x7f] + vcvttpd2udq ymm20, qword ptr [rdx + 1016]{1to8} + +// CHECK: vcvttpd2udq ymm20, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0xa2,0x00,0x04,0x00,0x00] + vcvttpd2udq ymm20, qword ptr [rdx + 1024]{1to8} + +// CHECK: vcvttpd2udq ymm20, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0x62,0x80] + vcvttpd2udq ymm20, qword ptr [rdx - 1024]{1to8} + +// CHECK: vcvttpd2udq ymm20, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe1,0xfc,0x58,0x78,0xa2,0xf8,0xfb,0xff,0xff] + vcvttpd2udq ymm20, qword ptr [rdx - 1032]{1to8} + +// CHECK: vcvttps2udq zmm5, zmm20 +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x78,0xec] + vcvttps2udq zmm5, zmm20 + +// CHECK: vcvttps2udq zmm5 {k2}, zmm20 +// CHECK: encoding: [0x62,0xb1,0x7c,0x4a,0x78,0xec] + vcvttps2udq zmm5 {k2}, zmm20 + +// CHECK: vcvttps2udq zmm5 {k2} {z}, zmm20 +// CHECK: encoding: [0x62,0xb1,0x7c,0xca,0x78,0xec] + vcvttps2udq zmm5 {k2} {z}, zmm20 + +// CHECK: vcvttps2udq zmm5, zmm20, {sae} +// CHECK: encoding: [0x62,0xb1,0x7c,0x18,0x78,0xec] + vcvttps2udq zmm5, zmm20, {sae} + +// CHECK: vcvttps2udq zmm5, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x78,0x29] + vcvttps2udq zmm5, zmmword ptr [rcx] + +// CHECK: vcvttps2udq zmm5, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7c,0x48,0x78,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvttps2udq zmm5, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttps2udq zmm5, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x78,0x29] + vcvttps2udq zmm5, dword ptr [rcx]{1to16} + +// CHECK: vcvttps2udq zmm5, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x78,0x6a,0x7f] + vcvttps2udq zmm5, zmmword ptr [rdx + 8128] + +// CHECK: vcvttps2udq zmm5, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x78,0xaa,0x00,0x20,0x00,0x00] + vcvttps2udq zmm5, zmmword ptr [rdx + 8192] + +// CHECK: vcvttps2udq zmm5, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x78,0x6a,0x80] + vcvttps2udq zmm5, zmmword ptr [rdx - 8192] + +// CHECK: vcvttps2udq zmm5, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xf1,0x7c,0x48,0x78,0xaa,0xc0,0xdf,0xff,0xff] + vcvttps2udq zmm5, zmmword ptr [rdx - 8256] + +// CHECK: vcvttps2udq zmm5, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x78,0x6a,0x7f] + vcvttps2udq zmm5, dword ptr [rdx + 508]{1to16} + +// CHECK: vcvttps2udq zmm5, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x78,0xaa,0x00,0x02,0x00,0x00] + vcvttps2udq zmm5, dword ptr [rdx + 512]{1to16} + +// CHECK: vcvttps2udq zmm5, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x78,0x6a,0x80] + vcvttps2udq zmm5, dword ptr [rdx - 512]{1to16} + +// CHECK: vcvttps2udq zmm5, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0xf1,0x7c,0x58,0x78,0xaa,0xfc,0xfd,0xff,0xff] + vcvttps2udq zmm5, dword ptr [rdx - 516]{1to16} + +// CHECK: vcvttsd2usi eax, xmm23 +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x78,0xc7] + vcvttsd2usi eax, xmm23 + +// CHECK: vcvttsd2usi eax, xmm23, {sae} +// CHECK: encoding: [0x62,0xb1,0x7f,0x18,0x78,0xc7] + vcvttsd2usi eax, xmm23, {sae} + +// CHECK: vcvttsd2usi eax, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x01] + vcvttsd2usi eax, qword ptr [rcx] + +// CHECK: vcvttsd2usi eax, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x78,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvttsd2usi eax, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttsd2usi eax, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x42,0x7f] + vcvttsd2usi eax, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi eax, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x82,0x00,0x04,0x00,0x00] + vcvttsd2usi eax, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi eax, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x42,0x80] + vcvttsd2usi eax, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi eax, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x82,0xf8,0xfb,0xff,0xff] + vcvttsd2usi eax, qword ptr [rdx - 1032] + +// CHECK: vcvttsd2usi ebp, xmm23 +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x78,0xef] + vcvttsd2usi ebp, xmm23 + +// CHECK: vcvttsd2usi ebp, xmm23, {sae} +// CHECK: encoding: [0x62,0xb1,0x7f,0x18,0x78,0xef] + vcvttsd2usi ebp, xmm23, {sae} + +// CHECK: vcvttsd2usi ebp, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x29] + vcvttsd2usi ebp, qword ptr [rcx] + +// CHECK: vcvttsd2usi ebp, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7f,0x08,0x78,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvttsd2usi ebp, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttsd2usi ebp, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x6a,0x7f] + vcvttsd2usi ebp, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi ebp, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0xaa,0x00,0x04,0x00,0x00] + vcvttsd2usi ebp, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi ebp, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0x6a,0x80] + vcvttsd2usi ebp, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi ebp, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0x7f,0x08,0x78,0xaa,0xf8,0xfb,0xff,0xff] + vcvttsd2usi ebp, qword ptr [rdx - 1032] + +// CHECK: vcvttsd2usi r13d, xmm23 +// CHECK: encoding: [0x62,0x31,0x7f,0x08,0x78,0xef] + vcvttsd2usi r13d, xmm23 + +// CHECK: vcvttsd2usi r13d, xmm23, {sae} +// CHECK: encoding: [0x62,0x31,0x7f,0x18,0x78,0xef] + vcvttsd2usi r13d, xmm23, {sae} + +// CHECK: vcvttsd2usi r13d, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0x29] + vcvttsd2usi r13d, qword ptr [rcx] + +// CHECK: vcvttsd2usi r13d, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x7f,0x08,0x78,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvttsd2usi r13d, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttsd2usi r13d, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0x6a,0x7f] + vcvttsd2usi r13d, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi r13d, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0xaa,0x00,0x04,0x00,0x00] + vcvttsd2usi r13d, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi r13d, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0x6a,0x80] + vcvttsd2usi r13d, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi r13d, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x78,0xaa,0xf8,0xfb,0xff,0xff] + vcvttsd2usi r13d, qword ptr [rdx - 1032] + +// CHECK: vcvttsd2usi rax, xmm19 +// CHECK: encoding: [0x62,0xb1,0xff,0x08,0x78,0xc3] + vcvttsd2usi rax, xmm19 + +// CHECK: vcvttsd2usi rax, xmm19, {sae} +// CHECK: encoding: [0x62,0xb1,0xff,0x18,0x78,0xc3] + vcvttsd2usi rax, xmm19, {sae} + +// CHECK: vcvttsd2usi rax, qword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x01] + vcvttsd2usi rax, qword ptr [rcx] + +// CHECK: vcvttsd2usi rax, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xff,0x08,0x78,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvttsd2usi rax, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttsd2usi rax, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x42,0x7f] + vcvttsd2usi rax, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi rax, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x82,0x00,0x04,0x00,0x00] + vcvttsd2usi rax, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi rax, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x42,0x80] + vcvttsd2usi rax, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi rax, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0xf1,0xff,0x08,0x78,0x82,0xf8,0xfb,0xff,0xff] + vcvttsd2usi rax, qword ptr [rdx - 1032] + +// CHECK: vcvttsd2usi r8, xmm19 +// CHECK: encoding: [0x62,0x31,0xff,0x08,0x78,0xc3] + vcvttsd2usi r8, xmm19 + +// CHECK: vcvttsd2usi r8, xmm19, {sae} +// CHECK: encoding: [0x62,0x31,0xff,0x18,0x78,0xc3] + vcvttsd2usi r8, xmm19, {sae} + +// CHECK: vcvttsd2usi r8, qword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x01] + vcvttsd2usi r8, qword ptr [rcx] + +// CHECK: vcvttsd2usi r8, qword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xff,0x08,0x78,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvttsd2usi r8, qword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttsd2usi r8, qword ptr [rdx + 1016] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x42,0x7f] + vcvttsd2usi r8, qword ptr [rdx + 1016] + +// CHECK: vcvttsd2usi r8, qword ptr [rdx + 1024] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x82,0x00,0x04,0x00,0x00] + vcvttsd2usi r8, qword ptr [rdx + 1024] + +// CHECK: vcvttsd2usi r8, qword ptr [rdx - 1024] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x42,0x80] + vcvttsd2usi r8, qword ptr [rdx - 1024] + +// CHECK: vcvttsd2usi r8, qword ptr [rdx - 1032] +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x78,0x82,0xf8,0xfb,0xff,0xff] + vcvttsd2usi r8, qword ptr [rdx - 1032] + +// CHECK: vcvttss2usi eax, xmm21 +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x78,0xc5] + vcvttss2usi eax, xmm21 + +// CHECK: vcvttss2usi eax, xmm21, {sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x18,0x78,0xc5] + vcvttss2usi eax, xmm21, {sae} + +// CHECK: vcvttss2usi eax, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x01] + vcvttss2usi eax, dword ptr [rcx] + +// CHECK: vcvttss2usi eax, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x78,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvttss2usi eax, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttss2usi eax, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x42,0x7f] + vcvttss2usi eax, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi eax, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x82,0x00,0x02,0x00,0x00] + vcvttss2usi eax, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi eax, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x42,0x80] + vcvttss2usi eax, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi eax, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x82,0xfc,0xfd,0xff,0xff] + vcvttss2usi eax, dword ptr [rdx - 516] + +// CHECK: vcvttss2usi ebp, xmm21 +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x78,0xed] + vcvttss2usi ebp, xmm21 + +// CHECK: vcvttss2usi ebp, xmm21, {sae} +// CHECK: encoding: [0x62,0xb1,0x7e,0x18,0x78,0xed] + vcvttss2usi ebp, xmm21, {sae} + +// CHECK: vcvttss2usi ebp, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x29] + vcvttss2usi ebp, dword ptr [rcx] + +// CHECK: vcvttss2usi ebp, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0x7e,0x08,0x78,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvttss2usi ebp, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttss2usi ebp, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x6a,0x7f] + vcvttss2usi ebp, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi ebp, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0xaa,0x00,0x02,0x00,0x00] + vcvttss2usi ebp, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi ebp, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0x6a,0x80] + vcvttss2usi ebp, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi ebp, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0x7e,0x08,0x78,0xaa,0xfc,0xfd,0xff,0xff] + vcvttss2usi ebp, dword ptr [rdx - 516] + +// CHECK: vcvttss2usi r13d, xmm21 +// CHECK: encoding: [0x62,0x31,0x7e,0x08,0x78,0xed] + vcvttss2usi r13d, xmm21 + +// CHECK: vcvttss2usi r13d, xmm21, {sae} +// CHECK: encoding: [0x62,0x31,0x7e,0x18,0x78,0xed] + vcvttss2usi r13d, xmm21, {sae} + +// CHECK: vcvttss2usi r13d, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0x29] + vcvttss2usi r13d, dword ptr [rcx] + +// CHECK: vcvttss2usi r13d, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0x7e,0x08,0x78,0xac,0xf0,0x34,0x12,0x00,0x00] + vcvttss2usi r13d, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttss2usi r13d, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0x6a,0x7f] + vcvttss2usi r13d, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi r13d, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0xaa,0x00,0x02,0x00,0x00] + vcvttss2usi r13d, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi r13d, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0x6a,0x80] + vcvttss2usi r13d, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi r13d, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x78,0xaa,0xfc,0xfd,0xff,0xff] + vcvttss2usi r13d, dword ptr [rdx - 516] + +// CHECK: vcvttss2usi rax, xmm7 +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0xc7] + vcvttss2usi rax, xmm7 + +// CHECK: vcvttss2usi rax, xmm7, {sae} +// CHECK: encoding: [0x62,0xf1,0xfe,0x18,0x78,0xc7] + vcvttss2usi rax, xmm7, {sae} + +// CHECK: vcvttss2usi rax, dword ptr [rcx] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x01] + vcvttss2usi rax, dword ptr [rcx] + +// CHECK: vcvttss2usi rax, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xb1,0xfe,0x08,0x78,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvttss2usi rax, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttss2usi rax, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x42,0x7f] + vcvttss2usi rax, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi rax, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x82,0x00,0x02,0x00,0x00] + vcvttss2usi rax, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi rax, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x42,0x80] + vcvttss2usi rax, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi rax, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0xf1,0xfe,0x08,0x78,0x82,0xfc,0xfd,0xff,0xff] + vcvttss2usi rax, dword ptr [rdx - 516] + +// CHECK: vcvttss2usi r8, xmm7 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0xc7] + vcvttss2usi r8, xmm7 + +// CHECK: vcvttss2usi r8, xmm7, {sae} +// CHECK: encoding: [0x62,0x71,0xfe,0x18,0x78,0xc7] + vcvttss2usi r8, xmm7, {sae} + +// CHECK: vcvttss2usi r8, dword ptr [rcx] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x01] + vcvttss2usi r8, dword ptr [rcx] + +// CHECK: vcvttss2usi r8, dword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x31,0xfe,0x08,0x78,0x84,0xf0,0x34,0x12,0x00,0x00] + vcvttss2usi r8, dword ptr [rax + 8*r14 + 4660] + +// CHECK: vcvttss2usi r8, dword ptr [rdx + 508] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x42,0x7f] + vcvttss2usi r8, dword ptr [rdx + 508] + +// CHECK: vcvttss2usi r8, dword ptr [rdx + 512] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x82,0x00,0x02,0x00,0x00] + vcvttss2usi r8, dword ptr [rdx + 512] + +// CHECK: vcvttss2usi r8, dword ptr [rdx - 512] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x42,0x80] + vcvttss2usi r8, dword ptr [rdx - 512] + +// CHECK: vcvttss2usi r8, dword ptr [rdx - 516] +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x78,0x82,0xfc,0xfd,0xff,0xff] + vcvttss2usi r8, dword ptr [rdx - 516] + +// CHECK: vpermi2d zmm9, zmm3, zmm9 +// CHECK: encoding: [0x62,0x52,0x65,0x48,0x76,0xc9] + vpermi2d zmm9, zmm3, zmm9 + +// CHECK: vpermi2d zmm9 {k1}, zmm3, zmm9 +// CHECK: encoding: [0x62,0x52,0x65,0x49,0x76,0xc9] + vpermi2d zmm9 {k1}, zmm3, zmm9 + +// CHECK: vpermi2d zmm9 {k1} {z}, zmm3, zmm9 +// CHECK: encoding: [0x62,0x52,0x65,0xc9,0x76,0xc9] + vpermi2d zmm9 {k1} {z}, zmm3, zmm9 + +// CHECK: vpermi2d zmm9, zmm3, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x76,0x09] + vpermi2d zmm9, zmm3, zmmword ptr [rcx] + +// CHECK: vpermi2d zmm9, zmm3, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x32,0x65,0x48,0x76,0x8c,0xf0,0x34,0x12,0x00,0x00] + vpermi2d zmm9, zmm3, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermi2d zmm9, zmm3, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x76,0x09] + vpermi2d zmm9, zmm3, dword ptr [rcx]{1to16} + +// CHECK: vpermi2d zmm9, zmm3, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x76,0x4a,0x7f] + vpermi2d zmm9, zmm3, zmmword ptr [rdx + 8128] + +// CHECK: vpermi2d zmm9, zmm3, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x76,0x8a,0x00,0x20,0x00,0x00] + vpermi2d zmm9, zmm3, zmmword ptr [rdx + 8192] + +// CHECK: vpermi2d zmm9, zmm3, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x76,0x4a,0x80] + vpermi2d zmm9, zmm3, zmmword ptr [rdx - 8192] + +// CHECK: vpermi2d zmm9, zmm3, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x72,0x65,0x48,0x76,0x8a,0xc0,0xdf,0xff,0xff] + vpermi2d zmm9, zmm3, zmmword ptr [rdx - 8256] + +// CHECK: vpermi2d zmm9, zmm3, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x76,0x4a,0x7f] + vpermi2d zmm9, zmm3, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermi2d zmm9, zmm3, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x76,0x8a,0x00,0x02,0x00,0x00] + vpermi2d zmm9, zmm3, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermi2d zmm9, zmm3, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x76,0x4a,0x80] + vpermi2d zmm9, zmm3, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermi2d zmm9, zmm3, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x72,0x65,0x58,0x76,0x8a,0xfc,0xfd,0xff,0xff] + vpermi2d zmm9, zmm3, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermi2q zmm21, zmm22, zmm25 +// CHECK: encoding: [0x62,0x82,0xcd,0x40,0x76,0xe9] + vpermi2q zmm21, zmm22, zmm25 + +// CHECK: vpermi2q zmm21 {k2}, zmm22, zmm25 +// CHECK: encoding: [0x62,0x82,0xcd,0x42,0x76,0xe9] + vpermi2q zmm21 {k2}, zmm22, zmm25 + +// CHECK: vpermi2q zmm21 {k2} {z}, zmm22, zmm25 +// CHECK: encoding: [0x62,0x82,0xcd,0xc2,0x76,0xe9] + vpermi2q zmm21 {k2} {z}, zmm22, zmm25 + +// CHECK: vpermi2q zmm21, zmm22, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x76,0x29] + vpermi2q zmm21, zmm22, zmmword ptr [rcx] + +// CHECK: vpermi2q zmm21, zmm22, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xcd,0x40,0x76,0xac,0xf0,0x34,0x12,0x00,0x00] + vpermi2q zmm21, zmm22, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermi2q zmm21, zmm22, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x76,0x29] + vpermi2q zmm21, zmm22, qword ptr [rcx]{1to8} + +// CHECK: vpermi2q zmm21, zmm22, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x76,0x6a,0x7f] + vpermi2q zmm21, zmm22, zmmword ptr [rdx + 8128] + +// CHECK: vpermi2q zmm21, zmm22, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x76,0xaa,0x00,0x20,0x00,0x00] + vpermi2q zmm21, zmm22, zmmword ptr [rdx + 8192] + +// CHECK: vpermi2q zmm21, zmm22, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x76,0x6a,0x80] + vpermi2q zmm21, zmm22, zmmword ptr [rdx - 8192] + +// CHECK: vpermi2q zmm21, zmm22, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xcd,0x40,0x76,0xaa,0xc0,0xdf,0xff,0xff] + vpermi2q zmm21, zmm22, zmmword ptr [rdx - 8256] + +// CHECK: vpermi2q zmm21, zmm22, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x76,0x6a,0x7f] + vpermi2q zmm21, zmm22, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermi2q zmm21, zmm22, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x76,0xaa,0x00,0x04,0x00,0x00] + vpermi2q zmm21, zmm22, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermi2q zmm21, zmm22, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x76,0x6a,0x80] + vpermi2q zmm21, zmm22, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermi2q zmm21, zmm22, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xcd,0x50,0x76,0xaa,0xf8,0xfb,0xff,0xff] + vpermi2q zmm21, zmm22, qword ptr [rdx - 1032]{1to8} + +// CHECK: vpermi2ps zmm26, zmm26, zmm1 +// CHECK: encoding: [0x62,0x62,0x2d,0x40,0x77,0xd1] + vpermi2ps zmm26, zmm26, zmm1 + +// CHECK: vpermi2ps zmm26 {k5}, zmm26, zmm1 +// CHECK: encoding: [0x62,0x62,0x2d,0x45,0x77,0xd1] + vpermi2ps zmm26 {k5}, zmm26, zmm1 + +// CHECK: vpermi2ps zmm26 {k5} {z}, zmm26, zmm1 +// CHECK: encoding: [0x62,0x62,0x2d,0xc5,0x77,0xd1] + vpermi2ps zmm26 {k5} {z}, zmm26, zmm1 + +// CHECK: vpermi2ps zmm26, zmm26, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0x62,0x2d,0x40,0x77,0x11] + vpermi2ps zmm26, zmm26, zmmword ptr [rcx] + +// CHECK: vpermi2ps zmm26, zmm26, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0x22,0x2d,0x40,0x77,0x94,0xf0,0x34,0x12,0x00,0x00] + vpermi2ps zmm26, zmm26, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermi2ps zmm26, zmm26, dword ptr [rcx]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x50,0x77,0x11] + vpermi2ps zmm26, zmm26, dword ptr [rcx]{1to16} + +// CHECK: vpermi2ps zmm26, zmm26, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0x62,0x2d,0x40,0x77,0x52,0x7f] + vpermi2ps zmm26, zmm26, zmmword ptr [rdx + 8128] + +// CHECK: vpermi2ps zmm26, zmm26, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0x62,0x2d,0x40,0x77,0x92,0x00,0x20,0x00,0x00] + vpermi2ps zmm26, zmm26, zmmword ptr [rdx + 8192] + +// CHECK: vpermi2ps zmm26, zmm26, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0x62,0x2d,0x40,0x77,0x52,0x80] + vpermi2ps zmm26, zmm26, zmmword ptr [rdx - 8192] + +// CHECK: vpermi2ps zmm26, zmm26, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0x62,0x2d,0x40,0x77,0x92,0xc0,0xdf,0xff,0xff] + vpermi2ps zmm26, zmm26, zmmword ptr [rdx - 8256] + +// CHECK: vpermi2ps zmm26, zmm26, dword ptr [rdx + 508]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x50,0x77,0x52,0x7f] + vpermi2ps zmm26, zmm26, dword ptr [rdx + 508]{1to16} + +// CHECK: vpermi2ps zmm26, zmm26, dword ptr [rdx + 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x50,0x77,0x92,0x00,0x02,0x00,0x00] + vpermi2ps zmm26, zmm26, dword ptr [rdx + 512]{1to16} + +// CHECK: vpermi2ps zmm26, zmm26, dword ptr [rdx - 512]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x50,0x77,0x52,0x80] + vpermi2ps zmm26, zmm26, dword ptr [rdx - 512]{1to16} + +// CHECK: vpermi2ps zmm26, zmm26, dword ptr [rdx - 516]{1to16} +// CHECK: encoding: [0x62,0x62,0x2d,0x50,0x77,0x92,0xfc,0xfd,0xff,0xff] + vpermi2ps zmm26, zmm26, dword ptr [rdx - 516]{1to16} + +// CHECK: vpermi2pd zmm21, zmm27, zmm21 +// CHECK: encoding: [0x62,0xa2,0xa5,0x40,0x77,0xed] + vpermi2pd zmm21, zmm27, zmm21 + +// CHECK: vpermi2pd zmm21 {k4}, zmm27, zmm21 +// CHECK: encoding: [0x62,0xa2,0xa5,0x44,0x77,0xed] + vpermi2pd zmm21 {k4}, zmm27, zmm21 + +// CHECK: vpermi2pd zmm21 {k4} {z}, zmm27, zmm21 +// CHECK: encoding: [0x62,0xa2,0xa5,0xc4,0x77,0xed] + vpermi2pd zmm21 {k4} {z}, zmm27, zmm21 + +// CHECK: vpermi2pd zmm21, zmm27, zmmword ptr [rcx] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0x77,0x29] + vpermi2pd zmm21, zmm27, zmmword ptr [rcx] + +// CHECK: vpermi2pd zmm21, zmm27, zmmword ptr [rax + 8*r14 + 4660] +// CHECK: encoding: [0x62,0xa2,0xa5,0x40,0x77,0xac,0xf0,0x34,0x12,0x00,0x00] + vpermi2pd zmm21, zmm27, zmmword ptr [rax + 8*r14 + 4660] + +// CHECK: vpermi2pd zmm21, zmm27, qword ptr [rcx]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0x77,0x29] + vpermi2pd zmm21, zmm27, qword ptr [rcx]{1to8} + +// CHECK: vpermi2pd zmm21, zmm27, zmmword ptr [rdx + 8128] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0x77,0x6a,0x7f] + vpermi2pd zmm21, zmm27, zmmword ptr [rdx + 8128] + +// CHECK: vpermi2pd zmm21, zmm27, zmmword ptr [rdx + 8192] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0x77,0xaa,0x00,0x20,0x00,0x00] + vpermi2pd zmm21, zmm27, zmmword ptr [rdx + 8192] + +// CHECK: vpermi2pd zmm21, zmm27, zmmword ptr [rdx - 8192] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0x77,0x6a,0x80] + vpermi2pd zmm21, zmm27, zmmword ptr [rdx - 8192] + +// CHECK: vpermi2pd zmm21, zmm27, zmmword ptr [rdx - 8256] +// CHECK: encoding: [0x62,0xe2,0xa5,0x40,0x77,0xaa,0xc0,0xdf,0xff,0xff] + vpermi2pd zmm21, zmm27, zmmword ptr [rdx - 8256] + +// CHECK: vpermi2pd zmm21, zmm27, qword ptr [rdx + 1016]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0x77,0x6a,0x7f] + vpermi2pd zmm21, zmm27, qword ptr [rdx + 1016]{1to8} + +// CHECK: vpermi2pd zmm21, zmm27, qword ptr [rdx + 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0x77,0xaa,0x00,0x04,0x00,0x00] + vpermi2pd zmm21, zmm27, qword ptr [rdx + 1024]{1to8} + +// CHECK: vpermi2pd zmm21, zmm27, qword ptr [rdx - 1024]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0x77,0x6a,0x80] + vpermi2pd zmm21, zmm27, qword ptr [rdx - 1024]{1to8} + +// CHECK: vpermi2pd zmm21, zmm27, qword ptr [rdx - 1032]{1to8} +// CHECK: encoding: [0x62,0xe2,0xa5,0x50,0x77,0xaa,0xf8,0xfb,0xff,0xff] + vpermi2pd zmm21, zmm27, qword ptr [rdx - 1032]{1to8} + +// CHECK: vgatherdpd zmm6 {k1}, zmmword ptr [r14 + 8*ymm16 + 123] +// CHECK: encoding: [0x62,0xd2,0xfd,0x41,0x92,0xb4,0xc6,0x7b,0x00,0x00,0x00] + vgatherdpd zmm6 {k1},ZMMWORD PTR [r14+ymm16*8+0x7b] + +// CHECK: vgatherdpd zmm6 {k1}, zmmword ptr [r9 + ymm16 + 256] +// CHECK: encoding: [0x62,0xd2,0xfd,0x41,0x92,0x74,0x01,0x20] + vgatherdpd zmm6{k1},ZMMWORD PTR [r9+ymm16*1+0x100] + +// CHECK: vgatherdpd zmm6 {k1}, zmmword ptr [rcx + 4*ymm16 + 1024] +// CHECK: encoding: [0x62,0xf2,0xfd,0x41,0x92,0xb4,0x81,0x00,0x04,0x00,0x00] + vgatherdpd zmm6{k1},ZMMWORD PTR [rcx+ymm16*4+0x400] + +// CHECK: vgatherdps zmm9 {k1}, zmmword ptr [r14 + 8*zmm19 + 123] +// CHECK: encoding: [0x62,0x52,0x7d,0x41,0x92,0x8c,0xde,0x7b,0x00,0x00,0x00] + vgatherdps zmm9{k1},ZMMWORD PTR [r14+zmm19*8+0x7b] + +// CHECK: vgatherdps zmm9 {k1}, zmmword ptr [r9 + zmm19 + 256] +// CHECK: encoding: [0x62,0x52,0x7d,0x41,0x92,0x4c,0x19,0x40] + vgatherdps zmm9{k1},ZMMWORD PTR [r9+zmm19*1+0x100] + +// CHECK: vgatherdps zmm9 {k1}, zmmword ptr [rcx + 4*zmm19 + 1024] +// CHECK: encoding: [0x62,0x72,0x7d,0x41,0x92,0x8c,0x99,0x00,0x04,0x00,0x00] + vgatherdps zmm9{k1},ZMMWORD PTR [rcx+zmm19*4+0x400] + +// CHECK: vgatherqpd zmm29 {k1}, zmmword ptr [r14 + 8*zmm2 + 123] +// CHECK: encoding: [0x62,0x42,0xfd,0x49,0x93,0xac,0xd6,0x7b,0x00,0x00,0x00] + vgatherqpd zmm29{k1},ZMMWORD PTR [r14+zmm2*8+0x7b] + +// CHECK: vgatherqpd zmm29 {k1}, zmmword ptr [r9 + zmm2 + 256] +// CHECK: encoding: [0x62,0x42,0xfd,0x49,0x93,0x6c,0x11,0x20] + vgatherqpd zmm29{k1},ZMMWORD PTR [r9+zmm2*1+0x100] + +// CHECK: vgatherqpd zmm29 {k1}, zmmword ptr [rcx + 4*zmm2 + 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x49,0x93,0xac,0x91,0x00,0x04,0x00,0x00] + vgatherqpd zmm29{k1},ZMMWORD PTR [rcx+zmm2*4+0x400] + +// CHECK: vgatherqps ymm18 {k1}, zmmword ptr [r14 + 8*zmm4 + 123] +// CHECK: encoding: [0x62,0xc2,0x7d,0x49,0x93,0x94,0xe6,0x7b,0x00,0x00,0x00] + vgatherqps ymm18{k1},ZMMWORD PTR [r14+zmm4*8+0x7b] + +// CHECK: vgatherqps ymm18 {k1}, zmmword ptr [r9 + zmm4 + 256] +// CHECK: encoding: [0x62,0xc2,0x7d,0x49,0x93,0x54,0x21,0x40] + vgatherqps ymm18{k1},ZMMWORD PTR [r9+zmm4*1+0x100] + +// CHECK: vgatherqps ymm18 {k1}, zmmword ptr [rcx + 4*zmm4 + 1024] +// CHECK: encoding: [0x62,0xe2,0x7d,0x49,0x93,0x94,0xa1,0x00,0x04,0x00,0x00] + vgatherqps ymm18{k1},ZMMWORD PTR [rcx+zmm4*4+0x400] + +// CHECK: vpgatherdd zmm17 {k1}, zmmword ptr [r14 + 8*zmm11 + 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x49,0x90,0x8c,0xde,0x7b,0x00,0x00,0x00] + vpgatherdd zmm17{k1},ZMMWORD PTR [r14+zmm11*8+0x7b] + +// CHECK: vpgatherdd zmm17 {k1}, zmmword ptr [r9 + zmm11 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x49,0x90,0x4c,0x19,0x40] + vpgatherdd zmm17{k1},ZMMWORD PTR [r9+zmm11*1+0x100] + +// CHECK: vpgatherdd zmm17 {k1}, zmmword ptr [rcx + 4*zmm11 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x49,0x90,0x8c,0x99,0x00,0x04,0x00,0x00] + vpgatherdd zmm17{k1},ZMMWORD PTR [rcx+zmm11*4+0x400] + +// CHECK: vpgatherdq zmm8 {k1}, zmmword ptr [r14 + 8*ymm14 + 123] +// CHECK: encoding: [0x62,0x12,0xfd,0x49,0x90,0x84,0xf6,0x7b,0x00,0x00,0x00] + vpgatherdq zmm8{k1},ZMMWORD PTR [r14+ymm14*8+0x7b] + +// CHECK: vpgatherdq zmm8 {k1}, zmmword ptr [r9 + ymm14 + 256] +// CHECK: encoding: [0x62,0x12,0xfd,0x49,0x90,0x44,0x31,0x20] + vpgatherdq zmm8{k1},ZMMWORD PTR [r9+ymm14*1+0x100] + +// CHECK: vpgatherdq zmm8 {k1}, zmmword ptr [rcx + 4*ymm14 + 1024] +// CHECK: encoding: [0x62,0x32,0xfd,0x49,0x90,0x84,0xb1,0x00,0x04,0x00,0x00] + vpgatherdq zmm8{k1},ZMMWORD PTR [rcx+ymm14*4+0x400] + +// CHECK: vpgatherqd ymm3 {k1}, zmmword ptr [r14 + 8*zmm17 + 123] +// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0x91,0x9c,0xce,0x7b,0x00,0x00,0x00] + vpgatherqd ymm3{k1},ZMMWORD PTR [r14+zmm17*8+0x7b] + +// CHECK: vpgatherqd ymm3 {k1}, zmmword ptr [r9 + zmm17 + 256] +// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0x91,0x5c,0x09,0x40] + vpgatherqd ymm3{k1},ZMMWORD PTR [r9+zmm17*1+0x100] + +// CHECK: vpgatherqd ymm3 {k1}, zmmword ptr [rcx + 4*zmm17 + 1024] +// CHECK: encoding: [0x62,0xf2,0x7d,0x41,0x91,0x9c,0x89,0x00,0x04,0x00,0x00] + vpgatherqd ymm3{k1},ZMMWORD PTR [rcx+zmm17*4+0x400] + +// CHECK: vpgatherqq zmm17 {k1}, zmmword ptr [r14 + 8*zmm21 + 123] +// CHECK: encoding: [0x62,0xc2,0xfd,0x41,0x91,0x8c,0xee,0x7b,0x00,0x00,0x00] + vpgatherqq zmm17{k1},ZMMWORD PTR [r14+zmm21*8+0x7b] + +// CHECK: vpgatherqq zmm17 {k1}, zmmword ptr [r9 + zmm21 + 256] +// CHECK: encoding: [0x62,0xc2,0xfd,0x41,0x91,0x4c,0x29,0x20] + vpgatherqq zmm17{k1},ZMMWORD PTR [r9+zmm21*1+0x100] + +// CHECK: vpgatherqq zmm17 {k1}, zmmword ptr [rcx + 4*zmm21 + 1024] +// CHECK: encoding: [0x62,0xe2,0xfd,0x41,0x91,0x8c,0xa9,0x00,0x04,0x00,0x00] + vpgatherqq zmm17{k1},ZMMWORD PTR [rcx+zmm21*4+0x400] + +// CHECK: vpscatterdd zmmword ptr [r14 + 8*zmm16 + 123] {k1}, zmm19 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa0,0x9c,0xc6,0x7b,0x00,0x00,0x00] + vpscatterdd ZMMWORD PTR [r14+zmm16*8+0x7b]{k1},zmm19 + +// CHECK: vpscatterdd zmmword ptr [r14 + 8*zmm16 + 123] {k1}, zmm19 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa0,0x9c,0xc6,0x7b,0x00,0x00,0x00] + vpscatterdd ZMMWORD PTR [r14+zmm16*8+0x7b]{k1},zmm19 + +// CHECK: vpscatterdd zmmword ptr [r9 + zmm16 + 256] {k1}, zmm19 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa0,0x5c,0x01,0x40] + vpscatterdd ZMMWORD PTR [r9+zmm16*1+0x100]{k1},zmm19 + +// CHECK: vpscatterdd zmmword ptr [rcx + 4*zmm16 + 1024] {k1}, zmm19 +// CHECK: encoding: [0x62,0xe2,0x7d,0x41,0xa0,0x9c,0x81,0x00,0x04,0x00,0x00] + vpscatterdd ZMMWORD PTR [rcx+zmm16*4+0x400]{k1},zmm19 + +// CHECK: vpscatterdq zmmword ptr [r14 + 8*ymm6 + 123] {k1}, zmm5 +// CHECK: encoding: [0x62,0xd2,0xfd,0x49,0xa0,0xac,0xf6,0x7b,0x00,0x00,0x00] + vpscatterdq ZMMWORD PTR [r14+ymm6*8+0x7b]{k1},zmm5 + +// CHECK: vpscatterdq zmmword ptr [r14 + 8*ymm6 + 123] {k1}, zmm5 +// CHECK: encoding: [0x62,0xd2,0xfd,0x49,0xa0,0xac,0xf6,0x7b,0x00,0x00,0x00] + vpscatterdq ZMMWORD PTR [r14+ymm6*8+0x7b]{k1},zmm5 + +// CHECK: vpscatterdq zmmword ptr [r9 + ymm6 + 256] {k1}, zmm5 +// CHECK: encoding: [0x62,0xd2,0xfd,0x49,0xa0,0x6c,0x31,0x20] + vpscatterdq ZMMWORD PTR [r9+ymm6*1+0x100]{k1},zmm5 + +// CHECK: vpscatterdq zmmword ptr [rcx + 4*ymm6 + 1024] {k1}, zmm5 +// CHECK: encoding: [0x62,0xf2,0xfd,0x49,0xa0,0xac,0xb1,0x00,0x04,0x00,0x00] + vpscatterdq ZMMWORD PTR [rcx+ymm6*4+0x400]{k1},zmm5 + +// CHECK: vpscatterqd zmmword ptr [r14 + 8*zmm2 + 123] {k1}, ymm20 +// CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa1,0xa4,0xd6,0x7b,0x00,0x00,0x00] + vpscatterqd ZMMWORD PTR [r14+zmm2*8+0x7b]{k1},ymm20 + +// CHECK: vpscatterqd zmmword ptr [r14 + 8*zmm2 + 123] {k1}, ymm20 +// CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa1,0xa4,0xd6,0x7b,0x00,0x00,0x00] + vpscatterqd ZMMWORD PTR [r14+zmm2*8+0x7b]{k1},ymm20 + +// CHECK: vpscatterqd zmmword ptr [r9 + zmm2 + 256] {k1}, ymm20 +// CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa1,0x64,0x11,0x40] + vpscatterqd ZMMWORD PTR [r9+zmm2*1+0x100]{k1},ymm20 + +// CHECK: vpscatterqd zmmword ptr [rcx + 4*zmm2 + 1024] {k1}, ymm20 +// CHECK: encoding: [0x62,0xe2,0x7d,0x49,0xa1,0xa4,0x91,0x00,0x04,0x00,0x00] + vpscatterqd ZMMWORD PTR [rcx+zmm2*4+0x400]{k1},ymm20 + +// CHECK: vpscatterqq zmmword ptr [r14 + 8*zmm20 + 123] {k1}, zmm14 +// CHECK: encoding: [0x62,0x52,0xfd,0x41,0xa1,0xb4,0xe6,0x7b,0x00,0x00,0x00] + vpscatterqq ZMMWORD PTR [r14+zmm20*8+0x7b]{k1},zmm14 + +// CHECK: vpscatterqq zmmword ptr [r14 + 8*zmm20 + 123] {k1}, zmm14 +// CHECK: encoding: [0x62,0x52,0xfd,0x41,0xa1,0xb4,0xe6,0x7b,0x00,0x00,0x00] + vpscatterqq ZMMWORD PTR [r14+zmm20*8+0x7b]{k1},zmm14 + +// CHECK: vpscatterqq zmmword ptr [r9 + zmm20 + 256] {k1}, zmm14 +// CHECK: encoding: [0x62,0x52,0xfd,0x41,0xa1,0x74,0x21,0x20] + vpscatterqq ZMMWORD PTR [r9+zmm20*1+0x100]{k1},zmm14 + +// CHECK: vpscatterqq zmmword ptr [rcx + 4*zmm20 + 1024] {k1}, zmm14 +// CHECK: encoding: [0x62,0x72,0xfd,0x41,0xa1,0xb4,0xa1,0x00,0x04,0x00,0x00] + vpscatterqq ZMMWORD PTR [rcx+zmm20*4+0x400]{k1},zmm14 + +// CHECK: vscatterdpd zmmword ptr [r14 + 8*ymm24 + 123] {k1}, zmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa2,0x94,0xc6,0x7b,0x00,0x00,0x00] + vscatterdpd ZMMWORD PTR [r14+ymm24*8+0x7b]{k1},zmm18 + +// CHECK: vscatterdpd zmmword ptr [r14 + 8*ymm24 + 123] {k1}, zmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa2,0x94,0xc6,0x7b,0x00,0x00,0x00] + vscatterdpd ZMMWORD PTR [r14+ymm24*8+0x7b]{k1},zmm18 + +// CHECK: vscatterdpd zmmword ptr [r9 + ymm24 + 256] {k1}, zmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa2,0x54,0x01,0x20] + vscatterdpd ZMMWORD PTR [r9+ymm24*1+0x100]{k1},zmm18 + +// CHECK: vscatterdpd zmmword ptr [rcx + 4*ymm24 + 1024] {k1}, zmm18 +// CHECK: encoding: [0x62,0xa2,0xfd,0x41,0xa2,0x94,0x81,0x00,0x04,0x00,0x00] + vscatterdpd ZMMWORD PTR [rcx+ymm24*4+0x400]{k1},zmm18 + +// CHECK: vscatterdps zmmword ptr [r14 + 8*zmm19 + 123] {k1}, zmm17 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa2,0x8c,0xde,0x7b,0x00,0x00,0x00] + vscatterdps ZMMWORD PTR [r14+zmm19*8+0x7b]{k1},zmm17 + +// CHECK: vscatterdps zmmword ptr [r14 + 8*zmm19 + 123] {k1}, zmm17 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa2,0x8c,0xde,0x7b,0x00,0x00,0x00] + vscatterdps ZMMWORD PTR [r14+zmm19*8+0x7b]{k1},zmm17 + +// CHECK: vscatterdps zmmword ptr [r9 + zmm19 + 256] {k1}, zmm17 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa2,0x4c,0x19,0x40] + vscatterdps ZMMWORD PTR [r9+zmm19*1+0x100]{k1},zmm17 + +// CHECK: vscatterdps zmmword ptr [rcx + 4*zmm19 + 1024] {k1}, zmm17 +// CHECK: encoding: [0x62,0xe2,0x7d,0x41,0xa2,0x8c,0x99,0x00,0x04,0x00,0x00] + vscatterdps ZMMWORD PTR [rcx+zmm19*4+0x400]{k1},zmm17 + +// CHECK: vscatterqpd zmmword ptr [r14 + 8*zmm28 + 123] {k1}, zmm22 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa3,0xb4,0xe6,0x7b,0x00,0x00,0x00] + vscatterqpd ZMMWORD PTR [r14+zmm28*8+0x7b]{k1},zmm22 + +// CHECK: vscatterqpd zmmword ptr [r14 + 8*zmm28 + 123] {k1}, zmm22 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa3,0xb4,0xe6,0x7b,0x00,0x00,0x00] + vscatterqpd ZMMWORD PTR [r14+zmm28*8+0x7b]{k1},zmm22 + +// CHECK: vscatterqpd zmmword ptr [r9 + zmm28 + 256] {k1}, zmm22 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa3,0x74,0x21,0x20] + vscatterqpd ZMMWORD PTR [r9+zmm28*1+0x100]{k1},zmm22 + +// CHECK: vscatterqpd zmmword ptr [rcx + 4*zmm28 + 1024] {k1}, zmm22 +// CHECK: encoding: [0x62,0xa2,0xfd,0x41,0xa3,0xb4,0xa1,0x00,0x04,0x00,0x00] + vscatterqpd ZMMWORD PTR [rcx+zmm28*4+0x400]{k1},zmm22 + +// CHECK: vscatterqps zmmword ptr [r14 + 8*zmm27 + 123] {k1}, ymm6 +// CHECK: encoding: [0x62,0x92,0x7d,0x41,0xa3,0xb4,0xde,0x7b,0x00,0x00,0x00] + vscatterqps ZMMWORD PTR [r14+zmm27*8+0x7b]{k1},ymm6 + +// CHECK: vscatterqps zmmword ptr [r14 + 8*zmm27 + 123] {k1}, ymm6 +// CHECK: encoding: [0x62,0x92,0x7d,0x41,0xa3,0xb4,0xde,0x7b,0x00,0x00,0x00] + vscatterqps ZMMWORD PTR [r14+zmm27*8+0x7b]{k1},ymm6 + +// CHECK: vscatterqps zmmword ptr [r9 + zmm27 + 256] {k1}, ymm6 +// CHECK: encoding: [0x62,0x92,0x7d,0x41,0xa3,0x74,0x19,0x40] + vscatterqps ZMMWORD PTR [r9+zmm27*1+0x100]{k1},ymm6 + +// CHECK: vscatterqps zmmword ptr [rcx + 4*zmm27 + 1024] {k1}, ymm6 +// CHECK: encoding: [0x62,0xb2,0x7d,0x41,0xa3,0xb4,0x99,0x00,0x04,0x00,0x00] + vscatterqps ZMMWORD PTR [rcx+zmm27*4+0x400]{k1},ymm6 + +// CHECK: vscatterdpd zmmword ptr [r14 + 8*ymm27 - 123] {k1}, zmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa2,0x94,0xde,0x85,0xff,0xff,0xff] + vscatterdpd ZMMWORD PTR [r14+ymm27*8-0x7b]{k1},zmm18 + +// CHECK: vscatterdpd zmmword ptr [r14 + 8*ymm27 - 123] {k1}, zmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa2,0x94,0xde,0x85,0xff,0xff,0xff] + vscatterdpd ZMMWORD PTR [r14+ymm27*8-0x7b]{k1},zmm18 + +// CHECK: vscatterdpd zmmword ptr [r9 + ymm27 + 256] {k1}, zmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa2,0x54,0x19,0x20] + vscatterdpd ZMMWORD PTR [r9+ymm27*1+0x100]{k1},zmm18 + +// CHECK: vscatterdpd zmmword ptr [rcx + 4*ymm27 + 1024] {k1}, zmm18 +// CHECK: encoding: [0x62,0xa2,0xfd,0x41,0xa2,0x94,0x99,0x00,0x04,0x00,0x00] + vscatterdpd ZMMWORD PTR [rcx+ymm27*4+0x400]{k1},zmm18 + +// CHECK: vscatterdps zmmword ptr [r14 + 8*zmm17 - 123] {k1}, zmm1 +// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0xa2,0x8c,0xce,0x85,0xff,0xff,0xff] + vscatterdps ZMMWORD PTR [r14+zmm17*8-0x7b]{k1},zmm1 + +// CHECK: vscatterdps zmmword ptr [r14 + 8*zmm17 - 123] {k1}, zmm1 +// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0xa2,0x8c,0xce,0x85,0xff,0xff,0xff] + vscatterdps ZMMWORD PTR [r14+zmm17*8-0x7b]{k1},zmm1 + +// CHECK: vscatterdps zmmword ptr [r9 + zmm17 + 256] {k1}, zmm1 +// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0xa2,0x4c,0x09,0x40] + vscatterdps ZMMWORD PTR [r9+zmm17*1+0x100]{k1},zmm1 + +// CHECK: vscatterdps zmmword ptr [rcx + 4*zmm17 + 1024] {k1}, zmm1 +// CHECK: encoding: [0x62,0xf2,0x7d,0x41,0xa2,0x8c,0x89,0x00,0x04,0x00,0x00] + vscatterdps ZMMWORD PTR [rcx+zmm17*4+0x400]{k1},zmm1 + +// CHECK: vscatterqpd zmmword ptr [r14 + 8*zmm25 - 123] {k1}, zmm8 +// CHECK: encoding: [0x62,0x12,0xfd,0x41,0xa3,0x84,0xce,0x85,0xff,0xff,0xff] + vscatterqpd ZMMWORD PTR [r14+zmm25*8-0x7b]{k1},zmm8 + +// CHECK: vscatterqpd zmmword ptr [r14 + 8*zmm25 - 123] {k1}, zmm8 +// CHECK: encoding: [0x62,0x12,0xfd,0x41,0xa3,0x84,0xce,0x85,0xff,0xff,0xff] + vscatterqpd ZMMWORD PTR [r14+zmm25*8-0x7b]{k1},zmm8 + +// CHECK: vscatterqpd zmmword ptr [r9 + zmm25 + 256] {k1}, zmm8 +// CHECK: encoding: [0x62,0x12,0xfd,0x41,0xa3,0x44,0x09,0x20] + vscatterqpd ZMMWORD PTR [r9+zmm25*1+0x100]{k1},zmm8 + +// CHECK: vscatterqpd zmmword ptr [rcx + 4*zmm25 + 1024] {k1}, zmm8 +// CHECK: encoding: [0x62,0x32,0xfd,0x41,0xa3,0x84,0x89,0x00,0x04,0x00,0x00] + vscatterqpd ZMMWORD PTR [rcx+zmm25*4+0x400]{k1},zmm8 + +// CHECK: vscatterqps zmmword ptr [r14 + 8*zmm10 - 123] {k1}, ymm13 +// CHECK: encoding: [0x62,0x12,0x7d,0x49,0xa3,0xac,0xd6,0x85,0xff,0xff,0xff] + vscatterqps ZMMWORD PTR [r14+zmm10*8-0x7b]{k1},ymm13 + +// CHECK: vscatterqps zmmword ptr [r14 + 8*zmm10 - 123] {k1}, ymm13 +// CHECK: encoding: [0x62,0x12,0x7d,0x49,0xa3,0xac,0xd6,0x85,0xff,0xff,0xff] + vscatterqps ZMMWORD PTR [r14+zmm10*8-0x7b]{k1},ymm13 + +// CHECK: vscatterqps zmmword ptr [r9 + zmm10 + 256] {k1}, ymm13 +// CHECK: encoding: [0x62,0x12,0x7d,0x49,0xa3,0x6c,0x11,0x40] + vscatterqps ZMMWORD PTR [r9+zmm10*1+0x100]{k1},ymm13 + +// CHECK: vscatterqps zmmword ptr [rcx + 4*zmm10 + 1024] {k1}, ymm13 +// CHECK: encoding: [0x62,0x32,0x7d,0x49,0xa3,0xac,0x91,0x00,0x04,0x00,0x00] + vscatterqps ZMMWORD PTR [rcx+zmm10*4+0x400]{k1},ymm13 + +// CHECK: vgatherdpd zmm30 {k1}, zmmword ptr [r14 + 8*ymm5 - 123] +// CHECK: encoding: [0x62,0x42,0xfd,0x49,0x92,0xb4,0xee,0x85,0xff,0xff,0xff] + vgatherdpd zmm30{k1},ZMMWORD PTR [r14+ymm5*8-0x7b] + +// CHECK: vgatherdpd zmm30 {k1}, zmmword ptr [r9 + ymm5 + 256] +// CHECK: encoding: [0x62,0x42,0xfd,0x49,0x92,0x74,0x29,0x20] + vgatherdpd zmm30{k1},ZMMWORD PTR [r9+ymm5*1+0x100] + +// CHECK: vgatherdpd zmm30 {k1}, zmmword ptr [rcx + 4*ymm5 + 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x49,0x92,0xb4,0xa9,0x00,0x04,0x00,0x00] + vgatherdpd zmm30{k1},ZMMWORD PTR [rcx+ymm5*4+0x400] + +// CHECK: vgatherdps zmm8 {k1}, zmmword ptr [r14 + 8*zmm26 - 123] +// CHECK: encoding: [0x62,0x12,0x7d,0x41,0x92,0x84,0xd6,0x85,0xff,0xff,0xff] + vgatherdps zmm8{k1},ZMMWORD PTR [r14+zmm26*8-0x7b] + +// CHECK: vgatherdps zmm8 {k1}, zmmword ptr [r9 + zmm26 + 256] +// CHECK: encoding: [0x62,0x12,0x7d,0x41,0x92,0x44,0x11,0x40] + vgatherdps zmm8{k1},ZMMWORD PTR [r9+zmm26*1+0x100] + +// CHECK: vgatherdps zmm8 {k1}, zmmword ptr [rcx + 4*zmm26 + 1024] +// CHECK: encoding: [0x62,0x32,0x7d,0x41,0x92,0x84,0x91,0x00,0x04,0x00,0x00] + vgatherdps zmm8{k1},ZMMWORD PTR [rcx+zmm26*4+0x400] + +// CHECK: vgatherqpd zmm27 {k1}, zmmword ptr [r14 + 8*zmm13 - 123] +// CHECK: encoding: [0x62,0x02,0xfd,0x49,0x93,0x9c,0xee,0x85,0xff,0xff,0xff] + vgatherqpd zmm27{k1},ZMMWORD PTR [r14+zmm13*8-0x7b] + +// CHECK: vgatherqpd zmm27 {k1}, zmmword ptr [r9 + zmm13 + 256] +// CHECK: encoding: [0x62,0x02,0xfd,0x49,0x93,0x5c,0x29,0x20] + vgatherqpd zmm27{k1},ZMMWORD PTR [r9+zmm13*1+0x100] + +// CHECK: vgatherqpd zmm27 {k1}, zmmword ptr [rcx + 4*zmm13 + 1024] +// CHECK: encoding: [0x62,0x22,0xfd,0x49,0x93,0x9c,0xa9,0x00,0x04,0x00,0x00] + vgatherqpd zmm27{k1},ZMMWORD PTR [rcx+zmm13*4+0x400] + +// CHECK: vgatherqps ymm27 {k1}, zmmword ptr [r14 + 8*zmm14 - 123] +// CHECK: encoding: [0x62,0x02,0x7d,0x49,0x93,0x9c,0xf6,0x85,0xff,0xff,0xff] + vgatherqps ymm27{k1},ZMMWORD PTR [r14+zmm14*8-0x7b] + +// CHECK: vgatherqps ymm27 {k1}, zmmword ptr [r9 + zmm14 + 256] +// CHECK: encoding: [0x62,0x02,0x7d,0x49,0x93,0x5c,0x31,0x40] + vgatherqps ymm27{k1},ZMMWORD PTR [r9+zmm14*1+0x100] + +// CHECK: vgatherqps ymm27 {k1}, zmmword ptr [rcx + 4*zmm14 + 1024] +// CHECK: encoding: [0x62,0x22,0x7d,0x49,0x93,0x9c,0xb1,0x00,0x04,0x00,0x00] + vgatherqps ymm27{k1},ZMMWORD PTR [rcx+zmm14*4+0x400] + +// CHECK: vpgatherdd zmm7 {k1}, zmmword ptr [r14 + 8*zmm16 - 123] +// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0x90,0xbc,0xc6,0x85,0xff,0xff,0xff] + vpgatherdd zmm7{k1},ZMMWORD PTR [r14+zmm16*8-0x7b] + +// CHECK: vpgatherdd zmm7 {k1}, zmmword ptr [r9 + zmm16 + 256] +// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0x90,0x7c,0x01,0x40] + vpgatherdd zmm7{k1},ZMMWORD PTR [r9+zmm16*1+0x100] + +// CHECK: vpgatherdd zmm7 {k1}, zmmword ptr [rcx + 4*zmm16 + 1024] +// CHECK: encoding: [0x62,0xf2,0x7d,0x41,0x90,0xbc,0x81,0x00,0x04,0x00,0x00] + vpgatherdd zmm7{k1},ZMMWORD PTR [rcx+zmm16*4+0x400] + +// CHECK: vpgatherdq zmm25 {k1}, zmmword ptr [r14 + 8*ymm7 - 123] +// CHECK: encoding: [0x62,0x42,0xfd,0x49,0x90,0x8c,0xfe,0x85,0xff,0xff,0xff] + vpgatherdq zmm25{k1},ZMMWORD PTR [r14+ymm7*8-0x7b] + +// CHECK: vpgatherdq zmm25 {k1}, zmmword ptr [r9 + ymm7 + 256] +// CHECK: encoding: [0x62,0x42,0xfd,0x49,0x90,0x4c,0x39,0x20] + vpgatherdq zmm25{k1},ZMMWORD PTR [r9+ymm7*1+0x100] + +// CHECK: vpgatherdq zmm25 {k1}, zmmword ptr [rcx + 4*ymm7 + 1024] +// CHECK: encoding: [0x62,0x62,0xfd,0x49,0x90,0x8c,0xb9,0x00,0x04,0x00,0x00] + vpgatherdq zmm25{k1},ZMMWORD PTR [rcx+ymm7*4+0x400] + +// CHECK: vpgatherqd ymm19 {k1}, zmmword ptr [r14 + 8*zmm17 - 123] +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0x91,0x9c,0xce,0x85,0xff,0xff,0xff] + vpgatherqd ymm19{k1},ZMMWORD PTR [r14+zmm17*8-0x7b] + +// CHECK: vpgatherqd ymm19 {k1}, zmmword ptr [r9 + zmm17 + 256] +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0x91,0x5c,0x09,0x40] + vpgatherqd ymm19{k1},ZMMWORD PTR [r9+zmm17*1+0x100] + +// CHECK: vpgatherqd ymm19 {k1}, zmmword ptr [rcx + 4*zmm17 + 1024] +// CHECK: encoding: [0x62,0xe2,0x7d,0x41,0x91,0x9c,0x89,0x00,0x04,0x00,0x00] + vpgatherqd ymm19{k1},ZMMWORD PTR [rcx+zmm17*4+0x400] + +// CHECK: vpgatherqq zmm10 {k1}, zmmword ptr [r14 + 8*zmm13 - 123] +// CHECK: encoding: [0x62,0x12,0xfd,0x49,0x91,0x94,0xee,0x85,0xff,0xff,0xff] + vpgatherqq zmm10{k1},ZMMWORD PTR [r14+zmm13*8-0x7b] + +// CHECK: vpgatherqq zmm10 {k1}, zmmword ptr [r9 + zmm13 + 256] +// CHECK: encoding: [0x62,0x12,0xfd,0x49,0x91,0x54,0x29,0x20] + vpgatherqq zmm10{k1},ZMMWORD PTR [r9+zmm13*1+0x100] + +// CHECK: vpgatherqq zmm10 {k1}, zmmword ptr [rcx + 4*zmm13 + 1024] +// CHECK: encoding: [0x62,0x32,0xfd,0x49,0x91,0x94,0xa9,0x00,0x04,0x00,0x00] + vpgatherqq zmm10{k1},ZMMWORD PTR [rcx+zmm13*4+0x400] + +// CHECK: vpscatterdd zmmword ptr [r14 + 8*zmm4 - 123] {k1}, zmm23 +// CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa0,0xbc,0xe6,0x85,0xff,0xff,0xff] + vpscatterdd ZMMWORD PTR [r14+zmm4*8-0x7b]{k1},zmm23 + +// CHECK: vpscatterdd zmmword ptr [r14 + 8*zmm4 - 123] {k1}, zmm23 +// CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa0,0xbc,0xe6,0x85,0xff,0xff,0xff] + vpscatterdd ZMMWORD PTR [r14+zmm4*8-0x7b]{k1},zmm23 + +// CHECK: vpscatterdd zmmword ptr [r9 + zmm4 + 256] {k1}, zmm23 +// CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa0,0x7c,0x21,0x40] + vpscatterdd ZMMWORD PTR [r9+zmm4*1+0x100]{k1},zmm23 + +// CHECK: vpscatterdd zmmword ptr [rcx + 4*zmm4 + 1024] {k1}, zmm23 +// CHECK: encoding: [0x62,0xe2,0x7d,0x49,0xa0,0xbc,0xa1,0x00,0x04,0x00,0x00] + vpscatterdd ZMMWORD PTR [rcx+zmm4*4+0x400]{k1},zmm23 + +// CHECK: vpscatterdq zmmword ptr [r14 + 8*ymm25 - 123] {k1}, zmm1 +// CHECK: encoding: [0x62,0x92,0xfd,0x41,0xa0,0x8c,0xce,0x85,0xff,0xff,0xff] + vpscatterdq ZMMWORD PTR [r14+ymm25*8-0x7b]{k1},zmm1 + +// CHECK: vpscatterdq zmmword ptr [r14 + 8*ymm25 - 123] {k1}, zmm1 +// CHECK: encoding: [0x62,0x92,0xfd,0x41,0xa0,0x8c,0xce,0x85,0xff,0xff,0xff] + vpscatterdq ZMMWORD PTR [r14+ymm25*8-0x7b]{k1},zmm1 + +// CHECK: vpscatterdq zmmword ptr [r9 + ymm25 + 256] {k1}, zmm1 +// CHECK: encoding: [0x62,0x92,0xfd,0x41,0xa0,0x4c,0x09,0x20] + vpscatterdq ZMMWORD PTR [r9+ymm25*1+0x100]{k1},zmm1 + +// CHECK: vpscatterdq zmmword ptr [rcx + 4*ymm25 + 1024] {k1}, zmm1 +// CHECK: encoding: [0x62,0xb2,0xfd,0x41,0xa0,0x8c,0x89,0x00,0x04,0x00,0x00] + vpscatterdq ZMMWORD PTR [rcx+ymm25*4+0x400]{k1},zmm1 + +// CHECK: vpscatterqd zmmword ptr [r14 + 8*zmm22 - 123] {k1}, ymm23 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa1,0xbc,0xf6,0x85,0xff,0xff,0xff] + vpscatterqd ZMMWORD PTR [r14+zmm22*8-0x7b]{k1},ymm23 + +// CHECK: vpscatterqd zmmword ptr [r14 + 8*zmm22 - 123] {k1}, ymm23 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa1,0xbc,0xf6,0x85,0xff,0xff,0xff] + vpscatterqd ZMMWORD PTR [r14+zmm22*8-0x7b]{k1},ymm23 + +// CHECK: vpscatterqd zmmword ptr [r9 + zmm22 + 256] {k1}, ymm23 +// CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa1,0x7c,0x31,0x40] + vpscatterqd ZMMWORD PTR [r9+zmm22*1+0x100]{k1},ymm23 + +// CHECK: vpscatterqd zmmword ptr [rcx + 4*zmm22 + 1024] {k1}, ymm23 +// CHECK: encoding: [0x62,0xe2,0x7d,0x41,0xa1,0xbc,0xb1,0x00,0x04,0x00,0x00] + vpscatterqd ZMMWORD PTR [rcx+zmm22*4+0x400]{k1},ymm23 + +// CHECK: vpscatterqq zmmword ptr [r14 + 8*zmm8 - 123] {k1}, zmm2 +// CHECK: encoding: [0x62,0x92,0xfd,0x49,0xa1,0x94,0xc6,0x85,0xff,0xff,0xff] + vpscatterqq ZMMWORD PTR [r14+zmm8*8-0x7b]{k1},zmm2 + +// CHECK: vpscatterqq zmmword ptr [r14 + 8*zmm8 - 123] {k1}, zmm2 +// CHECK: encoding: [0x62,0x92,0xfd,0x49,0xa1,0x94,0xc6,0x85,0xff,0xff,0xff] + vpscatterqq ZMMWORD PTR [r14+zmm8*8-0x7b]{k1},zmm2 + +// CHECK: vpscatterqq zmmword ptr [r9 + zmm8 + 256] {k1}, zmm2 +// CHECK: encoding: [0x62,0x92,0xfd,0x49,0xa1,0x54,0x01,0x20] + vpscatterqq ZMMWORD PTR [r9+zmm8*1+0x100]{k1},zmm2 + +// CHECK: vpscatterqq zmmword ptr [rcx + 4*zmm8 + 1024] {k1}, zmm2 +// CHECK: encoding: [0x62,0xb2,0xfd,0x49,0xa1,0x94,0x81,0x00,0x04,0x00,0x00] + vpscatterqq ZMMWORD PTR [rcx+zmm8*4+0x400]{k1},zmm2 diff --git a/test/MC/X86/intel-syntax-x86-64-avx.s b/test/MC/X86/intel-syntax-x86-64-avx.s new file mode 100644 index 000000000000..eff0974c1a0f --- /dev/null +++ b/test/MC/X86/intel-syntax-x86-64-avx.s @@ -0,0 +1,65 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s + +// CHECK: vgatherdpd xmm2, xmmword ptr [rdi + 2*xmm1], xmm0 +// CHECK: encoding: [0xc4,0xe2,0xf9,0x92,0x14,0x4f] + vgatherdpd xmm2, xmmword ptr [rdi + 2*xmm1], xmm0 + +// CHECK: vgatherqpd xmm2, xmmword ptr [rdi + 2*xmm1], xmm0 +// CHECK: encoding: [0xc4,0xe2,0xf9,0x93,0x14,0x4f] + vgatherqpd xmm2, xmmword ptr [rdi + 2*xmm1], xmm0 + +// CHECK: vgatherdpd ymm2, ymmword ptr [rdi + 2*xmm1], ymm0 +// CHECK: encoding: [0xc4,0xe2,0xfd,0x92,0x14,0x4f] + vgatherdpd ymm2, ymmword ptr [rdi + 2*xmm1], ymm0 + +// CHECK: vgatherqpd ymm2, ymmword ptr [rdi + 2*ymm1], ymm0 +// CHECK: encoding: [0xc4,0xe2,0xfd,0x93,0x14,0x4f] + vgatherqpd ymm2, ymmword ptr [rdi + 2*ymm1], ymm0 + +// CHECK: vgatherdps xmm10, xmmword ptr [r15 + 2*xmm9], xmm8 +// CHECK: encoding: [0xc4,0x02,0x39,0x92,0x14,0x4f] + vgatherdps xmm10, xmmword ptr [r15 + 2*xmm9], xmm8 + +// CHECK: vgatherqps xmm10, qword ptr [r15 + 2*xmm9], xmm8 +// CHECK: encoding: [0xc4,0x02,0x39,0x93,0x14,0x4f] + vgatherqps xmm10, qword ptr [r15 + 2*xmm9], xmm8 + +// CHECK: vgatherdps ymm10, ymmword ptr [r15 + 2*ymm9], ymm8 +// CHECK: encoding: [0xc4,0x02,0x3d,0x92,0x14,0x4f] + vgatherdps ymm10, ymmword ptr [r15 + 2*ymm9], ymm8 + +// CHECK: vgatherqps xmm10, xmmword ptr [r15 + 2*ymm9], xmm8 +// CHECK: encoding: [0xc4,0x02,0x3d,0x93,0x14,0x4f] + vgatherqps xmm10, xmmword ptr [r15 + 2*ymm9], xmm8 + +// CHECK: vpgatherdq xmm2, xmmword ptr [rdi + 2*xmm1], xmm0 +// CHECK: encoding: [0xc4,0xe2,0xf9,0x90,0x14,0x4f] + vpgatherdq xmm2, xmmword ptr [rdi + 2*xmm1], xmm0 + +// CHECK: vpgatherqq xmm2, xmmword ptr [rdi + 2*xmm1], xmm0 +// CHECK: encoding: [0xc4,0xe2,0xf9,0x91,0x14,0x4f] + vpgatherqq xmm2, xmmword ptr [rdi + 2*xmm1], xmm0 + +// CHECK: vpgatherdq ymm2, ymmword ptr [rdi + 2*xmm1], ymm0 +// CHECK: encoding: [0xc4,0xe2,0xfd,0x90,0x14,0x4f] + vpgatherdq ymm2, ymmword ptr [rdi + 2*xmm1], ymm0 + +// CHECK: vpgatherqq ymm2, ymmword ptr [rdi + 2*ymm1], ymm0 +// CHECK: encoding: [0xc4,0xe2,0xfd,0x91,0x14,0x4f] + vpgatherqq ymm2, ymmword ptr [rdi + 2*ymm1], ymm0 + +// CHECK: vpgatherdd xmm10, xmmword ptr [r15 + 2*xmm9], xmm8 +// CHECK: encoding: [0xc4,0x02,0x39,0x90,0x14,0x4f] + vpgatherdd xmm10, xmmword ptr [r15 + 2*xmm9], xmm8 + +// CHECK: vpgatherqd xmm10, qword ptr [r15 + 2*xmm9], xmm8 +// CHECK: encoding: [0xc4,0x02,0x39,0x91,0x14,0x4f] + vpgatherqd xmm10, qword ptr [r15 + 2*xmm9], xmm8 + +// CHECK: vpgatherdd ymm10, ymmword ptr [r15 + 2*ymm9], ymm8 +// CHECK: encoding: [0xc4,0x02,0x3d,0x90,0x14,0x4f] + vpgatherdd ymm10, ymmword ptr [r15 + 2*ymm9], ymm8 + +// CHECK: vpgatherqd xmm10, xmmword ptr [r15 + 2*ymm9], xmm8 +// CHECK: encoding: [0xc4,0x02,0x3d,0x91,0x14,0x4f] + vpgatherqd xmm10, xmmword ptr [r15 + 2*ymm9], xmm8 diff --git a/test/MC/X86/intel-syntax-x86-64-avx512f_vl.s b/test/MC/X86/intel-syntax-x86-64-avx512f_vl.s index 80e26f1ef026..caff5978d5d2 100644 --- a/test/MC/X86/intel-syntax-x86-64-avx512f_vl.s +++ b/test/MC/X86/intel-syntax-x86-64-avx512f_vl.s @@ -223,3 +223,900 @@ // CHECK: vcmpps k4, ymm19, dword ptr [rdx - 516]{1to8}, 123 // CHECK: encoding: [0x62,0xf1,0x64,0x30,0xc2,0xa2,0xfc,0xfd,0xff,0xff,0x7b] vcmpps k4,ymm19,DWORD PTR [rdx-0x204]{1to8},0x7b + +// CHECK: vgatherdpd xmm17 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x92,0x8c,0xfe,0x7b,0x00,0x00,0x00] + vgatherdpd xmm17 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vgatherdpd xmm17 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x92,0x4c,0x39,0x20] + vgatherdpd xmm17 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherdpd xmm17 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0x92,0x8c,0xb9,0x00,0x04,0x00,0x00] + vgatherdpd xmm17 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherdpd ymm23 {k1}, ymmword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x92,0xbc,0xfe,0x7b,0x00,0x00,0x00] + vgatherdpd ymm23 {k1}, ymmword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vgatherdpd ymm23 {k1}, ymmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x92,0x7c,0x39,0x20] + vgatherdpd ymm23 {k1}, ymmword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherdpd ymm23 {k1}, ymmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0x92,0xbc,0xb9,0x00,0x04,0x00,0x00] + vgatherdpd ymm23 {k1}, ymmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherdpd xmm23 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x92,0xbc,0xfe,0x85,0xff,0xff,0xff] + vgatherdpd xmm23 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vgatherdpd xmm23 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x92,0x7c,0x39,0x20] + vgatherdpd xmm23 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherdpd xmm23 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0x92,0xbc,0xb9,0x00,0x04,0x00,0x00] + vgatherdpd xmm23 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherdpd ymm18 {k1}, ymmword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x92,0x94,0xfe,0x85,0xff,0xff,0xff] + vgatherdpd ymm18 {k1}, ymmword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vgatherdpd ymm18 {k1}, ymmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x92,0x54,0x39,0x20] + vgatherdpd ymm18 {k1}, ymmword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherdpd ymm18 {k1}, ymmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0x92,0x94,0xb9,0x00,0x04,0x00,0x00] + vgatherdpd ymm18 {k1}, ymmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherdps xmm18 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x92,0x94,0xfe,0x7b,0x00,0x00,0x00] + vgatherdps xmm18 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vgatherdps xmm18 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x92,0x54,0x39,0x40] + vgatherdps xmm18 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherdps xmm18 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0x92,0x94,0xb9,0x00,0x04,0x00,0x00] + vgatherdps xmm18 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherdps ymm27 {k1}, ymmword ptr [r14 + 8*ymm31 + 123] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x92,0x9c,0xfe,0x7b,0x00,0x00,0x00] + vgatherdps ymm27 {k1}, ymmword ptr [r14 + 8*ymm31 + 123] + +// CHECK: vgatherdps ymm27 {k1}, ymmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x92,0x5c,0x39,0x40] + vgatherdps ymm27 {k1}, ymmword ptr [r9 + ymm31 + 256] + +// CHECK: vgatherdps ymm27 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0x92,0x9c,0xb9,0x00,0x04,0x00,0x00] + vgatherdps ymm27 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vgatherdps xmm29 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0x92,0xac,0xfe,0x85,0xff,0xff,0xff] + vgatherdps xmm29 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vgatherdps xmm29 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0x92,0x6c,0x39,0x40] + vgatherdps xmm29 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherdps xmm29 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0x22,0x7d,0x01,0x92,0xac,0xb9,0x00,0x04,0x00,0x00] + vgatherdps xmm29 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherdps ymm21 {k1}, ymmword ptr [r14 + 8*ymm31 - 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0x92,0xac,0xfe,0x85,0xff,0xff,0xff] + vgatherdps ymm21 {k1}, ymmword ptr [r14 + 8*ymm31 - 123] + +// CHECK: vgatherdps ymm21 {k1}, ymmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0x92,0x6c,0x39,0x40] + vgatherdps ymm21 {k1}, ymmword ptr [r9 + ymm31 + 256] + +// CHECK: vgatherdps ymm21 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x21,0x92,0xac,0xb9,0x00,0x04,0x00,0x00] + vgatherdps ymm21 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vgatherqpd xmm17 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x93,0x8c,0xfe,0x7b,0x00,0x00,0x00] + vgatherqpd xmm17 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vgatherqpd xmm17 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x93,0x4c,0x39,0x20] + vgatherqpd xmm17 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherqpd xmm17 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0x93,0x8c,0xb9,0x00,0x04,0x00,0x00] + vgatherqpd xmm17 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherqpd ymm29 {k1}, ymmword ptr [r14 + 8*ymm31 + 123] +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0x93,0xac,0xfe,0x7b,0x00,0x00,0x00] + vgatherqpd ymm29 {k1}, ymmword ptr [r14 + 8*ymm31 + 123] + +// CHECK: vgatherqpd ymm29 {k1}, ymmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0x93,0x6c,0x39,0x20] + vgatherqpd ymm29 {k1}, ymmword ptr [r9 + ymm31 + 256] + +// CHECK: vgatherqpd ymm29 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0x22,0xfd,0x21,0x93,0xac,0xb9,0x00,0x04,0x00,0x00] + vgatherqpd ymm29 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vgatherqpd xmm18 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x93,0x94,0xfe,0x85,0xff,0xff,0xff] + vgatherqpd xmm18 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vgatherqpd xmm18 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x93,0x54,0x39,0x20] + vgatherqpd xmm18 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherqpd xmm18 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0x93,0x94,0xb9,0x00,0x04,0x00,0x00] + vgatherqpd xmm18 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherqpd ymm21 {k1}, ymmword ptr [r14 + 8*ymm31 - 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x93,0xac,0xfe,0x85,0xff,0xff,0xff] + vgatherqpd ymm21 {k1}, ymmword ptr [r14 + 8*ymm31 - 123] + +// CHECK: vgatherqpd ymm21 {k1}, ymmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x93,0x6c,0x39,0x20] + vgatherqpd ymm21 {k1}, ymmword ptr [r9 + ymm31 + 256] + +// CHECK: vgatherqpd ymm21 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0x93,0xac,0xb9,0x00,0x04,0x00,0x00] + vgatherqpd ymm21 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vgatherqps xmm21 {k1}, qword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x93,0xac,0xfe,0x7b,0x00,0x00,0x00] + vgatherqps xmm21 {k1}, qword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vgatherqps xmm21 {k1}, qword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x93,0x6c,0x39,0x40] + vgatherqps xmm21 {k1}, qword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherqps xmm21 {k1}, qword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0x93,0xac,0xb9,0x00,0x04,0x00,0x00] + vgatherqps xmm21 {k1}, qword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherqps xmm19 {k1}, xmmword ptr [r14 + 8*ymm31 + 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0x93,0x9c,0xfe,0x7b,0x00,0x00,0x00] + vgatherqps xmm19 {k1}, xmmword ptr [r14 + 8*ymm31 + 123] + +// CHECK: vgatherqps xmm19 {k1}, xmmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0x93,0x5c,0x39,0x40] + vgatherqps xmm19 {k1}, xmmword ptr [r9 + ymm31 + 256] + +// CHECK: vgatherqps xmm19 {k1}, xmmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x21,0x93,0x9c,0xb9,0x00,0x04,0x00,0x00] + vgatherqps xmm19 {k1}, xmmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vgatherqps xmm22 {k1}, qword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x93,0xb4,0xfe,0x85,0xff,0xff,0xff] + vgatherqps xmm22 {k1}, qword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vgatherqps xmm22 {k1}, qword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x93,0x74,0x39,0x40] + vgatherqps xmm22 {k1}, qword ptr [r9 + xmm31 + 256] + +// CHECK: vgatherqps xmm22 {k1}, qword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0x93,0xb4,0xb9,0x00,0x04,0x00,0x00] + vgatherqps xmm22 {k1}, qword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vgatherqps xmm30 {k1}, xmmword ptr [r14 + 8*ymm31 - 123] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x93,0xb4,0xfe,0x85,0xff,0xff,0xff] + vgatherqps xmm30 {k1}, xmmword ptr [r14 + 8*ymm31 - 123] + +// CHECK: vgatherqps xmm30 {k1}, xmmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x93,0x74,0x39,0x40] + vgatherqps xmm30 {k1}, xmmword ptr [r9 + ymm31 + 256] + +// CHECK: vgatherqps xmm30 {k1}, xmmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0x93,0xb4,0xb9,0x00,0x04,0x00,0x00] + vgatherqps xmm30 {k1}, xmmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vpgatherdd xmm17 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x90,0x8c,0xfe,0x7b,0x00,0x00,0x00] + vpgatherdd xmm17 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vpgatherdd xmm17 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x90,0x4c,0x39,0x40] + vpgatherdd xmm17 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherdd xmm17 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0x90,0x8c,0xb9,0x00,0x04,0x00,0x00] + vpgatherdd xmm17 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherdd ymm19 {k1}, ymmword ptr [r14 + 8*ymm31 + 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0x90,0x9c,0xfe,0x7b,0x00,0x00,0x00] + vpgatherdd ymm19 {k1}, ymmword ptr [r14 + 8*ymm31 + 123] + +// CHECK: vpgatherdd ymm19 {k1}, ymmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0x90,0x5c,0x39,0x40] + vpgatherdd ymm19 {k1}, ymmword ptr [r9 + ymm31 + 256] + +// CHECK: vpgatherdd ymm19 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x21,0x90,0x9c,0xb9,0x00,0x04,0x00,0x00] + vpgatherdd ymm19 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vpgatherdd xmm22 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x90,0xb4,0xfe,0x85,0xff,0xff,0xff] + vpgatherdd xmm22 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vpgatherdd xmm22 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x90,0x74,0x39,0x40] + vpgatherdd xmm22 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherdd xmm22 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0x90,0xb4,0xb9,0x00,0x04,0x00,0x00] + vpgatherdd xmm22 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherdd ymm29 {k1}, ymmword ptr [r14 + 8*ymm31 - 123] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x90,0xac,0xfe,0x85,0xff,0xff,0xff] + vpgatherdd ymm29 {k1}, ymmword ptr [r14 + 8*ymm31 - 123] + +// CHECK: vpgatherdd ymm29 {k1}, ymmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x90,0x6c,0x39,0x40] + vpgatherdd ymm29 {k1}, ymmword ptr [r9 + ymm31 + 256] + +// CHECK: vpgatherdd ymm29 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0x90,0xac,0xb9,0x00,0x04,0x00,0x00] + vpgatherdd ymm29 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vpgatherdq xmm17 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x90,0x8c,0xfe,0x7b,0x00,0x00,0x00] + vpgatherdq xmm17 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vpgatherdq xmm17 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x90,0x4c,0x39,0x20] + vpgatherdq xmm17 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherdq xmm17 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0x90,0x8c,0xb9,0x00,0x04,0x00,0x00] + vpgatherdq xmm17 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherdq ymm26 {k1}, ymmword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0x90,0x94,0xfe,0x7b,0x00,0x00,0x00] + vpgatherdq ymm26 {k1}, ymmword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vpgatherdq ymm26 {k1}, ymmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0x90,0x54,0x39,0x20] + vpgatherdq ymm26 {k1}, ymmword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherdq ymm26 {k1}, ymmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0x22,0xfd,0x21,0x90,0x94,0xb9,0x00,0x04,0x00,0x00] + vpgatherdq ymm26 {k1}, ymmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherdq xmm25 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0x90,0x8c,0xfe,0x85,0xff,0xff,0xff] + vpgatherdq xmm25 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vpgatherdq xmm25 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0x90,0x4c,0x39,0x20] + vpgatherdq xmm25 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherdq xmm25 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0x22,0xfd,0x01,0x90,0x8c,0xb9,0x00,0x04,0x00,0x00] + vpgatherdq xmm25 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherdq ymm22 {k1}, ymmword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x90,0xb4,0xfe,0x85,0xff,0xff,0xff] + vpgatherdq ymm22 {k1}, ymmword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vpgatherdq ymm22 {k1}, ymmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x90,0x74,0x39,0x20] + vpgatherdq ymm22 {k1}, ymmword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherdq ymm22 {k1}, ymmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0x90,0xb4,0xb9,0x00,0x04,0x00,0x00] + vpgatherdq ymm22 {k1}, ymmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherqd xmm21 {k1}, qword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x91,0xac,0xfe,0x7b,0x00,0x00,0x00] + vpgatherqd xmm21 {k1}, qword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vpgatherqd xmm21 {k1}, qword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0x91,0x6c,0x39,0x40] + vpgatherqd xmm21 {k1}, qword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherqd xmm21 {k1}, qword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0x91,0xac,0xb9,0x00,0x04,0x00,0x00] + vpgatherqd xmm21 {k1}, qword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherqd xmm25 {k1}, xmmword ptr [r14 + 8*ymm31 + 123] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x91,0x8c,0xfe,0x7b,0x00,0x00,0x00] + vpgatherqd xmm25 {k1}, xmmword ptr [r14 + 8*ymm31 + 123] + +// CHECK: vpgatherqd xmm25 {k1}, xmmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x91,0x4c,0x39,0x40] + vpgatherqd xmm25 {k1}, xmmword ptr [r9 + ymm31 + 256] + +// CHECK: vpgatherqd xmm25 {k1}, xmmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0x91,0x8c,0xb9,0x00,0x04,0x00,0x00] + vpgatherqd xmm25 {k1}, xmmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vpgatherqd xmm30 {k1}, qword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0x91,0xb4,0xfe,0x85,0xff,0xff,0xff] + vpgatherqd xmm30 {k1}, qword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vpgatherqd xmm30 {k1}, qword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0x91,0x74,0x39,0x40] + vpgatherqd xmm30 {k1}, qword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherqd xmm30 {k1}, qword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0x22,0x7d,0x01,0x91,0xb4,0xb9,0x00,0x04,0x00,0x00] + vpgatherqd xmm30 {k1}, qword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherqd xmm28 {k1}, xmmword ptr [r14 + 8*ymm31 - 123] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x91,0xa4,0xfe,0x85,0xff,0xff,0xff] + vpgatherqd xmm28 {k1}, xmmword ptr [r14 + 8*ymm31 - 123] + +// CHECK: vpgatherqd xmm28 {k1}, xmmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0x91,0x64,0x39,0x40] + vpgatherqd xmm28 {k1}, xmmword ptr [r9 + ymm31 + 256] + +// CHECK: vpgatherqd xmm28 {k1}, xmmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0x91,0xa4,0xb9,0x00,0x04,0x00,0x00] + vpgatherqd xmm28 {k1}, xmmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vpgatherqq xmm18 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x91,0x94,0xfe,0x7b,0x00,0x00,0x00] + vpgatherqq xmm18 {k1}, xmmword ptr [r14 + 8*xmm31 + 123] + +// CHECK: vpgatherqq xmm18 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x91,0x54,0x39,0x20] + vpgatherqq xmm18 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherqq xmm18 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0x91,0x94,0xb9,0x00,0x04,0x00,0x00] + vpgatherqq xmm18 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherqq ymm19 {k1}, ymmword ptr [r14 + 8*ymm31 + 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x91,0x9c,0xfe,0x7b,0x00,0x00,0x00] + vpgatherqq ymm19 {k1}, ymmword ptr [r14 + 8*ymm31 + 123] + +// CHECK: vpgatherqq ymm19 {k1}, ymmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0x91,0x5c,0x39,0x20] + vpgatherqq ymm19 {k1}, ymmword ptr [r9 + ymm31 + 256] + +// CHECK: vpgatherqq ymm19 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0x91,0x9c,0xb9,0x00,0x04,0x00,0x00] + vpgatherqq ymm19 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vpgatherqq xmm23 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x91,0xbc,0xfe,0x85,0xff,0xff,0xff] + vpgatherqq xmm23 {k1}, xmmword ptr [r14 + 8*xmm31 - 123] + +// CHECK: vpgatherqq xmm23 {k1}, xmmword ptr [r9 + xmm31 + 256] +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0x91,0x7c,0x39,0x20] + vpgatherqq xmm23 {k1}, xmmword ptr [r9 + xmm31 + 256] + +// CHECK: vpgatherqq xmm23 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0x91,0xbc,0xb9,0x00,0x04,0x00,0x00] + vpgatherqq xmm23 {k1}, xmmword ptr [rcx + 4*xmm31 + 1024] + +// CHECK: vpgatherqq ymm26 {k1}, ymmword ptr [r14 + 8*ymm31 - 123] +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0x91,0x94,0xfe,0x85,0xff,0xff,0xff] + vpgatherqq ymm26 {k1}, ymmword ptr [r14 + 8*ymm31 - 123] + +// CHECK: vpgatherqq ymm26 {k1}, ymmword ptr [r9 + ymm31 + 256] +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0x91,0x54,0x39,0x20] + vpgatherqq ymm26 {k1}, ymmword ptr [r9 + ymm31 + 256] + +// CHECK: vpgatherqq ymm26 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] +// CHECK: encoding: [0x62,0x22,0xfd,0x21,0x91,0x94,0xb9,0x00,0x04,0x00,0x00] + vpgatherqq ymm26 {k1}, ymmword ptr [rcx + 4*ymm31 + 1024] + +// CHECK: vpscatterdd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm20 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa0,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterdd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm20 + +// CHECK: vpscatterdd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm20 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa0,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterdd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm20 + +// CHECK: vpscatterdd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm20 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa0,0x64,0x39,0x40] + vpscatterdd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm20 + +// CHECK: vpscatterdd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm20 +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0xa0,0xa4,0xb9,0x00,0x04,0x00,0x00] + vpscatterdd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm20 + +// CHECK: vpscatterdd ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa0,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterdd ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm28 + +// CHECK: vpscatterdd ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa0,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterdd ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm28 + +// CHECK: vpscatterdd ymmword ptr [r9 + ymm31 + 256] {k1}, ymm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa0,0x64,0x39,0x40] + vpscatterdd ymmword ptr [r9 + ymm31 + 256] {k1}, ymm28 + +// CHECK: vpscatterdd ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm28 +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0xa0,0xa4,0xb9,0x00,0x04,0x00,0x00] + vpscatterdd ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm28 + +// CHECK: vpscatterdd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm17 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa0,0x8c,0xfe,0x85,0xff,0xff,0xff] + vpscatterdd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm17 + +// CHECK: vpscatterdd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm17 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa0,0x8c,0xfe,0x85,0xff,0xff,0xff] + vpscatterdd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm17 + +// CHECK: vpscatterdd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm17 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa0,0x4c,0x39,0x40] + vpscatterdd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm17 + +// CHECK: vpscatterdd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm17 +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0xa0,0x8c,0xb9,0x00,0x04,0x00,0x00] + vpscatterdd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm17 + +// CHECK: vpscatterdd ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa0,0x84,0xfe,0x85,0xff,0xff,0xff] + vpscatterdd ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm24 + +// CHECK: vpscatterdd ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa0,0x84,0xfe,0x85,0xff,0xff,0xff] + vpscatterdd ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm24 + +// CHECK: vpscatterdd ymmword ptr [r9 + ymm31 + 256] {k1}, ymm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa0,0x44,0x39,0x40] + vpscatterdd ymmword ptr [r9 + ymm31 + 256] {k1}, ymm24 + +// CHECK: vpscatterdd ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm24 +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0xa0,0x84,0xb9,0x00,0x04,0x00,0x00] + vpscatterdd ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm24 + +// CHECK: vpscatterdq xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm21 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa0,0xac,0xfe,0x7b,0x00,0x00,0x00] + vpscatterdq xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm21 + +// CHECK: vpscatterdq xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm21 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa0,0xac,0xfe,0x7b,0x00,0x00,0x00] + vpscatterdq xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm21 + +// CHECK: vpscatterdq xmmword ptr [r9 + xmm31 + 256] {k1}, xmm21 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa0,0x6c,0x39,0x20] + vpscatterdq xmmword ptr [r9 + xmm31 + 256] {k1}, xmm21 + +// CHECK: vpscatterdq xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm21 +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0xa0,0xac,0xb9,0x00,0x04,0x00,0x00] + vpscatterdq xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm21 + +// CHECK: vpscatterdq ymmword ptr [r14 + 8*xmm31 + 123] {k1}, ymm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa0,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterdq ymmword ptr [r14 + 8*xmm31 + 123] {k1}, ymm28 + +// CHECK: vpscatterdq ymmword ptr [r14 + 8*xmm31 + 123] {k1}, ymm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa0,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterdq ymmword ptr [r14 + 8*xmm31 + 123] {k1}, ymm28 + +// CHECK: vpscatterdq ymmword ptr [r9 + xmm31 + 256] {k1}, ymm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa0,0x64,0x39,0x20] + vpscatterdq ymmword ptr [r9 + xmm31 + 256] {k1}, ymm28 + +// CHECK: vpscatterdq ymmword ptr [rcx + 4*xmm31 + 1024] {k1}, ymm28 +// CHECK: encoding: [0x62,0x22,0xfd,0x21,0xa0,0xa4,0xb9,0x00,0x04,0x00,0x00] + vpscatterdq ymmword ptr [rcx + 4*xmm31 + 1024] {k1}, ymm28 + +// CHECK: vpscatterdq xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa0,0xa4,0xfe,0x85,0xff,0xff,0xff] + vpscatterdq xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm28 + +// CHECK: vpscatterdq xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa0,0xa4,0xfe,0x85,0xff,0xff,0xff] + vpscatterdq xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm28 + +// CHECK: vpscatterdq xmmword ptr [r9 + xmm31 + 256] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa0,0x64,0x39,0x20] + vpscatterdq xmmword ptr [r9 + xmm31 + 256] {k1}, xmm28 + +// CHECK: vpscatterdq xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm28 +// CHECK: encoding: [0x62,0x22,0xfd,0x01,0xa0,0xa4,0xb9,0x00,0x04,0x00,0x00] + vpscatterdq xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm28 + +// CHECK: vpscatterdq ymmword ptr [r14 + 8*xmm31 - 123] {k1}, ymm20 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa0,0xa4,0xfe,0x85,0xff,0xff,0xff] + vpscatterdq ymmword ptr [r14 + 8*xmm31 - 123] {k1}, ymm20 + +// CHECK: vpscatterdq ymmword ptr [r14 + 8*xmm31 - 123] {k1}, ymm20 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa0,0xa4,0xfe,0x85,0xff,0xff,0xff] + vpscatterdq ymmword ptr [r14 + 8*xmm31 - 123] {k1}, ymm20 + +// CHECK: vpscatterdq ymmword ptr [r9 + xmm31 + 256] {k1}, ymm20 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa0,0x64,0x39,0x20] + vpscatterdq ymmword ptr [r9 + xmm31 + 256] {k1}, ymm20 + +// CHECK: vpscatterdq ymmword ptr [rcx + 4*xmm31 + 1024] {k1}, ymm20 +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0xa0,0xa4,0xb9,0x00,0x04,0x00,0x00] + vpscatterdq ymmword ptr [rcx + 4*xmm31 + 1024] {k1}, ymm20 + +// CHECK: vpscatterqd qword ptr [r14 + 8*xmm31 + 123] {k1}, xmm22 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa1,0xb4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterqd qword ptr [r14 + 8*xmm31 + 123] {k1}, xmm22 + +// CHECK: vpscatterqd qword ptr [r14 + 8*xmm31 + 123] {k1}, xmm22 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa1,0xb4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterqd qword ptr [r14 + 8*xmm31 + 123] {k1}, xmm22 + +// CHECK: vpscatterqd qword ptr [r9 + xmm31 + 256] {k1}, xmm22 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa1,0x74,0x39,0x40] + vpscatterqd qword ptr [r9 + xmm31 + 256] {k1}, xmm22 + +// CHECK: vpscatterqd qword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm22 +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0xa1,0xb4,0xb9,0x00,0x04,0x00,0x00] + vpscatterqd qword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm22 + +// CHECK: vpscatterqd xmmword ptr [r14 + 8*ymm31 + 123] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa1,0x84,0xfe,0x7b,0x00,0x00,0x00] + vpscatterqd xmmword ptr [r14 + 8*ymm31 + 123] {k1}, xmm24 + +// CHECK: vpscatterqd xmmword ptr [r14 + 8*ymm31 + 123] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa1,0x84,0xfe,0x7b,0x00,0x00,0x00] + vpscatterqd xmmword ptr [r14 + 8*ymm31 + 123] {k1}, xmm24 + +// CHECK: vpscatterqd xmmword ptr [r9 + ymm31 + 256] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa1,0x44,0x39,0x40] + vpscatterqd xmmword ptr [r9 + ymm31 + 256] {k1}, xmm24 + +// CHECK: vpscatterqd xmmword ptr [rcx + 4*ymm31 + 1024] {k1}, xmm24 +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0xa1,0x84,0xb9,0x00,0x04,0x00,0x00] + vpscatterqd xmmword ptr [rcx + 4*ymm31 + 1024] {k1}, xmm24 + +// CHECK: vpscatterqd qword ptr [r14 + 8*xmm31 - 123] {k1}, xmm22 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa1,0xb4,0xfe,0x85,0xff,0xff,0xff] + vpscatterqd qword ptr [r14 + 8*xmm31 - 123] {k1}, xmm22 + +// CHECK: vpscatterqd qword ptr [r14 + 8*xmm31 - 123] {k1}, xmm22 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa1,0xb4,0xfe,0x85,0xff,0xff,0xff] + vpscatterqd qword ptr [r14 + 8*xmm31 - 123] {k1}, xmm22 + +// CHECK: vpscatterqd qword ptr [r9 + xmm31 + 256] {k1}, xmm22 +// CHECK: encoding: [0x62,0x82,0x7d,0x01,0xa1,0x74,0x39,0x40] + vpscatterqd qword ptr [r9 + xmm31 + 256] {k1}, xmm22 + +// CHECK: vpscatterqd qword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm22 +// CHECK: encoding: [0x62,0xa2,0x7d,0x01,0xa1,0xb4,0xb9,0x00,0x04,0x00,0x00] + vpscatterqd qword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm22 + +// CHECK: vpscatterqd xmmword ptr [r14 + 8*ymm31 - 123] {k1}, xmm29 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa1,0xac,0xfe,0x85,0xff,0xff,0xff] + vpscatterqd xmmword ptr [r14 + 8*ymm31 - 123] {k1}, xmm29 + +// CHECK: vpscatterqd xmmword ptr [r14 + 8*ymm31 - 123] {k1}, xmm29 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa1,0xac,0xfe,0x85,0xff,0xff,0xff] + vpscatterqd xmmword ptr [r14 + 8*ymm31 - 123] {k1}, xmm29 + +// CHECK: vpscatterqd xmmword ptr [r9 + ymm31 + 256] {k1}, xmm29 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa1,0x6c,0x39,0x40] + vpscatterqd xmmword ptr [r9 + ymm31 + 256] {k1}, xmm29 + +// CHECK: vpscatterqd xmmword ptr [rcx + 4*ymm31 + 1024] {k1}, xmm29 +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0xa1,0xac,0xb9,0x00,0x04,0x00,0x00] + vpscatterqd xmmword ptr [rcx + 4*ymm31 + 1024] {k1}, xmm29 + +// CHECK: vpscatterqq xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa1,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterqq xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm28 + +// CHECK: vpscatterqq xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa1,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vpscatterqq xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm28 + +// CHECK: vpscatterqq xmmword ptr [r9 + xmm31 + 256] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa1,0x64,0x39,0x20] + vpscatterqq xmmword ptr [r9 + xmm31 + 256] {k1}, xmm28 + +// CHECK: vpscatterqq xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm28 +// CHECK: encoding: [0x62,0x22,0xfd,0x01,0xa1,0xa4,0xb9,0x00,0x04,0x00,0x00] + vpscatterqq xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm28 + +// CHECK: vpscatterqq ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa1,0x9c,0xfe,0x7b,0x00,0x00,0x00] + vpscatterqq ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm19 + +// CHECK: vpscatterqq ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa1,0x9c,0xfe,0x7b,0x00,0x00,0x00] + vpscatterqq ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm19 + +// CHECK: vpscatterqq ymmword ptr [r9 + ymm31 + 256] {k1}, ymm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa1,0x5c,0x39,0x20] + vpscatterqq ymmword ptr [r9 + ymm31 + 256] {k1}, ymm19 + +// CHECK: vpscatterqq ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm19 +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0xa1,0x9c,0xb9,0x00,0x04,0x00,0x00] + vpscatterqq ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm19 + +// CHECK: vpscatterqq xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa1,0x84,0xfe,0x85,0xff,0xff,0xff] + vpscatterqq xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm24 + +// CHECK: vpscatterqq xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa1,0x84,0xfe,0x85,0xff,0xff,0xff] + vpscatterqq xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm24 + +// CHECK: vpscatterqq xmmword ptr [r9 + xmm31 + 256] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0xfd,0x01,0xa1,0x44,0x39,0x20] + vpscatterqq xmmword ptr [r9 + xmm31 + 256] {k1}, xmm24 + +// CHECK: vpscatterqq xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm24 +// CHECK: encoding: [0x62,0x22,0xfd,0x01,0xa1,0x84,0xb9,0x00,0x04,0x00,0x00] + vpscatterqq xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm24 + +// CHECK: vpscatterqq ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm17 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa1,0x8c,0xfe,0x85,0xff,0xff,0xff] + vpscatterqq ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm17 + +// CHECK: vpscatterqq ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm17 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa1,0x8c,0xfe,0x85,0xff,0xff,0xff] + vpscatterqq ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm17 + +// CHECK: vpscatterqq ymmword ptr [r9 + ymm31 + 256] {k1}, ymm17 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa1,0x4c,0x39,0x20] + vpscatterqq ymmword ptr [r9 + ymm31 + 256] {k1}, ymm17 + +// CHECK: vpscatterqq ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm17 +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0xa1,0x8c,0xb9,0x00,0x04,0x00,0x00] + vpscatterqq ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm17 + +// CHECK: vscatterdpd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa2,0x94,0xfe,0x7b,0x00,0x00,0x00] + vscatterdpd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm18 + +// CHECK: vscatterdpd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa2,0x94,0xfe,0x7b,0x00,0x00,0x00] + vscatterdpd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm18 + +// CHECK: vscatterdpd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm18 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa2,0x54,0x39,0x20] + vscatterdpd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm18 + +// CHECK: vscatterdpd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm18 +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0xa2,0x94,0xb9,0x00,0x04,0x00,0x00] + vscatterdpd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm18 + +// CHECK: vscatterdpd ymmword ptr [r14 + 8*xmm31 + 123] {k1}, ymm30 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa2,0xb4,0xfe,0x7b,0x00,0x00,0x00] + vscatterdpd ymmword ptr [r14 + 8*xmm31 + 123] {k1}, ymm30 + +// CHECK: vscatterdpd ymmword ptr [r14 + 8*xmm31 + 123] {k1}, ymm30 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa2,0xb4,0xfe,0x7b,0x00,0x00,0x00] + vscatterdpd ymmword ptr [r14 + 8*xmm31 + 123] {k1}, ymm30 + +// CHECK: vscatterdpd ymmword ptr [r9 + xmm31 + 256] {k1}, ymm30 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa2,0x74,0x39,0x20] + vscatterdpd ymmword ptr [r9 + xmm31 + 256] {k1}, ymm30 + +// CHECK: vscatterdpd ymmword ptr [rcx + 4*xmm31 + 1024] {k1}, ymm30 +// CHECK: encoding: [0x62,0x22,0xfd,0x21,0xa2,0xb4,0xb9,0x00,0x04,0x00,0x00] + vscatterdpd ymmword ptr [rcx + 4*xmm31 + 1024] {k1}, ymm30 + +// CHECK: vscatterdpd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa2,0x9c,0xfe,0x85,0xff,0xff,0xff] + vscatterdpd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm19 + +// CHECK: vscatterdpd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa2,0x9c,0xfe,0x85,0xff,0xff,0xff] + vscatterdpd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm19 + +// CHECK: vscatterdpd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa2,0x5c,0x39,0x20] + vscatterdpd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm19 + +// CHECK: vscatterdpd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm19 +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0xa2,0x9c,0xb9,0x00,0x04,0x00,0x00] + vscatterdpd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm19 + +// CHECK: vscatterdpd ymmword ptr [r14 + 8*xmm31 - 123] {k1}, ymm26 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa2,0x94,0xfe,0x85,0xff,0xff,0xff] + vscatterdpd ymmword ptr [r14 + 8*xmm31 - 123] {k1}, ymm26 + +// CHECK: vscatterdpd ymmword ptr [r14 + 8*xmm31 - 123] {k1}, ymm26 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa2,0x94,0xfe,0x85,0xff,0xff,0xff] + vscatterdpd ymmword ptr [r14 + 8*xmm31 - 123] {k1}, ymm26 + +// CHECK: vscatterdpd ymmword ptr [r9 + xmm31 + 256] {k1}, ymm26 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa2,0x54,0x39,0x20] + vscatterdpd ymmword ptr [r9 + xmm31 + 256] {k1}, ymm26 + +// CHECK: vscatterdpd ymmword ptr [rcx + 4*xmm31 + 1024] {k1}, ymm26 +// CHECK: encoding: [0x62,0x22,0xfd,0x21,0xa2,0x94,0xb9,0x00,0x04,0x00,0x00] + vscatterdpd ymmword ptr [rcx + 4*xmm31 + 1024] {k1}, ymm26 + +// CHECK: vscatterdps xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa2,0x84,0xfe,0x7b,0x00,0x00,0x00] + vscatterdps xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm24 + +// CHECK: vscatterdps xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa2,0x84,0xfe,0x7b,0x00,0x00,0x00] + vscatterdps xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm24 + +// CHECK: vscatterdps xmmword ptr [r9 + xmm31 + 256] {k1}, xmm24 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa2,0x44,0x39,0x40] + vscatterdps xmmword ptr [r9 + xmm31 + 256] {k1}, xmm24 + +// CHECK: vscatterdps xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm24 +// CHECK: encoding: [0x62,0x22,0x7d,0x01,0xa2,0x84,0xb9,0x00,0x04,0x00,0x00] + vscatterdps xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm24 + +// CHECK: vscatterdps ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm23 +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0xa2,0xbc,0xfe,0x7b,0x00,0x00,0x00] + vscatterdps ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm23 + +// CHECK: vscatterdps ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm23 +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0xa2,0xbc,0xfe,0x7b,0x00,0x00,0x00] + vscatterdps ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm23 + +// CHECK: vscatterdps ymmword ptr [r9 + ymm31 + 256] {k1}, ymm23 +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0xa2,0x7c,0x39,0x40] + vscatterdps ymmword ptr [r9 + ymm31 + 256] {k1}, ymm23 + +// CHECK: vscatterdps ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm23 +// CHECK: encoding: [0x62,0xa2,0x7d,0x21,0xa2,0xbc,0xb9,0x00,0x04,0x00,0x00] + vscatterdps ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm23 + +// CHECK: vscatterdps xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa2,0xa4,0xfe,0x85,0xff,0xff,0xff] + vscatterdps xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm28 + +// CHECK: vscatterdps xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa2,0xa4,0xfe,0x85,0xff,0xff,0xff] + vscatterdps xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm28 + +// CHECK: vscatterdps xmmword ptr [r9 + xmm31 + 256] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa2,0x64,0x39,0x40] + vscatterdps xmmword ptr [r9 + xmm31 + 256] {k1}, xmm28 + +// CHECK: vscatterdps xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm28 +// CHECK: encoding: [0x62,0x22,0x7d,0x01,0xa2,0xa4,0xb9,0x00,0x04,0x00,0x00] + vscatterdps xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm28 + +// CHECK: vscatterdps ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa2,0x8c,0xfe,0x85,0xff,0xff,0xff] + vscatterdps ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm25 + +// CHECK: vscatterdps ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa2,0x8c,0xfe,0x85,0xff,0xff,0xff] + vscatterdps ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm25 + +// CHECK: vscatterdps ymmword ptr [r9 + ymm31 + 256] {k1}, ymm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa2,0x4c,0x39,0x40] + vscatterdps ymmword ptr [r9 + ymm31 + 256] {k1}, ymm25 + +// CHECK: vscatterdps ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm25 +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0xa2,0x8c,0xb9,0x00,0x04,0x00,0x00] + vscatterdps ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm25 + +// CHECK: vscatterqpd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm21 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa3,0xac,0xfe,0x7b,0x00,0x00,0x00] + vscatterqpd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm21 + +// CHECK: vscatterqpd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm21 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa3,0xac,0xfe,0x7b,0x00,0x00,0x00] + vscatterqpd xmmword ptr [r14 + 8*xmm31 + 123] {k1}, xmm21 + +// CHECK: vscatterqpd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm21 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa3,0x6c,0x39,0x20] + vscatterqpd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm21 + +// CHECK: vscatterqpd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm21 +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0xa3,0xac,0xb9,0x00,0x04,0x00,0x00] + vscatterqpd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm21 + +// CHECK: vscatterqpd ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm23 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa3,0xbc,0xfe,0x7b,0x00,0x00,0x00] + vscatterqpd ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm23 + +// CHECK: vscatterqpd ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm23 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa3,0xbc,0xfe,0x7b,0x00,0x00,0x00] + vscatterqpd ymmword ptr [r14 + 8*ymm31 + 123] {k1}, ymm23 + +// CHECK: vscatterqpd ymmword ptr [r9 + ymm31 + 256] {k1}, ymm23 +// CHECK: encoding: [0x62,0x82,0xfd,0x21,0xa3,0x7c,0x39,0x20] + vscatterqpd ymmword ptr [r9 + ymm31 + 256] {k1}, ymm23 + +// CHECK: vscatterqpd ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm23 +// CHECK: encoding: [0x62,0xa2,0xfd,0x21,0xa3,0xbc,0xb9,0x00,0x04,0x00,0x00] + vscatterqpd ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm23 + +// CHECK: vscatterqpd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa3,0x9c,0xfe,0x85,0xff,0xff,0xff] + vscatterqpd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm19 + +// CHECK: vscatterqpd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa3,0x9c,0xfe,0x85,0xff,0xff,0xff] + vscatterqpd xmmword ptr [r14 + 8*xmm31 - 123] {k1}, xmm19 + +// CHECK: vscatterqpd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm19 +// CHECK: encoding: [0x62,0x82,0xfd,0x01,0xa3,0x5c,0x39,0x20] + vscatterqpd xmmword ptr [r9 + xmm31 + 256] {k1}, xmm19 + +// CHECK: vscatterqpd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm19 +// CHECK: encoding: [0x62,0xa2,0xfd,0x01,0xa3,0x9c,0xb9,0x00,0x04,0x00,0x00] + vscatterqpd xmmword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm19 + +// CHECK: vscatterqpd ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm29 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa3,0xac,0xfe,0x85,0xff,0xff,0xff] + vscatterqpd ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm29 + +// CHECK: vscatterqpd ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm29 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa3,0xac,0xfe,0x85,0xff,0xff,0xff] + vscatterqpd ymmword ptr [r14 + 8*ymm31 - 123] {k1}, ymm29 + +// CHECK: vscatterqpd ymmword ptr [r9 + ymm31 + 256] {k1}, ymm29 +// CHECK: encoding: [0x62,0x02,0xfd,0x21,0xa3,0x6c,0x39,0x20] + vscatterqpd ymmword ptr [r9 + ymm31 + 256] {k1}, ymm29 + +// CHECK: vscatterqpd ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm29 +// CHECK: encoding: [0x62,0x22,0xfd,0x21,0xa3,0xac,0xb9,0x00,0x04,0x00,0x00] + vscatterqpd ymmword ptr [rcx + 4*ymm31 + 1024] {k1}, ymm29 + +// CHECK: vscatterqps qword ptr [r14 + 8*xmm31 + 123] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa3,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vscatterqps qword ptr [r14 + 8*xmm31 + 123] {k1}, xmm28 + +// CHECK: vscatterqps qword ptr [r14 + 8*xmm31 + 123] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa3,0xa4,0xfe,0x7b,0x00,0x00,0x00] + vscatterqps qword ptr [r14 + 8*xmm31 + 123] {k1}, xmm28 + +// CHECK: vscatterqps qword ptr [r9 + xmm31 + 256] {k1}, xmm28 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa3,0x64,0x39,0x40] + vscatterqps qword ptr [r9 + xmm31 + 256] {k1}, xmm28 + +// CHECK: vscatterqps qword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm28 +// CHECK: encoding: [0x62,0x22,0x7d,0x01,0xa3,0xa4,0xb9,0x00,0x04,0x00,0x00] + vscatterqps qword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm28 + +// CHECK: vscatterqps xmmword ptr [r14 + 8*ymm31 + 123] {k1}, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa3,0x8c,0xfe,0x7b,0x00,0x00,0x00] + vscatterqps xmmword ptr [r14 + 8*ymm31 + 123] {k1}, xmm25 + +// CHECK: vscatterqps xmmword ptr [r14 + 8*ymm31 + 123] {k1}, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa3,0x8c,0xfe,0x7b,0x00,0x00,0x00] + vscatterqps xmmword ptr [r14 + 8*ymm31 + 123] {k1}, xmm25 + +// CHECK: vscatterqps xmmword ptr [r9 + ymm31 + 256] {k1}, xmm25 +// CHECK: encoding: [0x62,0x02,0x7d,0x21,0xa3,0x4c,0x39,0x40] + vscatterqps xmmword ptr [r9 + ymm31 + 256] {k1}, xmm25 + +// CHECK: vscatterqps xmmword ptr [rcx + 4*ymm31 + 1024] {k1}, xmm25 +// CHECK: encoding: [0x62,0x22,0x7d,0x21,0xa3,0x8c,0xb9,0x00,0x04,0x00,0x00] + vscatterqps xmmword ptr [rcx + 4*ymm31 + 1024] {k1}, xmm25 + +// CHECK: vscatterqps qword ptr [r14 + 8*xmm31 - 123] {k1}, xmm27 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa3,0x9c,0xfe,0x85,0xff,0xff,0xff] + vscatterqps qword ptr [r14 + 8*xmm31 - 123] {k1}, xmm27 + +// CHECK: vscatterqps qword ptr [r14 + 8*xmm31 - 123] {k1}, xmm27 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa3,0x9c,0xfe,0x85,0xff,0xff,0xff] + vscatterqps qword ptr [r14 + 8*xmm31 - 123] {k1}, xmm27 + +// CHECK: vscatterqps qword ptr [r9 + xmm31 + 256] {k1}, xmm27 +// CHECK: encoding: [0x62,0x02,0x7d,0x01,0xa3,0x5c,0x39,0x40] + vscatterqps qword ptr [r9 + xmm31 + 256] {k1}, xmm27 + +// CHECK: vscatterqps qword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm27 +// CHECK: encoding: [0x62,0x22,0x7d,0x01,0xa3,0x9c,0xb9,0x00,0x04,0x00,0x00] + vscatterqps qword ptr [rcx + 4*xmm31 + 1024] {k1}, xmm27 + +// CHECK: vscatterqps xmmword ptr [r14 + 8*ymm31 - 123] {k1}, xmm23 +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0xa3,0xbc,0xfe,0x85,0xff,0xff,0xff] + vscatterqps xmmword ptr [r14 + 8*ymm31 - 123] {k1}, xmm23 + +// CHECK: vscatterqps xmmword ptr [r14 + 8*ymm31 - 123] {k1}, xmm23 +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0xa3,0xbc,0xfe,0x85,0xff,0xff,0xff] + vscatterqps xmmword ptr [r14 + 8*ymm31 - 123] {k1}, xmm23 + +// CHECK: vscatterqps xmmword ptr [r9 + ymm31 + 256] {k1}, xmm23 +// CHECK: encoding: [0x62,0x82,0x7d,0x21,0xa3,0x7c,0x39,0x40] + vscatterqps xmmword ptr [r9 + ymm31 + 256] {k1}, xmm23 + +// CHECK: vscatterqps xmmword ptr [rcx + 4*ymm31 + 1024] {k1}, xmm23 +// CHECK: encoding: [0x62,0xa2,0x7d,0x21,0xa3,0xbc,0xb9,0x00,0x04,0x00,0x00] + vscatterqps xmmword ptr [rcx + 4*ymm31 + 1024] {k1}, xmm23 + diff --git a/test/MC/X86/intel-syntax.s b/test/MC/X86/intel-syntax.s index c7ec77eadfee..795893673f81 100644 --- a/test/MC/X86/intel-syntax.s +++ b/test/MC/X86/intel-syntax.s @@ -1,4 +1,6 @@ -// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s | FileCheck %s +// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s > %t 2> %t.err +// RUN: FileCheck < %t %s +// RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s _test: xor EAX, EAX @@ -72,8 +74,8 @@ _main: // CHECK: vshufpd $1, %xmm2, %xmm1, %xmm0 vshufpd XMM0, XMM1, XMM2, 1 // CHECK: vpgatherdd %xmm8, (%r15,%xmm9,2), %xmm1 - vpgatherdd XMM10, DWORD PTR [R15 + 2*XMM9], XMM8 -// CHECK: movsd -8, %xmm5 + vpgatherdd XMM10, XMMWORD PTR [R15 + 2*XMM9], XMM8 +// CHECK: movsd -8, %xmm5 movsd XMM5, QWORD PTR [-8] // CHECK: movl %ecx, (%eax) mov [eax], ecx @@ -751,3 +753,44 @@ loopnz _foo sidt fword ptr [eax] // CHECK: sidtq (%eax) + +ins byte ptr [eax], dx +// CHECK: insb %dx, %es:(%edi) +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: ins byte ptr [eax], dx +outs dx, word ptr [eax] +// CHECK: outsw (%esi), %dx +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location +// CHECK-STDERR-NEXT: outs dx, word ptr [eax] +lods dword ptr [eax] +// CHECK: lodsl (%esi), %eax +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location +// CHECK-STDERR-NEXT: lods dword ptr [eax] +stos qword ptr [eax] +// CHECK: stosq %rax, %es:(%edi) +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: stos qword ptr [eax] +scas byte ptr [eax] +// CHECK: scasb %es:(%edi), %al +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: scas byte ptr [eax] +cmps word ptr [eax], word ptr [ebx] +// CHECK: cmpsw %es:(%edi), (%esi) +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location +// CHECK-STDERR-NEXT: cmps word ptr [eax], word ptr [ebx] +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: cmps word ptr [eax], word ptr [ebx] +movs dword ptr [eax], dword ptr [ebx] +// CHECK: movsl (%esi), %es:(%edi) +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location +// CHECK-STDERR-NEXT: movs dword ptr [eax], dword ptr [ebx] +// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location +// CHECK-STDERR-NEXT: movs dword ptr [eax], dword ptr [ebx] + +movsd qword ptr [rax], xmm0 +// CHECK: movsd %xmm0, (%rax) +// CHECK-STDERR-NOT: movsd qword ptr [rax], xmm0 + +xlat byte ptr [eax] +// CHECK: xlatb +// CHECK-STDERR: memory operand is only for determining the size, (R|E)BX will be used for the location diff --git a/test/MC/X86/invalid_opcode.s b/test/MC/X86/invalid_opcode.s new file mode 100644 index 000000000000..42e3affbfc6d --- /dev/null +++ b/test/MC/X86/invalid_opcode.s @@ -0,0 +1,4 @@ +# RUN: llvm-mc -triple=x86_64 -filetype=obj %s -o - | llvm-objdump -d - | FileCheck %s + +# CHECK: 0: ff ff <unknown> +.word 0xffff diff --git a/test/MC/X86/mpx-encodings.s b/test/MC/X86/mpx-encodings.s index 6fe4e0f328ec..7688879e8aa4 100644 --- a/test/MC/X86/mpx-encodings.s +++ b/test/MC/X86/mpx-encodings.s @@ -1,38 +1,41 @@ -// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=knl --show-encoding %s | FileCheck %s +// RUN: llvm-mc -triple x86_64-- -mattr=+mpx --show-encoding %s |\ +// RUN: FileCheck %s --check-prefixes=CHECK,ENCODING + +// RUN: llvm-mc -triple x86_64-- -mattr=+mpx -filetype=obj %s |\ +// RUN: llvm-objdump -d - -mattr=+mpx | FileCheck %s // CHECK: bndmk (%rax), %bnd0 -// CHECK: encoding: [0xf3,0x48,0x0f,0x1b,0x00] +// ENCODING: encoding: [0xf3,0x48,0x0f,0x1b,0x00] bndmk (%rax), %bnd0 // CHECK: bndmk 1024(%rax), %bnd1 -// CHECK: encoding: [0xf3,0x48,0x0f,0x1b,0x88,0x00,0x04,0x00,0x00] +// ENCODING: encoding: [0xf3,0x48,0x0f,0x1b,0x88,0x00,0x04,0x00,0x00] bndmk 1024(%rax), %bnd1 // CHECK: bndmov %bnd2, %bnd1 -// CHECK: encoding: [0x66,0x0f,0x1b,0xd1] +// ENCODING: encoding: [0x66,0x0f,0x1b,0xd1] bndmov %bnd2, %bnd1 // CHECK: bndmov %bnd1, 1024(%r9) -// CHECK: encoding: [0x66,0x49,0x0f,0x1b,0x89,0x00,0x04,0x00,0x00] +// ENCODING: encoding: [0x66,0x49,0x0f,0x1b,0x89,0x00,0x04,0x00,0x00] bndmov %bnd1, 1024(%r9) // CHECK: bndstx %bnd1, 1024(%rax) -// CHECK: encoding: [0x0f,0x1b,0x88,0x00,0x04,0x00,0x00] +// ENCODING: encoding: [0x0f,0x1b,0x88,0x00,0x04,0x00,0x00] bndstx %bnd1, 1024(%rax) // CHECK: bndldx 1024(%r8), %bnd1 -// CHECK: encoding: [0x41,0x0f,0x1a,0x88,0x00,0x04,0x00,0x00] +// ENCODING: encoding: [0x41,0x0f,0x1a,0x88,0x00,0x04,0x00,0x00] bndldx 1024(%r8), %bnd1 // CHECK: bndcl 121(%r10), %bnd1 -// CHECK: encoding: [0xf3,0x49,0x0f,0x1a,0x4a,0x79] +// ENCODING: encoding: [0xf3,0x49,0x0f,0x1a,0x4a,0x79] bndcl 121(%r10), %bnd1 // CHECK: bndcn 121(%rcx), %bnd3 -// CHECK: encoding: [0xf2,0x48,0x0f,0x1b,0x59,0x79] +// ENCODING: encoding: [0xf2,0x48,0x0f,0x1b,0x59,0x79] bndcn 121(%rcx), %bnd3 // CHECK: bndcu %rdx, %bnd3 -// CHECK: encoding: [0xf2,0x48,0x0f,0x1a,0xda] +// ENCODING: encoding: [0xf2,0x48,0x0f,0x1a,0xda] bndcu %rdx, %bnd3 - diff --git a/test/MC/X86/pr28547.s b/test/MC/X86/pr28547.s new file mode 100644 index 000000000000..cb90c5a60c1c --- /dev/null +++ b/test/MC/X86/pr28547.s @@ -0,0 +1,5 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown %s + .intel_syntax +ones: + .float +1.0, +1.0, +1.0, +1.0 + vmovaps xmm15, xmmword ptr [rip+ones] # +1.0, +1.0, +1.0, +1.0 diff --git a/test/MC/X86/reloc-directive.s b/test/MC/X86/reloc-directive.s new file mode 100644 index 000000000000..901427a6ab6c --- /dev/null +++ b/test/MC/X86/reloc-directive.s @@ -0,0 +1,40 @@ +# RUN: llvm-mc -triple i686-pc-win32 < %s -show-encoding \ +# RUN: | FileCheck -check-prefix=ASM %s +# RUN: llvm-mc -triple i686-pc-win32 < %s -show-encoding \ +# RUN: -filetype=obj | llvm-readobj -sections -section-data -r | \ +# RUN: FileCheck -check-prefix=OBJ-32 %s +# RUN: llvm-mc -triple x86_64-pc-win32 < %s -show-encoding \ +# RUN: -filetype=obj | llvm-readobj -sections -section-data -r | \ +# RUN: FileCheck -check-prefix=OBJ-64 %s + .text +foo: + .long 0 + .long 0 + .long 0 + .long 0 + .long 0 + .reloc 4, dir32, foo # ASM: .reloc 4, dir32, foo + .reloc 0, secrel32, foo+4 # ASM: .reloc 0, secrel32, foo+4 + .reloc 8, secidx, foo+8 # ASM: .reloc 8, secidx, foo+8 + .reloc 12, dir32, foo@secrel32 # ASM: .reloc 12, dir32, foo@SECREL32 + .reloc 16, dir32, foo@imgrel # ASM: .reloc 16, dir32, foo@IMGREL + +# OBJ-32-LABEL: Name: .text +# OBJ-32: 0000: 04000000 00000000 00000000 +# OBJ-32-LABEL: } +# OBJ-32-LABEL: Relocations [ +# OBJ-32: 0x4 IMAGE_REL_I386_DIR32 foo +# OBJ-32: 0x0 IMAGE_REL_I386_SECREL foo +# OBJ-32: 0x8 IMAGE_REL_I386_SECTION foo +# OBJ-32: 0xC IMAGE_REL_I386_SECREL foo +# OBJ-32: 0x10 IMAGE_REL_I386_DIR32NB foo + +# OBJ-64-LABEL: Name: .text +# OBJ-64: 0000: 04000000 00000000 00000000 +# OBJ-64-LABEL: } +# OBJ-64-LABEL: Relocations [ +# OBJ-64: 0x4 IMAGE_REL_AMD64_ADDR32 foo +# OBJ-64: 0x0 IMAGE_REL_AMD64_SECREL foo +# OBJ-64: 0x8 IMAGE_REL_AMD64_SECTION foo +# OBJ-64: 0xC IMAGE_REL_AMD64_SECREL foo +# OBJ-64: 0x10 IMAGE_REL_AMD64_ADDR32NB foo diff --git a/test/MC/X86/x86-32.s b/test/MC/X86/x86-32.s index 56fd658a76ee..127d6c7c77c6 100644 --- a/test/MC/X86/x86-32.s +++ b/test/MC/X86/x86-32.s @@ -593,6 +593,55 @@ popfl setnaeb %bl // CHECK: setb %bl +// PR8114 + +out %al, (%dx) +// CHECK: outb %al, %dx +outb %al, (%dx) +// CHECK: outb %al, %dx +out %ax, (%dx) +// CHECK: outw %ax, %dx +outw %ax, (%dx) +// CHECK: outw %ax, %dx +out %eax, (%dx) +// CHECK: outl %eax, %dx +outl %eax, (%dx) +// CHECK: outl %eax, %dx + + +in (%dx), %al +// CHECK: inb %dx, %al +inb (%dx), %al +// CHECK: inb %dx, %al +in (%dx), %ax +// CHECK: inw %dx, %ax +inw (%dx), %ax +// CHECK: inw %dx, %ax +in (%dx), %eax +// CHECK: inl %dx, %eax +inl (%dx), %eax +// CHECK: inl %dx, %eax + +//PR15455 + +outs (%esi), (%dx) +// CHECK: outsw (%esi), %dx +outsb (%esi), (%dx) +// CHECK: outsb (%esi), %dx +outsw (%esi), (%dx) +// CHECK: outsw (%esi), %dx +outsl (%esi), (%dx) +// CHECK: outsl (%esi), %dx + +ins (%dx), %es:(%edi) +// CHECK: insw %dx, %es:(%edi) +insb (%dx), %es:(%edi) +// CHECK: insb %dx, %es:(%edi) +insw (%dx), %es:(%edi) +// CHECK: insw %dx, %es:(%edi) +insl (%dx), %es:(%edi) +// CHECK: insl %dx, %es:(%edi) + // CHECK: lcalll $31438, $31438 // CHECK: lcalll $31438, $31438 // CHECK: ljmpl $31438, $31438 diff --git a/test/MC/X86/x86-64-avx512bw.s b/test/MC/X86/x86-64-avx512bw.s index b5ba2af64f0b..e1f42161103f 100644 --- a/test/MC/X86/x86-64-avx512bw.s +++ b/test/MC/X86/x86-64-avx512bw.s @@ -2081,147 +2081,147 @@ vpsravw -8256(%rdx), %zmm29, %zmm19 // CHECK: vpacksswb %zmm18, %zmm29, %zmm21 -// CHECK: encoding: [0x62,0xa1,0x95,0x40,0x63,0xea] +// CHECK: encoding: [0x62,0xa1,0x15,0x40,0x63,0xea] vpacksswb %zmm18, %zmm29, %zmm21 // CHECK: vpacksswb %zmm18, %zmm29, %zmm21 {%k1} -// CHECK: encoding: [0x62,0xa1,0x95,0x41,0x63,0xea] +// CHECK: encoding: [0x62,0xa1,0x15,0x41,0x63,0xea] vpacksswb %zmm18, %zmm29, %zmm21 {%k1} // CHECK: vpacksswb %zmm18, %zmm29, %zmm21 {%k1} {z} -// CHECK: encoding: [0x62,0xa1,0x95,0xc1,0x63,0xea] +// CHECK: encoding: [0x62,0xa1,0x15,0xc1,0x63,0xea] vpacksswb %zmm18, %zmm29, %zmm21 {%k1} {z} // CHECK: vpacksswb (%rcx), %zmm29, %zmm21 -// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x63,0x29] +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0x63,0x29] vpacksswb (%rcx), %zmm29, %zmm21 // CHECK: vpacksswb 291(%rax,%r14,8), %zmm29, %zmm21 -// CHECK: encoding: [0x62,0xa1,0x95,0x40,0x63,0xac,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x15,0x40,0x63,0xac,0xf0,0x23,0x01,0x00,0x00] vpacksswb 291(%rax,%r14,8), %zmm29, %zmm21 // CHECK: vpacksswb 8128(%rdx), %zmm29, %zmm21 -// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x63,0x6a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0x63,0x6a,0x7f] vpacksswb 8128(%rdx), %zmm29, %zmm21 // CHECK: vpacksswb 8192(%rdx), %zmm29, %zmm21 -// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x63,0xaa,0x00,0x20,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0x63,0xaa,0x00,0x20,0x00,0x00] vpacksswb 8192(%rdx), %zmm29, %zmm21 // CHECK: vpacksswb -8192(%rdx), %zmm29, %zmm21 -// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x63,0x6a,0x80] +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0x63,0x6a,0x80] vpacksswb -8192(%rdx), %zmm29, %zmm21 // CHECK: vpacksswb -8256(%rdx), %zmm29, %zmm21 -// CHECK: encoding: [0x62,0xe1,0x95,0x40,0x63,0xaa,0xc0,0xdf,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0x63,0xaa,0xc0,0xdf,0xff,0xff] vpacksswb -8256(%rdx), %zmm29, %zmm21 // CHECK: vpackuswb %zmm28, %zmm24, %zmm28 -// CHECK: encoding: [0x62,0x01,0xbd,0x40,0x67,0xe4] +// CHECK: encoding: [0x62,0x01,0x3d,0x40,0x67,0xe4] vpackuswb %zmm28, %zmm24, %zmm28 // CHECK: vpackuswb %zmm28, %zmm24, %zmm28 {%k6} -// CHECK: encoding: [0x62,0x01,0xbd,0x46,0x67,0xe4] +// CHECK: encoding: [0x62,0x01,0x3d,0x46,0x67,0xe4] vpackuswb %zmm28, %zmm24, %zmm28 {%k6} // CHECK: vpackuswb %zmm28, %zmm24, %zmm28 {%k6} {z} -// CHECK: encoding: [0x62,0x01,0xbd,0xc6,0x67,0xe4] +// CHECK: encoding: [0x62,0x01,0x3d,0xc6,0x67,0xe4] vpackuswb %zmm28, %zmm24, %zmm28 {%k6} {z} // CHECK: vpackuswb (%rcx), %zmm24, %zmm28 -// CHECK: encoding: [0x62,0x61,0xbd,0x40,0x67,0x21] +// CHECK: encoding: [0x62,0x61,0x3d,0x40,0x67,0x21] vpackuswb (%rcx), %zmm24, %zmm28 // CHECK: vpackuswb 291(%rax,%r14,8), %zmm24, %zmm28 -// CHECK: encoding: [0x62,0x21,0xbd,0x40,0x67,0xa4,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0x21,0x3d,0x40,0x67,0xa4,0xf0,0x23,0x01,0x00,0x00] vpackuswb 291(%rax,%r14,8), %zmm24, %zmm28 // CHECK: vpackuswb 8128(%rdx), %zmm24, %zmm28 -// CHECK: encoding: [0x62,0x61,0xbd,0x40,0x67,0x62,0x7f] +// CHECK: encoding: [0x62,0x61,0x3d,0x40,0x67,0x62,0x7f] vpackuswb 8128(%rdx), %zmm24, %zmm28 // CHECK: vpackuswb 8192(%rdx), %zmm24, %zmm28 -// CHECK: encoding: [0x62,0x61,0xbd,0x40,0x67,0xa2,0x00,0x20,0x00,0x00] +// CHECK: encoding: [0x62,0x61,0x3d,0x40,0x67,0xa2,0x00,0x20,0x00,0x00] vpackuswb 8192(%rdx), %zmm24, %zmm28 // CHECK: vpackuswb -8192(%rdx), %zmm24, %zmm28 -// CHECK: encoding: [0x62,0x61,0xbd,0x40,0x67,0x62,0x80] +// CHECK: encoding: [0x62,0x61,0x3d,0x40,0x67,0x62,0x80] vpackuswb -8192(%rdx), %zmm24, %zmm28 // CHECK: vpackuswb -8256(%rdx), %zmm24, %zmm28 -// CHECK: encoding: [0x62,0x61,0xbd,0x40,0x67,0xa2,0xc0,0xdf,0xff,0xff] +// CHECK: encoding: [0x62,0x61,0x3d,0x40,0x67,0xa2,0xc0,0xdf,0xff,0xff] vpackuswb -8256(%rdx), %zmm24, %zmm28 // CHECK: vpacksswb %zmm24, %zmm29, %zmm26 -// CHECK: encoding: [0x62,0x01,0x95,0x40,0x63,0xd0] +// CHECK: encoding: [0x62,0x01,0x15,0x40,0x63,0xd0] vpacksswb %zmm24, %zmm29, %zmm26 // CHECK: vpacksswb %zmm24, %zmm29, %zmm26 {%k6} -// CHECK: encoding: [0x62,0x01,0x95,0x46,0x63,0xd0] +// CHECK: encoding: [0x62,0x01,0x15,0x46,0x63,0xd0] vpacksswb %zmm24, %zmm29, %zmm26 {%k6} // CHECK: vpacksswb %zmm24, %zmm29, %zmm26 {%k6} {z} -// CHECK: encoding: [0x62,0x01,0x95,0xc6,0x63,0xd0] +// CHECK: encoding: [0x62,0x01,0x15,0xc6,0x63,0xd0] vpacksswb %zmm24, %zmm29, %zmm26 {%k6} {z} // CHECK: vpacksswb (%rcx), %zmm29, %zmm26 -// CHECK: encoding: [0x62,0x61,0x95,0x40,0x63,0x11] +// CHECK: encoding: [0x62,0x61,0x15,0x40,0x63,0x11] vpacksswb (%rcx), %zmm29, %zmm26 // CHECK: vpacksswb 4660(%rax,%r14,8), %zmm29, %zmm26 -// CHECK: encoding: [0x62,0x21,0x95,0x40,0x63,0x94,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0x21,0x15,0x40,0x63,0x94,0xf0,0x34,0x12,0x00,0x00] vpacksswb 4660(%rax,%r14,8), %zmm29, %zmm26 // CHECK: vpacksswb 8128(%rdx), %zmm29, %zmm26 -// CHECK: encoding: [0x62,0x61,0x95,0x40,0x63,0x52,0x7f] +// CHECK: encoding: [0x62,0x61,0x15,0x40,0x63,0x52,0x7f] vpacksswb 8128(%rdx), %zmm29, %zmm26 // CHECK: vpacksswb 8192(%rdx), %zmm29, %zmm26 -// CHECK: encoding: [0x62,0x61,0x95,0x40,0x63,0x92,0x00,0x20,0x00,0x00] +// CHECK: encoding: [0x62,0x61,0x15,0x40,0x63,0x92,0x00,0x20,0x00,0x00] vpacksswb 8192(%rdx), %zmm29, %zmm26 // CHECK: vpacksswb -8192(%rdx), %zmm29, %zmm26 -// CHECK: encoding: [0x62,0x61,0x95,0x40,0x63,0x52,0x80] +// CHECK: encoding: [0x62,0x61,0x15,0x40,0x63,0x52,0x80] vpacksswb -8192(%rdx), %zmm29, %zmm26 // CHECK: vpacksswb -8256(%rdx), %zmm29, %zmm26 -// CHECK: encoding: [0x62,0x61,0x95,0x40,0x63,0x92,0xc0,0xdf,0xff,0xff] +// CHECK: encoding: [0x62,0x61,0x15,0x40,0x63,0x92,0xc0,0xdf,0xff,0xff] vpacksswb -8256(%rdx), %zmm29, %zmm26 // CHECK: vpackuswb %zmm23, %zmm28, %zmm18 -// CHECK: encoding: [0x62,0xa1,0x9d,0x40,0x67,0xd7] +// CHECK: encoding: [0x62,0xa1,0x1d,0x40,0x67,0xd7] vpackuswb %zmm23, %zmm28, %zmm18 // CHECK: vpackuswb %zmm23, %zmm28, %zmm18 {%k4} -// CHECK: encoding: [0x62,0xa1,0x9d,0x44,0x67,0xd7] +// CHECK: encoding: [0x62,0xa1,0x1d,0x44,0x67,0xd7] vpackuswb %zmm23, %zmm28, %zmm18 {%k4} // CHECK: vpackuswb %zmm23, %zmm28, %zmm18 {%k4} {z} -// CHECK: encoding: [0x62,0xa1,0x9d,0xc4,0x67,0xd7] +// CHECK: encoding: [0x62,0xa1,0x1d,0xc4,0x67,0xd7] vpackuswb %zmm23, %zmm28, %zmm18 {%k4} {z} // CHECK: vpackuswb (%rcx), %zmm28, %zmm18 -// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x67,0x11] +// CHECK: encoding: [0x62,0xe1,0x1d,0x40,0x67,0x11] vpackuswb (%rcx), %zmm28, %zmm18 // CHECK: vpackuswb 4660(%rax,%r14,8), %zmm28, %zmm18 -// CHECK: encoding: [0x62,0xa1,0x9d,0x40,0x67,0x94,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x1d,0x40,0x67,0x94,0xf0,0x34,0x12,0x00,0x00] vpackuswb 4660(%rax,%r14,8), %zmm28, %zmm18 // CHECK: vpackuswb 8128(%rdx), %zmm28, %zmm18 -// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x67,0x52,0x7f] +// CHECK: encoding: [0x62,0xe1,0x1d,0x40,0x67,0x52,0x7f] vpackuswb 8128(%rdx), %zmm28, %zmm18 // CHECK: vpackuswb 8192(%rdx), %zmm28, %zmm18 -// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x67,0x92,0x00,0x20,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x1d,0x40,0x67,0x92,0x00,0x20,0x00,0x00] vpackuswb 8192(%rdx), %zmm28, %zmm18 // CHECK: vpackuswb -8192(%rdx), %zmm28, %zmm18 -// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x67,0x52,0x80] +// CHECK: encoding: [0x62,0xe1,0x1d,0x40,0x67,0x52,0x80] vpackuswb -8192(%rdx), %zmm28, %zmm18 // CHECK: vpackuswb -8256(%rdx), %zmm28, %zmm18 -// CHECK: encoding: [0x62,0xe1,0x9d,0x40,0x67,0x92,0xc0,0xdf,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x1d,0x40,0x67,0x92,0xc0,0xdf,0xff,0xff] vpackuswb -8256(%rdx), %zmm28, %zmm18 // CHECK: vpackssdw %zmm22, %zmm27, %zmm24 @@ -2281,39 +2281,39 @@ vpackssdw -516(%rdx){1to16}, %zmm27, %zmm24 // CHECK: vpacksswb %zmm23, %zmm18, %zmm28 -// CHECK: encoding: [0x62,0x21,0xed,0x40,0x63,0xe7] +// CHECK: encoding: [0x62,0x21,0x6d,0x40,0x63,0xe7] vpacksswb %zmm23, %zmm18, %zmm28 // CHECK: vpacksswb %zmm23, %zmm18, %zmm28 {%k3} -// CHECK: encoding: [0x62,0x21,0xed,0x43,0x63,0xe7] +// CHECK: encoding: [0x62,0x21,0x6d,0x43,0x63,0xe7] vpacksswb %zmm23, %zmm18, %zmm28 {%k3} // CHECK: vpacksswb %zmm23, %zmm18, %zmm28 {%k3} {z} -// CHECK: encoding: [0x62,0x21,0xed,0xc3,0x63,0xe7] +// CHECK: encoding: [0x62,0x21,0x6d,0xc3,0x63,0xe7] vpacksswb %zmm23, %zmm18, %zmm28 {%k3} {z} // CHECK: vpacksswb (%rcx), %zmm18, %zmm28 -// CHECK: encoding: [0x62,0x61,0xed,0x40,0x63,0x21] +// CHECK: encoding: [0x62,0x61,0x6d,0x40,0x63,0x21] vpacksswb (%rcx), %zmm18, %zmm28 // CHECK: vpacksswb 291(%rax,%r14,8), %zmm18, %zmm28 -// CHECK: encoding: [0x62,0x21,0xed,0x40,0x63,0xa4,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0x21,0x6d,0x40,0x63,0xa4,0xf0,0x23,0x01,0x00,0x00] vpacksswb 291(%rax,%r14,8), %zmm18, %zmm28 // CHECK: vpacksswb 8128(%rdx), %zmm18, %zmm28 -// CHECK: encoding: [0x62,0x61,0xed,0x40,0x63,0x62,0x7f] +// CHECK: encoding: [0x62,0x61,0x6d,0x40,0x63,0x62,0x7f] vpacksswb 8128(%rdx), %zmm18, %zmm28 // CHECK: vpacksswb 8192(%rdx), %zmm18, %zmm28 -// CHECK: encoding: [0x62,0x61,0xed,0x40,0x63,0xa2,0x00,0x20,0x00,0x00] +// CHECK: encoding: [0x62,0x61,0x6d,0x40,0x63,0xa2,0x00,0x20,0x00,0x00] vpacksswb 8192(%rdx), %zmm18, %zmm28 // CHECK: vpacksswb -8192(%rdx), %zmm18, %zmm28 -// CHECK: encoding: [0x62,0x61,0xed,0x40,0x63,0x62,0x80] +// CHECK: encoding: [0x62,0x61,0x6d,0x40,0x63,0x62,0x80] vpacksswb -8192(%rdx), %zmm18, %zmm28 // CHECK: vpacksswb -8256(%rdx), %zmm18, %zmm28 -// CHECK: encoding: [0x62,0x61,0xed,0x40,0x63,0xa2,0xc0,0xdf,0xff,0xff] +// CHECK: encoding: [0x62,0x61,0x6d,0x40,0x63,0xa2,0xc0,0xdf,0xff,0xff] vpacksswb -8256(%rdx), %zmm18, %zmm28 // CHECK: vpackusdw %zmm21, %zmm29, %zmm18 @@ -2373,39 +2373,39 @@ vpackusdw -516(%rdx){1to16}, %zmm29, %zmm18 // CHECK: vpackuswb %zmm27, %zmm18, %zmm23 -// CHECK: encoding: [0x62,0x81,0xed,0x40,0x67,0xfb] +// CHECK: encoding: [0x62,0x81,0x6d,0x40,0x67,0xfb] vpackuswb %zmm27, %zmm18, %zmm23 // CHECK: vpackuswb %zmm27, %zmm18, %zmm23 {%k5} -// CHECK: encoding: [0x62,0x81,0xed,0x45,0x67,0xfb] +// CHECK: encoding: [0x62,0x81,0x6d,0x45,0x67,0xfb] vpackuswb %zmm27, %zmm18, %zmm23 {%k5} // CHECK: vpackuswb %zmm27, %zmm18, %zmm23 {%k5} {z} -// CHECK: encoding: [0x62,0x81,0xed,0xc5,0x67,0xfb] +// CHECK: encoding: [0x62,0x81,0x6d,0xc5,0x67,0xfb] vpackuswb %zmm27, %zmm18, %zmm23 {%k5} {z} // CHECK: vpackuswb (%rcx), %zmm18, %zmm23 -// CHECK: encoding: [0x62,0xe1,0xed,0x40,0x67,0x39] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x67,0x39] vpackuswb (%rcx), %zmm18, %zmm23 // CHECK: vpackuswb 291(%rax,%r14,8), %zmm18, %zmm23 -// CHECK: encoding: [0x62,0xa1,0xed,0x40,0x67,0xbc,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x6d,0x40,0x67,0xbc,0xf0,0x23,0x01,0x00,0x00] vpackuswb 291(%rax,%r14,8), %zmm18, %zmm23 // CHECK: vpackuswb 8128(%rdx), %zmm18, %zmm23 -// CHECK: encoding: [0x62,0xe1,0xed,0x40,0x67,0x7a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x67,0x7a,0x7f] vpackuswb 8128(%rdx), %zmm18, %zmm23 // CHECK: vpackuswb 8192(%rdx), %zmm18, %zmm23 -// CHECK: encoding: [0x62,0xe1,0xed,0x40,0x67,0xba,0x00,0x20,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x67,0xba,0x00,0x20,0x00,0x00] vpackuswb 8192(%rdx), %zmm18, %zmm23 // CHECK: vpackuswb -8192(%rdx), %zmm18, %zmm23 -// CHECK: encoding: [0x62,0xe1,0xed,0x40,0x67,0x7a,0x80] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x67,0x7a,0x80] vpackuswb -8192(%rdx), %zmm18, %zmm23 // CHECK: vpackuswb -8256(%rdx), %zmm18, %zmm23 -// CHECK: encoding: [0x62,0xe1,0xed,0x40,0x67,0xba,0xc0,0xdf,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x6d,0x40,0x67,0xba,0xc0,0xdf,0xff,0xff] vpackuswb -8256(%rdx), %zmm18, %zmm23 // CHECK: vpaddsb %zmm20, %zmm19, %zmm19 diff --git a/test/MC/X86/x86-64-avx512bw_vl.s b/test/MC/X86/x86-64-avx512bw_vl.s index 1c3784a61527..191cff2258f8 100644 --- a/test/MC/X86/x86-64-avx512bw_vl.s +++ b/test/MC/X86/x86-64-avx512bw_vl.s @@ -2449,291 +2449,291 @@ vpsravw -4128(%rdx), %ymm28, %ymm20 // CHECK: vpacksswb %xmm20, %xmm29, %xmm17 -// CHECK: encoding: [0x62,0xa1,0x95,0x00,0x63,0xcc] +// CHECK: encoding: [0x62,0xa1,0x15,0x00,0x63,0xcc] vpacksswb %xmm20, %xmm29, %xmm17 // CHECK: vpacksswb %xmm20, %xmm29, %xmm17 {%k3} -// CHECK: encoding: [0x62,0xa1,0x95,0x03,0x63,0xcc] +// CHECK: encoding: [0x62,0xa1,0x15,0x03,0x63,0xcc] vpacksswb %xmm20, %xmm29, %xmm17 {%k3} // CHECK: vpacksswb %xmm20, %xmm29, %xmm17 {%k3} {z} -// CHECK: encoding: [0x62,0xa1,0x95,0x83,0x63,0xcc] +// CHECK: encoding: [0x62,0xa1,0x15,0x83,0x63,0xcc] vpacksswb %xmm20, %xmm29, %xmm17 {%k3} {z} // CHECK: vpacksswb (%rcx), %xmm29, %xmm17 -// CHECK: encoding: [0x62,0xe1,0x95,0x00,0x63,0x09] +// CHECK: encoding: [0x62,0xe1,0x15,0x00,0x63,0x09] vpacksswb (%rcx), %xmm29, %xmm17 // CHECK: vpacksswb 291(%rax,%r14,8), %xmm29, %xmm17 -// CHECK: encoding: [0x62,0xa1,0x95,0x00,0x63,0x8c,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x15,0x00,0x63,0x8c,0xf0,0x23,0x01,0x00,0x00] vpacksswb 291(%rax,%r14,8), %xmm29, %xmm17 // CHECK: vpacksswb 2032(%rdx), %xmm29, %xmm17 -// CHECK: encoding: [0x62,0xe1,0x95,0x00,0x63,0x4a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x15,0x00,0x63,0x4a,0x7f] vpacksswb 2032(%rdx), %xmm29, %xmm17 // CHECK: vpacksswb 2048(%rdx), %xmm29, %xmm17 -// CHECK: encoding: [0x62,0xe1,0x95,0x00,0x63,0x8a,0x00,0x08,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x15,0x00,0x63,0x8a,0x00,0x08,0x00,0x00] vpacksswb 2048(%rdx), %xmm29, %xmm17 // CHECK: vpacksswb -2048(%rdx), %xmm29, %xmm17 -// CHECK: encoding: [0x62,0xe1,0x95,0x00,0x63,0x4a,0x80] +// CHECK: encoding: [0x62,0xe1,0x15,0x00,0x63,0x4a,0x80] vpacksswb -2048(%rdx), %xmm29, %xmm17 // CHECK: vpacksswb -2064(%rdx), %xmm29, %xmm17 -// CHECK: encoding: [0x62,0xe1,0x95,0x00,0x63,0x8a,0xf0,0xf7,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x15,0x00,0x63,0x8a,0xf0,0xf7,0xff,0xff] vpacksswb -2064(%rdx), %xmm29, %xmm17 // CHECK: vpacksswb %ymm21, %ymm26, %ymm29 -// CHECK: encoding: [0x62,0x21,0xad,0x20,0x63,0xed] +// CHECK: encoding: [0x62,0x21,0x2d,0x20,0x63,0xed] vpacksswb %ymm21, %ymm26, %ymm29 // CHECK: vpacksswb %ymm21, %ymm26, %ymm29 {%k2} -// CHECK: encoding: [0x62,0x21,0xad,0x22,0x63,0xed] +// CHECK: encoding: [0x62,0x21,0x2d,0x22,0x63,0xed] vpacksswb %ymm21, %ymm26, %ymm29 {%k2} // CHECK: vpacksswb %ymm21, %ymm26, %ymm29 {%k2} {z} -// CHECK: encoding: [0x62,0x21,0xad,0xa2,0x63,0xed] +// CHECK: encoding: [0x62,0x21,0x2d,0xa2,0x63,0xed] vpacksswb %ymm21, %ymm26, %ymm29 {%k2} {z} // CHECK: vpacksswb (%rcx), %ymm26, %ymm29 -// CHECK: encoding: [0x62,0x61,0xad,0x20,0x63,0x29] +// CHECK: encoding: [0x62,0x61,0x2d,0x20,0x63,0x29] vpacksswb (%rcx), %ymm26, %ymm29 // CHECK: vpacksswb 291(%rax,%r14,8), %ymm26, %ymm29 -// CHECK: encoding: [0x62,0x21,0xad,0x20,0x63,0xac,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0x21,0x2d,0x20,0x63,0xac,0xf0,0x23,0x01,0x00,0x00] vpacksswb 291(%rax,%r14,8), %ymm26, %ymm29 // CHECK: vpacksswb 4064(%rdx), %ymm26, %ymm29 -// CHECK: encoding: [0x62,0x61,0xad,0x20,0x63,0x6a,0x7f] +// CHECK: encoding: [0x62,0x61,0x2d,0x20,0x63,0x6a,0x7f] vpacksswb 4064(%rdx), %ymm26, %ymm29 // CHECK: vpacksswb 4096(%rdx), %ymm26, %ymm29 -// CHECK: encoding: [0x62,0x61,0xad,0x20,0x63,0xaa,0x00,0x10,0x00,0x00] +// CHECK: encoding: [0x62,0x61,0x2d,0x20,0x63,0xaa,0x00,0x10,0x00,0x00] vpacksswb 4096(%rdx), %ymm26, %ymm29 // CHECK: vpacksswb -4096(%rdx), %ymm26, %ymm29 -// CHECK: encoding: [0x62,0x61,0xad,0x20,0x63,0x6a,0x80] +// CHECK: encoding: [0x62,0x61,0x2d,0x20,0x63,0x6a,0x80] vpacksswb -4096(%rdx), %ymm26, %ymm29 // CHECK: vpacksswb -4128(%rdx), %ymm26, %ymm29 -// CHECK: encoding: [0x62,0x61,0xad,0x20,0x63,0xaa,0xe0,0xef,0xff,0xff] +// CHECK: encoding: [0x62,0x61,0x2d,0x20,0x63,0xaa,0xe0,0xef,0xff,0xff] vpacksswb -4128(%rdx), %ymm26, %ymm29 // CHECK: vpackuswb %xmm24, %xmm26, %xmm20 -// CHECK: encoding: [0x62,0x81,0xad,0x00,0x67,0xe0] +// CHECK: encoding: [0x62,0x81,0x2d,0x00,0x67,0xe0] vpackuswb %xmm24, %xmm26, %xmm20 // CHECK: vpackuswb %xmm24, %xmm26, %xmm20 {%k4} -// CHECK: encoding: [0x62,0x81,0xad,0x04,0x67,0xe0] +// CHECK: encoding: [0x62,0x81,0x2d,0x04,0x67,0xe0] vpackuswb %xmm24, %xmm26, %xmm20 {%k4} // CHECK: vpackuswb %xmm24, %xmm26, %xmm20 {%k4} {z} -// CHECK: encoding: [0x62,0x81,0xad,0x84,0x67,0xe0] +// CHECK: encoding: [0x62,0x81,0x2d,0x84,0x67,0xe0] vpackuswb %xmm24, %xmm26, %xmm20 {%k4} {z} // CHECK: vpackuswb (%rcx), %xmm26, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x00,0x67,0x21] +// CHECK: encoding: [0x62,0xe1,0x2d,0x00,0x67,0x21] vpackuswb (%rcx), %xmm26, %xmm20 // CHECK: vpackuswb 291(%rax,%r14,8), %xmm26, %xmm20 -// CHECK: encoding: [0x62,0xa1,0xad,0x00,0x67,0xa4,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x2d,0x00,0x67,0xa4,0xf0,0x23,0x01,0x00,0x00] vpackuswb 291(%rax,%r14,8), %xmm26, %xmm20 // CHECK: vpackuswb 2032(%rdx), %xmm26, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x00,0x67,0x62,0x7f] +// CHECK: encoding: [0x62,0xe1,0x2d,0x00,0x67,0x62,0x7f] vpackuswb 2032(%rdx), %xmm26, %xmm20 // CHECK: vpackuswb 2048(%rdx), %xmm26, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x00,0x67,0xa2,0x00,0x08,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x2d,0x00,0x67,0xa2,0x00,0x08,0x00,0x00] vpackuswb 2048(%rdx), %xmm26, %xmm20 // CHECK: vpackuswb -2048(%rdx), %xmm26, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x00,0x67,0x62,0x80] +// CHECK: encoding: [0x62,0xe1,0x2d,0x00,0x67,0x62,0x80] vpackuswb -2048(%rdx), %xmm26, %xmm20 // CHECK: vpackuswb -2064(%rdx), %xmm26, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x00,0x67,0xa2,0xf0,0xf7,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x2d,0x00,0x67,0xa2,0xf0,0xf7,0xff,0xff] vpackuswb -2064(%rdx), %xmm26, %xmm20 // CHECK: vpackuswb %ymm20, %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xa1,0x9d,0x20,0x67,0xdc] +// CHECK: encoding: [0x62,0xa1,0x1d,0x20,0x67,0xdc] vpackuswb %ymm20, %ymm28, %ymm19 // CHECK: vpackuswb %ymm20, %ymm28, %ymm19 {%k2} -// CHECK: encoding: [0x62,0xa1,0x9d,0x22,0x67,0xdc] +// CHECK: encoding: [0x62,0xa1,0x1d,0x22,0x67,0xdc] vpackuswb %ymm20, %ymm28, %ymm19 {%k2} // CHECK: vpackuswb %ymm20, %ymm28, %ymm19 {%k2} {z} -// CHECK: encoding: [0x62,0xa1,0x9d,0xa2,0x67,0xdc] +// CHECK: encoding: [0x62,0xa1,0x1d,0xa2,0x67,0xdc] vpackuswb %ymm20, %ymm28, %ymm19 {%k2} {z} // CHECK: vpackuswb (%rcx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x19] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x19] vpackuswb (%rcx), %ymm28, %ymm19 // CHECK: vpackuswb 291(%rax,%r14,8), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xa1,0x9d,0x20,0x67,0x9c,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x1d,0x20,0x67,0x9c,0xf0,0x23,0x01,0x00,0x00] vpackuswb 291(%rax,%r14,8), %ymm28, %ymm19 // CHECK: vpackuswb 4064(%rdx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x5a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x5a,0x7f] vpackuswb 4064(%rdx), %ymm28, %ymm19 // CHECK: vpackuswb 4096(%rdx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x9a,0x00,0x10,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x9a,0x00,0x10,0x00,0x00] vpackuswb 4096(%rdx), %ymm28, %ymm19 // CHECK: vpackuswb -4096(%rdx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x5a,0x80] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x5a,0x80] vpackuswb -4096(%rdx), %ymm28, %ymm19 // CHECK: vpackuswb -4128(%rdx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x9a,0xe0,0xef,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x9a,0xe0,0xef,0xff,0xff] vpackuswb -4128(%rdx), %ymm28, %ymm19 // CHECK: vpacksswb %xmm25, %xmm18, %xmm19 -// CHECK: encoding: [0x62,0x81,0xed,0x00,0x63,0xd9] +// CHECK: encoding: [0x62,0x81,0x6d,0x00,0x63,0xd9] vpacksswb %xmm25, %xmm18, %xmm19 // CHECK: vpacksswb %xmm25, %xmm18, %xmm19 {%k4} -// CHECK: encoding: [0x62,0x81,0xed,0x04,0x63,0xd9] +// CHECK: encoding: [0x62,0x81,0x6d,0x04,0x63,0xd9] vpacksswb %xmm25, %xmm18, %xmm19 {%k4} // CHECK: vpacksswb %xmm25, %xmm18, %xmm19 {%k4} {z} -// CHECK: encoding: [0x62,0x81,0xed,0x84,0x63,0xd9] +// CHECK: encoding: [0x62,0x81,0x6d,0x84,0x63,0xd9] vpacksswb %xmm25, %xmm18, %xmm19 {%k4} {z} // CHECK: vpacksswb (%rcx), %xmm18, %xmm19 -// CHECK: encoding: [0x62,0xe1,0xed,0x00,0x63,0x19] +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0x63,0x19] vpacksswb (%rcx), %xmm18, %xmm19 // CHECK: vpacksswb 4660(%rax,%r14,8), %xmm18, %xmm19 -// CHECK: encoding: [0x62,0xa1,0xed,0x00,0x63,0x9c,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x6d,0x00,0x63,0x9c,0xf0,0x34,0x12,0x00,0x00] vpacksswb 4660(%rax,%r14,8), %xmm18, %xmm19 // CHECK: vpacksswb 2032(%rdx), %xmm18, %xmm19 -// CHECK: encoding: [0x62,0xe1,0xed,0x00,0x63,0x5a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0x63,0x5a,0x7f] vpacksswb 2032(%rdx), %xmm18, %xmm19 // CHECK: vpacksswb 2048(%rdx), %xmm18, %xmm19 -// CHECK: encoding: [0x62,0xe1,0xed,0x00,0x63,0x9a,0x00,0x08,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0x63,0x9a,0x00,0x08,0x00,0x00] vpacksswb 2048(%rdx), %xmm18, %xmm19 // CHECK: vpacksswb -2048(%rdx), %xmm18, %xmm19 -// CHECK: encoding: [0x62,0xe1,0xed,0x00,0x63,0x5a,0x80] +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0x63,0x5a,0x80] vpacksswb -2048(%rdx), %xmm18, %xmm19 // CHECK: vpacksswb -2064(%rdx), %xmm18, %xmm19 -// CHECK: encoding: [0x62,0xe1,0xed,0x00,0x63,0x9a,0xf0,0xf7,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0x63,0x9a,0xf0,0xf7,0xff,0xff] vpacksswb -2064(%rdx), %xmm18, %xmm19 // CHECK: vpacksswb %ymm19, %ymm22, %ymm22 -// CHECK: encoding: [0x62,0xa1,0xcd,0x20,0x63,0xf3] +// CHECK: encoding: [0x62,0xa1,0x4d,0x20,0x63,0xf3] vpacksswb %ymm19, %ymm22, %ymm22 // CHECK: vpacksswb %ymm19, %ymm22, %ymm22 {%k7} -// CHECK: encoding: [0x62,0xa1,0xcd,0x27,0x63,0xf3] +// CHECK: encoding: [0x62,0xa1,0x4d,0x27,0x63,0xf3] vpacksswb %ymm19, %ymm22, %ymm22 {%k7} // CHECK: vpacksswb %ymm19, %ymm22, %ymm22 {%k7} {z} -// CHECK: encoding: [0x62,0xa1,0xcd,0xa7,0x63,0xf3] +// CHECK: encoding: [0x62,0xa1,0x4d,0xa7,0x63,0xf3] vpacksswb %ymm19, %ymm22, %ymm22 {%k7} {z} // CHECK: vpacksswb (%rcx), %ymm22, %ymm22 -// CHECK: encoding: [0x62,0xe1,0xcd,0x20,0x63,0x31] +// CHECK: encoding: [0x62,0xe1,0x4d,0x20,0x63,0x31] vpacksswb (%rcx), %ymm22, %ymm22 // CHECK: vpacksswb 4660(%rax,%r14,8), %ymm22, %ymm22 -// CHECK: encoding: [0x62,0xa1,0xcd,0x20,0x63,0xb4,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x4d,0x20,0x63,0xb4,0xf0,0x34,0x12,0x00,0x00] vpacksswb 4660(%rax,%r14,8), %ymm22, %ymm22 // CHECK: vpacksswb 4064(%rdx), %ymm22, %ymm22 -// CHECK: encoding: [0x62,0xe1,0xcd,0x20,0x63,0x72,0x7f] +// CHECK: encoding: [0x62,0xe1,0x4d,0x20,0x63,0x72,0x7f] vpacksswb 4064(%rdx), %ymm22, %ymm22 // CHECK: vpacksswb 4096(%rdx), %ymm22, %ymm22 -// CHECK: encoding: [0x62,0xe1,0xcd,0x20,0x63,0xb2,0x00,0x10,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x4d,0x20,0x63,0xb2,0x00,0x10,0x00,0x00] vpacksswb 4096(%rdx), %ymm22, %ymm22 // CHECK: vpacksswb -4096(%rdx), %ymm22, %ymm22 -// CHECK: encoding: [0x62,0xe1,0xcd,0x20,0x63,0x72,0x80] +// CHECK: encoding: [0x62,0xe1,0x4d,0x20,0x63,0x72,0x80] vpacksswb -4096(%rdx), %ymm22, %ymm22 // CHECK: vpacksswb -4128(%rdx), %ymm22, %ymm22 -// CHECK: encoding: [0x62,0xe1,0xcd,0x20,0x63,0xb2,0xe0,0xef,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x4d,0x20,0x63,0xb2,0xe0,0xef,0xff,0xff] vpacksswb -4128(%rdx), %ymm22, %ymm22 // CHECK: vpackuswb %xmm23, %xmm28, %xmm23 -// CHECK: encoding: [0x62,0xa1,0x9d,0x00,0x67,0xff] +// CHECK: encoding: [0x62,0xa1,0x1d,0x00,0x67,0xff] vpackuswb %xmm23, %xmm28, %xmm23 // CHECK: vpackuswb %xmm23, %xmm28, %xmm23 {%k3} -// CHECK: encoding: [0x62,0xa1,0x9d,0x03,0x67,0xff] +// CHECK: encoding: [0x62,0xa1,0x1d,0x03,0x67,0xff] vpackuswb %xmm23, %xmm28, %xmm23 {%k3} // CHECK: vpackuswb %xmm23, %xmm28, %xmm23 {%k3} {z} -// CHECK: encoding: [0x62,0xa1,0x9d,0x83,0x67,0xff] +// CHECK: encoding: [0x62,0xa1,0x1d,0x83,0x67,0xff] vpackuswb %xmm23, %xmm28, %xmm23 {%k3} {z} // CHECK: vpackuswb (%rcx), %xmm28, %xmm23 -// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x67,0x39] +// CHECK: encoding: [0x62,0xe1,0x1d,0x00,0x67,0x39] vpackuswb (%rcx), %xmm28, %xmm23 // CHECK: vpackuswb 4660(%rax,%r14,8), %xmm28, %xmm23 -// CHECK: encoding: [0x62,0xa1,0x9d,0x00,0x67,0xbc,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x1d,0x00,0x67,0xbc,0xf0,0x34,0x12,0x00,0x00] vpackuswb 4660(%rax,%r14,8), %xmm28, %xmm23 // CHECK: vpackuswb 2032(%rdx), %xmm28, %xmm23 -// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x67,0x7a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x1d,0x00,0x67,0x7a,0x7f] vpackuswb 2032(%rdx), %xmm28, %xmm23 // CHECK: vpackuswb 2048(%rdx), %xmm28, %xmm23 -// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x67,0xba,0x00,0x08,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x1d,0x00,0x67,0xba,0x00,0x08,0x00,0x00] vpackuswb 2048(%rdx), %xmm28, %xmm23 // CHECK: vpackuswb -2048(%rdx), %xmm28, %xmm23 -// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x67,0x7a,0x80] +// CHECK: encoding: [0x62,0xe1,0x1d,0x00,0x67,0x7a,0x80] vpackuswb -2048(%rdx), %xmm28, %xmm23 // CHECK: vpackuswb -2064(%rdx), %xmm28, %xmm23 -// CHECK: encoding: [0x62,0xe1,0x9d,0x00,0x67,0xba,0xf0,0xf7,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x1d,0x00,0x67,0xba,0xf0,0xf7,0xff,0xff] vpackuswb -2064(%rdx), %xmm28, %xmm23 // CHECK: vpackuswb %ymm27, %ymm26, %ymm20 -// CHECK: encoding: [0x62,0x81,0xad,0x20,0x67,0xe3] +// CHECK: encoding: [0x62,0x81,0x2d,0x20,0x67,0xe3] vpackuswb %ymm27, %ymm26, %ymm20 // CHECK: vpackuswb %ymm27, %ymm26, %ymm20 {%k6} -// CHECK: encoding: [0x62,0x81,0xad,0x26,0x67,0xe3] +// CHECK: encoding: [0x62,0x81,0x2d,0x26,0x67,0xe3] vpackuswb %ymm27, %ymm26, %ymm20 {%k6} // CHECK: vpackuswb %ymm27, %ymm26, %ymm20 {%k6} {z} -// CHECK: encoding: [0x62,0x81,0xad,0xa6,0x67,0xe3] +// CHECK: encoding: [0x62,0x81,0x2d,0xa6,0x67,0xe3] vpackuswb %ymm27, %ymm26, %ymm20 {%k6} {z} // CHECK: vpackuswb (%rcx), %ymm26, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x20,0x67,0x21] +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0x67,0x21] vpackuswb (%rcx), %ymm26, %ymm20 // CHECK: vpackuswb 4660(%rax,%r14,8), %ymm26, %ymm20 -// CHECK: encoding: [0x62,0xa1,0xad,0x20,0x67,0xa4,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x2d,0x20,0x67,0xa4,0xf0,0x34,0x12,0x00,0x00] vpackuswb 4660(%rax,%r14,8), %ymm26, %ymm20 // CHECK: vpackuswb 4064(%rdx), %ymm26, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x20,0x67,0x62,0x7f] +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0x67,0x62,0x7f] vpackuswb 4064(%rdx), %ymm26, %ymm20 // CHECK: vpackuswb 4096(%rdx), %ymm26, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x20,0x67,0xa2,0x00,0x10,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0x67,0xa2,0x00,0x10,0x00,0x00] vpackuswb 4096(%rdx), %ymm26, %ymm20 // CHECK: vpackuswb -4096(%rdx), %ymm26, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x20,0x67,0x62,0x80] +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0x67,0x62,0x80] vpackuswb -4096(%rdx), %ymm26, %ymm20 // CHECK: vpackuswb -4128(%rdx), %ymm26, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xad,0x20,0x67,0xa2,0xe0,0xef,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0x67,0xa2,0xe0,0xef,0xff,0xff] vpackuswb -4128(%rdx), %ymm26, %ymm20 // CHECK: vpackssdw %xmm26, %xmm26, %xmm30 @@ -2849,75 +2849,75 @@ vpackssdw -516(%rdx){1to8}, %ymm22, %ymm28 // CHECK: vpacksswb %xmm21, %xmm28, %xmm25 -// CHECK: encoding: [0x62,0x21,0x9d,0x00,0x63,0xcd] +// CHECK: encoding: [0x62,0x21,0x1d,0x00,0x63,0xcd] vpacksswb %xmm21, %xmm28, %xmm25 // CHECK: vpacksswb %xmm21, %xmm28, %xmm25 {%k5} -// CHECK: encoding: [0x62,0x21,0x9d,0x05,0x63,0xcd] +// CHECK: encoding: [0x62,0x21,0x1d,0x05,0x63,0xcd] vpacksswb %xmm21, %xmm28, %xmm25 {%k5} // CHECK: vpacksswb %xmm21, %xmm28, %xmm25 {%k5} {z} -// CHECK: encoding: [0x62,0x21,0x9d,0x85,0x63,0xcd] +// CHECK: encoding: [0x62,0x21,0x1d,0x85,0x63,0xcd] vpacksswb %xmm21, %xmm28, %xmm25 {%k5} {z} // CHECK: vpacksswb (%rcx), %xmm28, %xmm25 -// CHECK: encoding: [0x62,0x61,0x9d,0x00,0x63,0x09] +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0x63,0x09] vpacksswb (%rcx), %xmm28, %xmm25 // CHECK: vpacksswb 291(%rax,%r14,8), %xmm28, %xmm25 -// CHECK: encoding: [0x62,0x21,0x9d,0x00,0x63,0x8c,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0x21,0x1d,0x00,0x63,0x8c,0xf0,0x23,0x01,0x00,0x00] vpacksswb 291(%rax,%r14,8), %xmm28, %xmm25 // CHECK: vpacksswb 2032(%rdx), %xmm28, %xmm25 -// CHECK: encoding: [0x62,0x61,0x9d,0x00,0x63,0x4a,0x7f] +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0x63,0x4a,0x7f] vpacksswb 2032(%rdx), %xmm28, %xmm25 // CHECK: vpacksswb 2048(%rdx), %xmm28, %xmm25 -// CHECK: encoding: [0x62,0x61,0x9d,0x00,0x63,0x8a,0x00,0x08,0x00,0x00] +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0x63,0x8a,0x00,0x08,0x00,0x00] vpacksswb 2048(%rdx), %xmm28, %xmm25 // CHECK: vpacksswb -2048(%rdx), %xmm28, %xmm25 -// CHECK: encoding: [0x62,0x61,0x9d,0x00,0x63,0x4a,0x80] +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0x63,0x4a,0x80] vpacksswb -2048(%rdx), %xmm28, %xmm25 // CHECK: vpacksswb -2064(%rdx), %xmm28, %xmm25 -// CHECK: encoding: [0x62,0x61,0x9d,0x00,0x63,0x8a,0xf0,0xf7,0xff,0xff] +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0x63,0x8a,0xf0,0xf7,0xff,0xff] vpacksswb -2064(%rdx), %xmm28, %xmm25 // CHECK: vpacksswb %ymm22, %ymm28, %ymm21 -// CHECK: encoding: [0x62,0xa1,0x9d,0x20,0x63,0xee] +// CHECK: encoding: [0x62,0xa1,0x1d,0x20,0x63,0xee] vpacksswb %ymm22, %ymm28, %ymm21 // CHECK: vpacksswb %ymm22, %ymm28, %ymm21 {%k5} -// CHECK: encoding: [0x62,0xa1,0x9d,0x25,0x63,0xee] +// CHECK: encoding: [0x62,0xa1,0x1d,0x25,0x63,0xee] vpacksswb %ymm22, %ymm28, %ymm21 {%k5} // CHECK: vpacksswb %ymm22, %ymm28, %ymm21 {%k5} {z} -// CHECK: encoding: [0x62,0xa1,0x9d,0xa5,0x63,0xee] +// CHECK: encoding: [0x62,0xa1,0x1d,0xa5,0x63,0xee] vpacksswb %ymm22, %ymm28, %ymm21 {%k5} {z} // CHECK: vpacksswb (%rcx), %ymm28, %ymm21 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x63,0x29] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x63,0x29] vpacksswb (%rcx), %ymm28, %ymm21 // CHECK: vpacksswb 291(%rax,%r14,8), %ymm28, %ymm21 -// CHECK: encoding: [0x62,0xa1,0x9d,0x20,0x63,0xac,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x1d,0x20,0x63,0xac,0xf0,0x23,0x01,0x00,0x00] vpacksswb 291(%rax,%r14,8), %ymm28, %ymm21 // CHECK: vpacksswb 4064(%rdx), %ymm28, %ymm21 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x63,0x6a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x63,0x6a,0x7f] vpacksswb 4064(%rdx), %ymm28, %ymm21 // CHECK: vpacksswb 4096(%rdx), %ymm28, %ymm21 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x63,0xaa,0x00,0x10,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x63,0xaa,0x00,0x10,0x00,0x00] vpacksswb 4096(%rdx), %ymm28, %ymm21 // CHECK: vpacksswb -4096(%rdx), %ymm28, %ymm21 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x63,0x6a,0x80] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x63,0x6a,0x80] vpacksswb -4096(%rdx), %ymm28, %ymm21 // CHECK: vpacksswb -4128(%rdx), %ymm28, %ymm21 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x63,0xaa,0xe0,0xef,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x63,0xaa,0xe0,0xef,0xff,0xff] vpacksswb -4128(%rdx), %ymm28, %ymm21 // CHECK: vpackusdw %xmm20, %xmm24, %xmm24 @@ -3033,75 +3033,75 @@ vpackusdw -516(%rdx){1to8}, %ymm26, %ymm19 // CHECK: vpackuswb %xmm17, %xmm27, %xmm21 -// CHECK: encoding: [0x62,0xa1,0xa5,0x00,0x67,0xe9] +// CHECK: encoding: [0x62,0xa1,0x25,0x00,0x67,0xe9] vpackuswb %xmm17, %xmm27, %xmm21 // CHECK: vpackuswb %xmm17, %xmm27, %xmm21 {%k4} -// CHECK: encoding: [0x62,0xa1,0xa5,0x04,0x67,0xe9] +// CHECK: encoding: [0x62,0xa1,0x25,0x04,0x67,0xe9] vpackuswb %xmm17, %xmm27, %xmm21 {%k4} // CHECK: vpackuswb %xmm17, %xmm27, %xmm21 {%k4} {z} -// CHECK: encoding: [0x62,0xa1,0xa5,0x84,0x67,0xe9] +// CHECK: encoding: [0x62,0xa1,0x25,0x84,0x67,0xe9] vpackuswb %xmm17, %xmm27, %xmm21 {%k4} {z} // CHECK: vpackuswb (%rcx), %xmm27, %xmm21 -// CHECK: encoding: [0x62,0xe1,0xa5,0x00,0x67,0x29] +// CHECK: encoding: [0x62,0xe1,0x25,0x00,0x67,0x29] vpackuswb (%rcx), %xmm27, %xmm21 // CHECK: vpackuswb 291(%rax,%r14,8), %xmm27, %xmm21 -// CHECK: encoding: [0x62,0xa1,0xa5,0x00,0x67,0xac,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x25,0x00,0x67,0xac,0xf0,0x23,0x01,0x00,0x00] vpackuswb 291(%rax,%r14,8), %xmm27, %xmm21 // CHECK: vpackuswb 2032(%rdx), %xmm27, %xmm21 -// CHECK: encoding: [0x62,0xe1,0xa5,0x00,0x67,0x6a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x25,0x00,0x67,0x6a,0x7f] vpackuswb 2032(%rdx), %xmm27, %xmm21 // CHECK: vpackuswb 2048(%rdx), %xmm27, %xmm21 -// CHECK: encoding: [0x62,0xe1,0xa5,0x00,0x67,0xaa,0x00,0x08,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x25,0x00,0x67,0xaa,0x00,0x08,0x00,0x00] vpackuswb 2048(%rdx), %xmm27, %xmm21 // CHECK: vpackuswb -2048(%rdx), %xmm27, %xmm21 -// CHECK: encoding: [0x62,0xe1,0xa5,0x00,0x67,0x6a,0x80] +// CHECK: encoding: [0x62,0xe1,0x25,0x00,0x67,0x6a,0x80] vpackuswb -2048(%rdx), %xmm27, %xmm21 // CHECK: vpackuswb -2064(%rdx), %xmm27, %xmm21 -// CHECK: encoding: [0x62,0xe1,0xa5,0x00,0x67,0xaa,0xf0,0xf7,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x25,0x00,0x67,0xaa,0xf0,0xf7,0xff,0xff] vpackuswb -2064(%rdx), %xmm27, %xmm21 // CHECK: vpackuswb %ymm20, %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xa1,0x9d,0x20,0x67,0xdc] +// CHECK: encoding: [0x62,0xa1,0x1d,0x20,0x67,0xdc] vpackuswb %ymm20, %ymm28, %ymm19 // CHECK: vpackuswb %ymm20, %ymm28, %ymm19 {%k1} -// CHECK: encoding: [0x62,0xa1,0x9d,0x21,0x67,0xdc] +// CHECK: encoding: [0x62,0xa1,0x1d,0x21,0x67,0xdc] vpackuswb %ymm20, %ymm28, %ymm19 {%k1} // CHECK: vpackuswb %ymm20, %ymm28, %ymm19 {%k1} {z} -// CHECK: encoding: [0x62,0xa1,0x9d,0xa1,0x67,0xdc] +// CHECK: encoding: [0x62,0xa1,0x1d,0xa1,0x67,0xdc] vpackuswb %ymm20, %ymm28, %ymm19 {%k1} {z} // CHECK: vpackuswb (%rcx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x19] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x19] vpackuswb (%rcx), %ymm28, %ymm19 // CHECK: vpackuswb 291(%rax,%r14,8), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xa1,0x9d,0x20,0x67,0x9c,0xf0,0x23,0x01,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x1d,0x20,0x67,0x9c,0xf0,0x23,0x01,0x00,0x00] vpackuswb 291(%rax,%r14,8), %ymm28, %ymm19 // CHECK: vpackuswb 4064(%rdx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x5a,0x7f] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x5a,0x7f] vpackuswb 4064(%rdx), %ymm28, %ymm19 // CHECK: vpackuswb 4096(%rdx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x9a,0x00,0x10,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x9a,0x00,0x10,0x00,0x00] vpackuswb 4096(%rdx), %ymm28, %ymm19 // CHECK: vpackuswb -4096(%rdx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x5a,0x80] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x5a,0x80] vpackuswb -4096(%rdx), %ymm28, %ymm19 // CHECK: vpackuswb -4128(%rdx), %ymm28, %ymm19 -// CHECK: encoding: [0x62,0xe1,0x9d,0x20,0x67,0x9a,0xe0,0xef,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x1d,0x20,0x67,0x9a,0xe0,0xef,0xff,0xff] vpackuswb -4128(%rdx), %ymm28, %ymm19 // CHECK: vpackssdw %xmm19, %xmm17, %xmm24 @@ -3217,75 +3217,75 @@ vpackssdw -516(%rdx){1to8}, %ymm19, %ymm25 // CHECK: vpacksswb %xmm22, %xmm25, %xmm29 -// CHECK: encoding: [0x62,0x21,0xb5,0x00,0x63,0xee] +// CHECK: encoding: [0x62,0x21,0x35,0x00,0x63,0xee] vpacksswb %xmm22, %xmm25, %xmm29 // CHECK: vpacksswb %xmm22, %xmm25, %xmm29 {%k5} -// CHECK: encoding: [0x62,0x21,0xb5,0x05,0x63,0xee] +// CHECK: encoding: [0x62,0x21,0x35,0x05,0x63,0xee] vpacksswb %xmm22, %xmm25, %xmm29 {%k5} // CHECK: vpacksswb %xmm22, %xmm25, %xmm29 {%k5} {z} -// CHECK: encoding: [0x62,0x21,0xb5,0x85,0x63,0xee] +// CHECK: encoding: [0x62,0x21,0x35,0x85,0x63,0xee] vpacksswb %xmm22, %xmm25, %xmm29 {%k5} {z} // CHECK: vpacksswb (%rcx), %xmm25, %xmm29 -// CHECK: encoding: [0x62,0x61,0xb5,0x00,0x63,0x29] +// CHECK: encoding: [0x62,0x61,0x35,0x00,0x63,0x29] vpacksswb (%rcx), %xmm25, %xmm29 // CHECK: vpacksswb 4660(%rax,%r14,8), %xmm25, %xmm29 -// CHECK: encoding: [0x62,0x21,0xb5,0x00,0x63,0xac,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0x21,0x35,0x00,0x63,0xac,0xf0,0x34,0x12,0x00,0x00] vpacksswb 4660(%rax,%r14,8), %xmm25, %xmm29 // CHECK: vpacksswb 2032(%rdx), %xmm25, %xmm29 -// CHECK: encoding: [0x62,0x61,0xb5,0x00,0x63,0x6a,0x7f] +// CHECK: encoding: [0x62,0x61,0x35,0x00,0x63,0x6a,0x7f] vpacksswb 2032(%rdx), %xmm25, %xmm29 // CHECK: vpacksswb 2048(%rdx), %xmm25, %xmm29 -// CHECK: encoding: [0x62,0x61,0xb5,0x00,0x63,0xaa,0x00,0x08,0x00,0x00] +// CHECK: encoding: [0x62,0x61,0x35,0x00,0x63,0xaa,0x00,0x08,0x00,0x00] vpacksswb 2048(%rdx), %xmm25, %xmm29 // CHECK: vpacksswb -2048(%rdx), %xmm25, %xmm29 -// CHECK: encoding: [0x62,0x61,0xb5,0x00,0x63,0x6a,0x80] +// CHECK: encoding: [0x62,0x61,0x35,0x00,0x63,0x6a,0x80] vpacksswb -2048(%rdx), %xmm25, %xmm29 // CHECK: vpacksswb -2064(%rdx), %xmm25, %xmm29 -// CHECK: encoding: [0x62,0x61,0xb5,0x00,0x63,0xaa,0xf0,0xf7,0xff,0xff] +// CHECK: encoding: [0x62,0x61,0x35,0x00,0x63,0xaa,0xf0,0xf7,0xff,0xff] vpacksswb -2064(%rdx), %xmm25, %xmm29 // CHECK: vpacksswb %ymm27, %ymm20, %ymm26 -// CHECK: encoding: [0x62,0x01,0xdd,0x20,0x63,0xd3] +// CHECK: encoding: [0x62,0x01,0x5d,0x20,0x63,0xd3] vpacksswb %ymm27, %ymm20, %ymm26 // CHECK: vpacksswb %ymm27, %ymm20, %ymm26 {%k6} -// CHECK: encoding: [0x62,0x01,0xdd,0x26,0x63,0xd3] +// CHECK: encoding: [0x62,0x01,0x5d,0x26,0x63,0xd3] vpacksswb %ymm27, %ymm20, %ymm26 {%k6} // CHECK: vpacksswb %ymm27, %ymm20, %ymm26 {%k6} {z} -// CHECK: encoding: [0x62,0x01,0xdd,0xa6,0x63,0xd3] +// CHECK: encoding: [0x62,0x01,0x5d,0xa6,0x63,0xd3] vpacksswb %ymm27, %ymm20, %ymm26 {%k6} {z} // CHECK: vpacksswb (%rcx), %ymm20, %ymm26 -// CHECK: encoding: [0x62,0x61,0xdd,0x20,0x63,0x11] +// CHECK: encoding: [0x62,0x61,0x5d,0x20,0x63,0x11] vpacksswb (%rcx), %ymm20, %ymm26 // CHECK: vpacksswb 4660(%rax,%r14,8), %ymm20, %ymm26 -// CHECK: encoding: [0x62,0x21,0xdd,0x20,0x63,0x94,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0x21,0x5d,0x20,0x63,0x94,0xf0,0x34,0x12,0x00,0x00] vpacksswb 4660(%rax,%r14,8), %ymm20, %ymm26 // CHECK: vpacksswb 4064(%rdx), %ymm20, %ymm26 -// CHECK: encoding: [0x62,0x61,0xdd,0x20,0x63,0x52,0x7f] +// CHECK: encoding: [0x62,0x61,0x5d,0x20,0x63,0x52,0x7f] vpacksswb 4064(%rdx), %ymm20, %ymm26 // CHECK: vpacksswb 4096(%rdx), %ymm20, %ymm26 -// CHECK: encoding: [0x62,0x61,0xdd,0x20,0x63,0x92,0x00,0x10,0x00,0x00] +// CHECK: encoding: [0x62,0x61,0x5d,0x20,0x63,0x92,0x00,0x10,0x00,0x00] vpacksswb 4096(%rdx), %ymm20, %ymm26 // CHECK: vpacksswb -4096(%rdx), %ymm20, %ymm26 -// CHECK: encoding: [0x62,0x61,0xdd,0x20,0x63,0x52,0x80] +// CHECK: encoding: [0x62,0x61,0x5d,0x20,0x63,0x52,0x80] vpacksswb -4096(%rdx), %ymm20, %ymm26 // CHECK: vpacksswb -4128(%rdx), %ymm20, %ymm26 -// CHECK: encoding: [0x62,0x61,0xdd,0x20,0x63,0x92,0xe0,0xef,0xff,0xff] +// CHECK: encoding: [0x62,0x61,0x5d,0x20,0x63,0x92,0xe0,0xef,0xff,0xff] vpacksswb -4128(%rdx), %ymm20, %ymm26 // CHECK: vpackusdw %xmm18, %xmm27, %xmm28 @@ -3401,75 +3401,75 @@ vpackusdw -516(%rdx){1to8}, %ymm26, %ymm23 // CHECK: vpackuswb %xmm23, %xmm20, %xmm20 -// CHECK: encoding: [0x62,0xa1,0xdd,0x00,0x67,0xe7] +// CHECK: encoding: [0x62,0xa1,0x5d,0x00,0x67,0xe7] vpackuswb %xmm23, %xmm20, %xmm20 // CHECK: vpackuswb %xmm23, %xmm20, %xmm20 {%k2} -// CHECK: encoding: [0x62,0xa1,0xdd,0x02,0x67,0xe7] +// CHECK: encoding: [0x62,0xa1,0x5d,0x02,0x67,0xe7] vpackuswb %xmm23, %xmm20, %xmm20 {%k2} // CHECK: vpackuswb %xmm23, %xmm20, %xmm20 {%k2} {z} -// CHECK: encoding: [0x62,0xa1,0xdd,0x82,0x67,0xe7] +// CHECK: encoding: [0x62,0xa1,0x5d,0x82,0x67,0xe7] vpackuswb %xmm23, %xmm20, %xmm20 {%k2} {z} // CHECK: vpackuswb (%rcx), %xmm20, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x67,0x21] +// CHECK: encoding: [0x62,0xe1,0x5d,0x00,0x67,0x21] vpackuswb (%rcx), %xmm20, %xmm20 // CHECK: vpackuswb 4660(%rax,%r14,8), %xmm20, %xmm20 -// CHECK: encoding: [0x62,0xa1,0xdd,0x00,0x67,0xa4,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x5d,0x00,0x67,0xa4,0xf0,0x34,0x12,0x00,0x00] vpackuswb 4660(%rax,%r14,8), %xmm20, %xmm20 // CHECK: vpackuswb 2032(%rdx), %xmm20, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x67,0x62,0x7f] +// CHECK: encoding: [0x62,0xe1,0x5d,0x00,0x67,0x62,0x7f] vpackuswb 2032(%rdx), %xmm20, %xmm20 // CHECK: vpackuswb 2048(%rdx), %xmm20, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x67,0xa2,0x00,0x08,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x5d,0x00,0x67,0xa2,0x00,0x08,0x00,0x00] vpackuswb 2048(%rdx), %xmm20, %xmm20 // CHECK: vpackuswb -2048(%rdx), %xmm20, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x67,0x62,0x80] +// CHECK: encoding: [0x62,0xe1,0x5d,0x00,0x67,0x62,0x80] vpackuswb -2048(%rdx), %xmm20, %xmm20 // CHECK: vpackuswb -2064(%rdx), %xmm20, %xmm20 -// CHECK: encoding: [0x62,0xe1,0xdd,0x00,0x67,0xa2,0xf0,0xf7,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x5d,0x00,0x67,0xa2,0xf0,0xf7,0xff,0xff] vpackuswb -2064(%rdx), %xmm20, %xmm20 // CHECK: vpackuswb %ymm27, %ymm19, %ymm20 -// CHECK: encoding: [0x62,0x81,0xe5,0x20,0x67,0xe3] +// CHECK: encoding: [0x62,0x81,0x65,0x20,0x67,0xe3] vpackuswb %ymm27, %ymm19, %ymm20 // CHECK: vpackuswb %ymm27, %ymm19, %ymm20 {%k5} -// CHECK: encoding: [0x62,0x81,0xe5,0x25,0x67,0xe3] +// CHECK: encoding: [0x62,0x81,0x65,0x25,0x67,0xe3] vpackuswb %ymm27, %ymm19, %ymm20 {%k5} // CHECK: vpackuswb %ymm27, %ymm19, %ymm20 {%k5} {z} -// CHECK: encoding: [0x62,0x81,0xe5,0xa5,0x67,0xe3] +// CHECK: encoding: [0x62,0x81,0x65,0xa5,0x67,0xe3] vpackuswb %ymm27, %ymm19, %ymm20 {%k5} {z} // CHECK: vpackuswb (%rcx), %ymm19, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xe5,0x20,0x67,0x21] +// CHECK: encoding: [0x62,0xe1,0x65,0x20,0x67,0x21] vpackuswb (%rcx), %ymm19, %ymm20 // CHECK: vpackuswb 4660(%rax,%r14,8), %ymm19, %ymm20 -// CHECK: encoding: [0x62,0xa1,0xe5,0x20,0x67,0xa4,0xf0,0x34,0x12,0x00,0x00] +// CHECK: encoding: [0x62,0xa1,0x65,0x20,0x67,0xa4,0xf0,0x34,0x12,0x00,0x00] vpackuswb 4660(%rax,%r14,8), %ymm19, %ymm20 // CHECK: vpackuswb 4064(%rdx), %ymm19, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xe5,0x20,0x67,0x62,0x7f] +// CHECK: encoding: [0x62,0xe1,0x65,0x20,0x67,0x62,0x7f] vpackuswb 4064(%rdx), %ymm19, %ymm20 // CHECK: vpackuswb 4096(%rdx), %ymm19, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xe5,0x20,0x67,0xa2,0x00,0x10,0x00,0x00] +// CHECK: encoding: [0x62,0xe1,0x65,0x20,0x67,0xa2,0x00,0x10,0x00,0x00] vpackuswb 4096(%rdx), %ymm19, %ymm20 // CHECK: vpackuswb -4096(%rdx), %ymm19, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xe5,0x20,0x67,0x62,0x80] +// CHECK: encoding: [0x62,0xe1,0x65,0x20,0x67,0x62,0x80] vpackuswb -4096(%rdx), %ymm19, %ymm20 // CHECK: vpackuswb -4128(%rdx), %ymm19, %ymm20 -// CHECK: encoding: [0x62,0xe1,0xe5,0x20,0x67,0xa2,0xe0,0xef,0xff,0xff] +// CHECK: encoding: [0x62,0xe1,0x65,0x20,0x67,0xa2,0xe0,0xef,0xff,0xff] vpackuswb -4128(%rdx), %ymm19, %ymm20 // CHECK: vpaddsb %xmm27, %xmm19, %xmm19 diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s index 71f8557cde1c..1af25e5412f1 100644 --- a/test/MC/X86/x86-64.s +++ b/test/MC/X86/x86-64.s @@ -281,6 +281,27 @@ inw (%dx), %ax in (%dx), %eax inl (%dx), %eax +//PR15455 + +// permitted invalid memory forms +outs (%rsi), (%dx) +// CHECK: outsw (%rsi), %dx +outsb (%rsi), (%dx) +// CHECK: outsb (%rsi), %dx +outsw (%rsi), (%dx) +// CHECK: outsw (%rsi), %dx +outsl (%rsi), (%dx) +// CHECK: outsl (%rsi), %dx + +ins (%dx), %es:(%rdi) +// CHECK: insw %dx, %es:(%rdi) +insb (%dx), %es:(%rdi) +// CHECK: insb %dx, %es:(%rdi) +insw (%dx), %es:(%rdi) +// CHECK: insw %dx, %es:(%rdi) +insl (%dx), %es:(%rdi) +// CHECK: insl %dx, %es:(%rdi) + // rdar://8431422 // CHECK: fxch %st(1) @@ -592,6 +613,31 @@ movq $12, foo(%rip) // CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] // CHECK: fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte +movl foo(%eip), %eax +// CHECK: movl foo(%eip), %eax +// CHECK: encoding: [0x67,0x8b,0x05,A,A,A,A] +// CHECK: fixup A - offset: 3, value: foo-4, kind: reloc_riprel_4byte + +movb $12, foo(%eip) +// CHECK: movb $12, foo(%eip) +// CHECK: encoding: [0x67,0xc6,0x05,A,A,A,A,0x0c] +// CHECK: fixup A - offset: 3, value: foo-5, kind: reloc_riprel_4byte + +movw $12, foo(%eip) +// CHECK: movw $12, foo(%eip) +// CHECK: encoding: [0x67,0x66,0xc7,0x05,A,A,A,A,0x0c,0x00] +// CHECK: fixup A - offset: 4, value: foo-6, kind: reloc_riprel_4byte + +movl $12, foo(%eip) +// CHECK: movl $12, foo(%eip) +// CHECK: encoding: [0x67,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] +// CHECK: fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte + +movq $12, foo(%eip) +// CHECK: movq $12, foo(%eip) +// CHECK: encoding: [0x67,0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] +// CHECK: fixup A - offset: 4, value: foo-8, kind: reloc_riprel_4byte + // CHECK: addq $-424, %rax // CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff] addq $-424, %rax @@ -607,6 +653,15 @@ movq _foo@GOTPCREL(%rip), %rax // CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load movq _foo@GOTPCREL(%rip), %r14 +// CHECK: movq _foo@GOTPCREL(%eip), %rax +// CHECK: encoding: [0x67,0x48,0x8b,0x05,A,A,A,A] +// CHECK: fixup A - offset: 4, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load +movq _foo@GOTPCREL(%eip), %rax + +// CHECK: movq _foo@GOTPCREL(%eip), %r14 +// CHECK: encoding: [0x67,0x4c,0x8b,0x35,A,A,A,A] +// CHECK: fixup A - offset: 4, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load +movq _foo@GOTPCREL(%eip), %r14 // CHECK: movq (%r13,%rax,8), %r13 // CHECK: encoding: [0x4d,0x8b,0x6c,0xc5,0x00] @@ -841,6 +896,38 @@ lock/incl 1(%rsp) // CHECK: lock // CHECK: incl 1(%rsp) + +lock addq %rsi, (%rdi) +// CHECK: lock +// CHECK: encoding: [0xf0] +// CHECK: addq %rsi, (%rdi) +// CHECK: encoding: [0x48,0x01,0x37] + +lock subq %rsi, (%rdi) +// CHECK: lock +// CHECK: encoding: [0xf0] +// CHECK: subq %rsi, (%rdi) +// CHECK: encoding: [0x48,0x29,0x37] + +lock andq %rsi, (%rdi) +// CHECK: lock +// CHECK: encoding: [0xf0] +// CHECK: andq %rsi, (%rdi) +// CHECK: encoding: [0x48,0x21,0x37] + +lock orq %rsi, (%rdi) +// CHECK: lock +// CHECK: encoding: [0xf0] +// CHECK: orq %rsi, (%rdi) +// CHECK: encoding: [0x48,0x09,0x37] + +lock xorq %rsi, (%rdi) +// CHECK: lock +// CHECK: encoding: [0xf0] +// CHECK: xorq %rsi, (%rdi) +// CHECK: encoding: [0x48,0x31,0x37] + + // rdar://8033482 rep movsl // CHECK: rep @@ -1408,3 +1495,7 @@ vmovq %xmm0, %rax // CHECK: mwaitx // CHECK: encoding: [0x0f,0x01,0xfb] mwaitx %rax, %rcx, %rbx + +// CHECK: movl %r15d, (%r15,%r15) +// CHECK: encoding: [0x47,0x89,0x3c,0x3f] +movl %r15d, (%r15,%r15) diff --git a/test/MC/X86/x86-branch-relaxation.s b/test/MC/X86/x86-branch-relaxation.s new file mode 100644 index 000000000000..870374e685fd --- /dev/null +++ b/test/MC/X86/x86-branch-relaxation.s @@ -0,0 +1,31 @@ +# RUN: llvm-mc -filetype=obj -triple=i386-unknown-unknown %s -o %t +# RUN: llvm-objdump -r -D -section .text.bar -triple i386-unknown-unknown-code16 %t | FileCheck --check-prefix=CHECK16 %s +# RUN: llvm-objdump -r -D -section .text.baz -triple i386-unknown-unknown %t | FileCheck --check-prefix=CHECK32 %s + .text + .section .text.foo,"",@progbits + + .code16 + .globl foo +foo: + nop + + .section .text.bar,"",@progbits + .globl bar16 +bar16: + jmp foo + + .section .text.baz,"",@progbits + .code32 + .globl baz32 +baz32: + jmp foo + + + + +// CHECK16-LABEL: bar16 +// CHECK16-NEXT: e9 fe ff jmp -2 <bar16+0x1> +// CHECK32-LABEL: baz32 +// CHECK32-NEXT: e9 fc ff ff ff jmp -4 <baz32+0x1> + + diff --git a/test/MC/X86/x86_errors.s b/test/MC/X86/x86_errors.s index 4a5bd977d9ff..3eaf4036605d 100644 --- a/test/MC/X86/x86_errors.s +++ b/test/MC/X86/x86_errors.s @@ -11,6 +11,10 @@ cmp $0, 0(%eax) // 32: error: register %rax is only available in 64-bit mode addl $0, 0(%rax) +// 32: error: register %xmm16 is only available in 64-bit mode +// 64: error: register %xmm16 is only available with AVX512 +vaddps %xmm16, %xmm0, %xmm0 + // 32: test.s:8:2: error: invalid instruction mnemonic 'movi' # 8 "test.s" diff --git a/test/MC/X86/x86_long_nop.s b/test/MC/X86/x86_long_nop.s index eee840c5a977..806f841e891c 100644 --- a/test/MC/X86/x86_long_nop.s +++ b/test/MC/X86/x86_long_nop.s @@ -2,7 +2,8 @@ # RUN: llvm-mc -filetype=obj -arch=x86 -triple=i686-pc-linux-gnu %s | llvm-objdump -d -no-show-raw-insn - | FileCheck %s # RUN: llvm-mc -filetype=obj -arch=x86 -triple=x86_64-apple-darwin10.0 %s | llvm-objdump -d -no-show-raw-insn - | FileCheck %s # RUN: llvm-mc -filetype=obj -arch=x86 -triple=i686-apple-darwin8 %s | llvm-objdump -d -no-show-raw-insn - | FileCheck %s -# RUN: llvm-mc -filetype=obj -arch=x86 -triple=i686-pc-linux-gnu -mcpu=slm %s | llvm-objdump -d -no-show-raw-insn - | FileCheck --check-prefix=SLM %s +# RUN: llvm-mc -filetype=obj -arch=x86 -triple=i686-pc-linux-gnu -mcpu=slm %s | llvm-objdump -d -no-show-raw-insn - | FileCheck --check-prefix=LNOP7 %s +# RUN: llvm-mc -filetype=obj -arch=x86 -triple=i686-pc-linux-gnu -mcpu=lakemont %s | llvm-objdump -d -no-show-raw-insn - | FileCheck --check-prefix=LNOP7 %s # Ensure alignment directives also emit sequences of 15-byte NOPs on processors # capable of using long NOPs. @@ -15,11 +16,12 @@ inc %eax # CHECK-NEXT: 1f: nop # CHECK-NEXT: 20: inc -# On Silvermont we emit only 7 byte NOPs since longer NOPs are not profitable -# SLM: 0: inc -# SLM-NEXT: 1: nop -# SLM-NEXT: 8: nop -# SLM-NEXT: f: nop -# SLM-NEXT: 16: nop -# SLM-NEXT: 1d: nop -# SLM-NEXT: 20: inc +# On Silvermont and Lakemont we emit only 7 byte NOPs since longer NOPs +# are not profitable. +# LNOP7: 0: inc +# LNOP7-NEXT: 1: nop +# LNOP7-NEXT: 8: nop +# LNOP7-NEXT: f: nop +# LNOP7-NEXT: 16: nop +# LNOP7-NEXT: 1d: nop +# LNOP7-NEXT: 20: inc |
