| Index: src/trusted/validator_x86/testdata/64/sse.tf
|
| diff --git a/src/trusted/validator_x86/testdata/64/sse.tf b/src/trusted/validator_x86/testdata/64/sse.tf
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b49f54a89f830d187e485eacef62759e04ffa2cb
|
| --- /dev/null
|
| +++ b/src/trusted/validator_x86/testdata/64/sse.tf
|
| @@ -0,0 +1,319 @@
|
| +BITS: 64
|
| +OUTCOME: invalid
|
| +
|
| +# Test SSE instructions
|
| +# SSE
|
| +# addps %xmm0,%xmm1
|
| +asm: addps %xmm0,%xmm1
|
| +hex: 0f 58 c8
|
| +
|
| +# subss %xmm0,%xmm1
|
| +asm: subss %xmm0,%xmm1
|
| +hex: f3 0f 5c c8
|
| +
|
| +# pmaxsw %xmm0,%xmm1
|
| +asm: pmaxsw %xmm0,%xmm1
|
| +hex: 66 0f ee c8
|
| +
|
| +# pminub %xmm0,%xmm1
|
| +asm: pminub %xmm0,%xmm1
|
| +hex: 66 0f da c8
|
| +
|
| +# pinsrw $0x1,%eax,%xmm0
|
| +asm: pinsrw $0x1,%eax,%xmm0
|
| +hex: 66 0f c4 c0 01
|
| +
|
| +# pmovmskb %xmm0,%eax
|
| +asm: pmovmskb %xmm0,%eax
|
| +hex: 66 0f d7 c0
|
| +
|
| +# pmulhuw %xmm0,%xmm1
|
| +asm: pmulhuw %xmm0,%xmm1
|
| +hex: 66 0f e4 c8
|
| +
|
| +# comiss %xmm0,%xmm1
|
| +asm: comiss %xmm0,%xmm1
|
| +hex: 0f 2f c8
|
| +
|
| +
|
| +# Nop for bundle alignment.
|
| +asm: nop
|
| +hex: 90
|
| +
|
| +
|
| +# cvtps2pi %xmm1,%mm0
|
| +asm: cvtps2pi %xmm1,%mm0
|
| +hex: 0f 2d c1
|
| +
|
| +# ldmxcsr (%rsp)
|
| +asm: ldmxcsr (%rsp)
|
| +hex: 0f ae 14 24
|
| +
|
| +# stmxcsr (%rsp)
|
| +asm: stmxcsr (%rsp)
|
| +hex: 0f ae 1c 24
|
| +
|
| +# movaps %xmm0,%xmm1
|
| +asm: movaps %xmm0,%xmm1
|
| +hex: 0f 28 c8
|
| +
|
| +# movmskps %xmm1,%eax
|
| +asm: movmskps %xmm1,%eax
|
| +hex: 0f 50 c1
|
| +
|
| +# movntps %xmm0,(%rsp)
|
| +asm: movntps %xmm0,(%rsp)
|
| +hex: 0f 2b 04 24
|
| +
|
| +# shufps $0x1,%xmm0,%xmm1
|
| +asm: shufps $0x1,%xmm0,%xmm1
|
| +hex: 0f c6 c8 01
|
| +
|
| +# unpcklps %xmm0,%xmm1
|
| +asm: unpcklps %xmm0,%xmm1
|
| +hex: 0f 14 c8
|
| +
|
| +# sfence
|
| +asm: sfence
|
| +hex: 0f ae f8
|
| +
|
| +# prefetcht2 (%rsp)
|
| +asm: prefetcht2 (%rsp)
|
| +hex: 0f 18 1c 24
|
| +nc_out: [at +1] Bad basic block alignment.
|
| +
|
| +
|
| +# SSE2
|
| +# addpd %xmm0,%xmm1
|
| +asm: addpd %xmm0,%xmm1
|
| +hex: 66 0f 58 c8
|
| +
|
| +# maxsd %xmm0,%xmm1
|
| +asm: maxsd %xmm0,%xmm1
|
| +hex: f2 0f 5f c8
|
| +
|
| +# cmpeqpd %xmm0,%xmm1
|
| +asm: cmpeqpd %xmm0,%xmm1
|
| +hex: 66 0f c2 c8 00
|
| +
|
| +# comisd %xmm0,%xmm1
|
| +asm: comisd %xmm0,%xmm1
|
| +hex: 66 0f 2f c8
|
| +
|
| +# cvtpd2dq %xmm0,%xmm1
|
| +asm: cvtpd2dq %xmm0,%xmm1
|
| +hex: f2 0f e6 c8
|
| +
|
| +# movapd %xmm0,%xmm1
|
| +asm: movapd %xmm0,%xmm1
|
| +hex: 66 0f 28 c8
|
| +
|
| +# movmskpd %xmm0,%eax
|
| +asm: movmskpd %xmm0,%eax
|
| +hex: 66 0f 50 c0
|
| +
|
| +# shufpd $0x1,%xmm0,%xmm1
|
| +asm: shufpd $0x1,%xmm0,%xmm1
|
| +hex: 66 0f c6 c8 01
|
| +
|
| +# unpckhpd %xmm0,%xmm1
|
| +asm: unpckhpd %xmm0,%xmm1
|
| +hex: 66 0f 15 c8
|
| +
|
| +# movdq2q %xmm0,%mm1
|
| +asm: movdq2q %xmm0,%mm1
|
| +hex: f2 0f d6 c8
|
| +
|
| +# movdqa %xmm0,%xmm1
|
| +asm: movdqa %xmm0,%xmm1
|
| +hex: 66 0f 6f c8
|
| +
|
| +# paddq %xmm0,%xmm1
|
| +asm: paddq %xmm0,%xmm1
|
| +hex: 66 0f d4 c8
|
| +
|
| +# psrldq $0x1,%xmm0
|
| +asm: psrldq $0x1,%xmm0
|
| +hex: 66 0f 73 d8 01
|
| +
|
| +# pshufd $0x1,%xmm0,%xmm1
|
| +asm: pshufd $0x1,%xmm0,%xmm1
|
| +hex: 66 0f 70 c8 01
|
| +
|
| +
|
| +# Nop for bundle alignment.
|
| +asm: nop
|
| +hex: 90
|
| +
|
| +
|
| +# punpcklqdq %xmm0,%xmm1
|
| +asm: punpcklqdq %xmm0,%xmm1
|
| +hex: 66 0f 6c c8
|
| +
|
| +
|
| +# SSE 3
|
| +# addsubpd %xmm0,%xmm1
|
| +asm: addsubpd %xmm0,%xmm1
|
| +hex: 66 0f d0 c8
|
| +
|
| +# haddps %xmm0,%xmm1
|
| +asm: haddps %xmm0,%xmm1
|
| +hex: f2 0f 7c c8
|
| +
|
| +# movshdup %xmm0,%xmm1
|
| +asm: movshdup %xmm0,%xmm1
|
| +hex: f3 0f 16 c8
|
| +
|
| +
|
| +# SSSE3
|
| +# psignb %xmm0,%xmm1
|
| +asm: psignb %xmm0,%xmm1
|
| +hex: 66 0f 38 08 c8
|
| +
|
| +# pshufb %xmm0,%xmm1
|
| +asm: pshufb %xmm0,%xmm1
|
| +hex: 66 0f 38 00 c8
|
| +
|
| +# pmaddubsw %xmm0,%xmm1
|
| +asm: pmaddubsw %xmm0,%xmm1
|
| +hex: 66 0f 38 04 c8
|
| +
|
| +# phaddd %xmm0,%xmm1
|
| +asm: phaddd %xmm0,%xmm1
|
| +hex: 66 0f 38 02 c8
|
| +nc_out: [at +1] Bad basic block alignment.
|
| +
|
| +# palignr $0x1,%xmm0,%xmm1
|
| +asm: palignr $0x1,%xmm0,%xmm1
|
| +hex: 66 0f 3a 0f c8 01
|
| +
|
| +
|
| +# SSE41
|
| +# mpsadbw $0x1,%xmm0,%xmm1
|
| +asm: mpsadbw $0x1,%xmm0,%xmm1
|
| +hex: 66 0f 3a 42 c8 01
|
| +
|
| +# phminposuw %xmm0,%xmm1
|
| +asm: phminposuw %xmm0,%xmm1
|
| +hex: 66 0f 38 41 c8
|
| +
|
| +# dppd $0x1,%xmm0,%xmm1
|
| +asm: dppd $0x1,%xmm0,%xmm1
|
| +hex: 66 0f 3a 41 c8 01
|
| +
|
| +# blendvpd %xmm0,%xmm0,%xmm1
|
| +asm: blendvpd %xmm0,%xmm0,%xmm1
|
| +hex: 66 0f 38 15 c8
|
| +
|
| +# pmaxuw %xmm0,%xmm1
|
| +asm: pmaxuw %xmm0,%xmm1
|
| +hex: 66 0f 38 3e c8
|
| +
|
| +# insertps $0x1,%xmm0,%xmm1
|
| +asm: insertps $0x1,%xmm0,%xmm1
|
| +hex: 66 0f 3a 21 c8 01
|
| +
|
| +# pmovsxwq %xmm0,%xmm1
|
| +asm: pmovsxwq %xmm0,%xmm1
|
| +hex: 66 0f 38 24 c8
|
| +
|
| +# ptest %xmm0,%xmm1
|
| +asm: ptest %xmm0,%xmm1
|
| +hex: 66 0f 38 17 c8
|
| +
|
| +# packusdw %xmm0,%xmm1
|
| +asm: packusdw %xmm0,%xmm1
|
| +hex: 66 0f 38 2b c8
|
| +
|
| +# movntdqa (%rsp),%xmm0
|
| +asm: movntdqa (%rsp),%xmm0
|
| +hex: 66 0f 38 2a 04 24
|
| +
|
| +
|
| +# SSE4a
|
| +# popcnt %rax,%rax
|
| +asm: popcnt %rax,%rax
|
| +hex: f3 48 0f b8 c0
|
| +
|
| +# lzcnt %rax,%rax
|
| +asm: lzcnt %rax,%rax
|
| +hex: f3 48 0f bd c0
|
| +
|
| +# extrq $0x1,$0x2,%xmm0
|
| +asm: extrq $0x1,$0x2,%xmm0
|
| +hex: 66 0f 78 c0 02 01
|
| +nc_out: ERROR: This instruction has been marked illegal by Native Client
|
| +
|
| +# movntss %xmm0,(%rsp)
|
| +asm: movntss %xmm0,(%rsp)
|
| +hex: f3 0f 2b 04 24
|
| +
|
| +
|
| +# SSE42
|
| +# crc32b %al,%rax
|
| +asm: crc32b %al,%rax
|
| +hex: f2 48 0f 38 f0 c0
|
| +
|
| +
|
| +# Nops for bundle alignment.
|
| +asm: nop; nop; nop; nop; nop
|
| +hex: 90 90 90 90 90
|
| +
|
| +
|
| +# pcmpistri $0x1,%xmm0,%xmm1
|
| +asm: pcmpistri $0x1,%xmm0,%xmm1
|
| +hex: 66 0f 3a 63 c8 01
|
| +
|
| +# pcmpgtq %xmm0,%xmm1
|
| +asm: pcmpgtq %xmm0,%xmm1
|
| +hex: 66 0f 38 37 c8
|
| +
|
| +
|
| +# AVX FMA
|
| +# vfmaddpd %xmm0,%xmm1,%xmm2,%xmm3
|
| +asm: vfmaddpd %xmm0,%xmm1,%xmm2,%xmm3
|
| +hex: c4 e3 f1 69 d8 20
|
| +nc_out: ERROR: This instruction has been marked illegal by Native Client
|
| +nc_out: ERROR: Opcode sequence doesn't define a valid x86 instruction
|
| +
|
| +asm: nop; nop; nop
|
| +hex: 90 90 90
|
| +
|
| +
|
| +# AES
|
| +# aesenc %xmm0,%xmm1
|
| +asm: aesenc %xmm0,%xmm1
|
| +hex: 66 0f 38 dc c8
|
| +nc_out: ERROR: This instruction has been marked illegal by Native Client
|
| +nc_out: ERROR: Opcode sequence doesn't define a valid x86 instruction
|
| +nc_out: [at +4] ERROR: This instruction has been marked illegal by Native Client
|
| +nc_out: [at +4] ERROR: Illegal assignment to RSP
|
| +nc_out: [at +4] ERROR: Illegal change to register RBP
|
| +
|
| +asm: nop; nop; nop
|
| +hex: 90 90 90
|
| +
|
| +# aeskeygenassist $0x1,%xmm0,%xmm1
|
| +asm: aeskeygenassist $0x1,%xmm0,%xmm1
|
| +hex: 66 0f 3a df c8 01
|
| +nc_out: ERROR: Opcode sequence doesn't define a valid x86 instruction
|
| +nc_out: ERROR: Use of DATA16 (66) prefix for instruction not allowed by Native Client
|
| +nc_out: [at +4] ERROR: This instruction has been marked illegal by Native Client
|
| +nc_out: [at +4] ERROR: Illegal assignment to RSP
|
| +nc_out: [at +4] ERROR: Illegal change to register RBP
|
| +
|
| +asm: nop; nop
|
| +hex: 90 90
|
| +
|
| +# aesimc %xmm0,%xmm1
|
| +asm: aesimc %xmm0,%xmm1
|
| +hex: 66 0f 38 db c8
|
| +nc_out: ERROR: This instruction has been marked illegal by Native Client
|
| +nc_out: ERROR: Opcode sequence doesn't define a valid x86 instruction
|
| +nc_out: [at +4] ERROR: This instruction has been marked illegal by Native Client
|
| +nc_out: [at +4] ERROR: Illegal assignment to RSP
|
| +nc_out: [at +4] ERROR: Illegal change to register RBP
|
| +
|
| +asm: nop; nop; nop
|
| +hex: 90 90 90
|
| +
|
|
|