Index: src/trusted/validator/x86/testing/tf/converted/64/maskmov_test.tf |
diff --git a/src/trusted/validator/x86/testing/tf/converted/64/maskmov_test.tf b/src/trusted/validator/x86/testing/tf/converted/64/maskmov_test.tf |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c168ace17a9a92e7e0915e6d38f197693ebffb93 |
--- /dev/null |
+++ b/src/trusted/validator/x86/testing/tf/converted/64/maskmov_test.tf |
@@ -0,0 +1,33 @@ |
+BITS: 64 |
+OUTCOME: invalid |
+ |
+# Show that we handle the expected sandboxing instructions for maskmov. |
+ |
+# Case one: correct masking of segment DS:%rsi |
+# 0000000000000000: 89 ff mov %edi, %edi |
+# 0000000000000002: 49 8d 3c 3f lea %rdi, [%r15+%rdi*1] |
+# 0000000000000006: 0f f7 d1 maskmovq %mmx2, %mmx1 |
+asm: mov %edi,%edi |
+hex: 89 ff |
+ |
+asm: lea (%r15,%rdi,1),%rdi |
+hex: 49 8d 3c 3f |
+ |
+asm: maskmovq %mm1,%mm2 |
+hex: 0f f7 d1 |
+ |
+# Case two: incorrect masking of segment DS:%rsi |
+# 0000000000000009: 01 ff add %edi, %edi |
+# 000000000000000b: 49 8d 3c 3f lea %rdi, [%r15+%rdi*1] |
+# 000000000000000f: 0f f7 d1 maskmovq %mmx2, %mmx1 |
+asm: add %edi,%edi |
+hex: 01 ff |
+ |
+asm: lea (%r15,%rdi,1),%rdi |
+hex: 49 8d 3c 3f |
+ |
+asm: maskmovq %mm1,%mm2 |
+hex: 0f f7 d1 |
+nc_out: ERROR: Segment memory reference not allowed |
+ |
+ |