Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: tests/validator/rewrite_nontemporals.c

Issue 1863433002: x86 validator: Implement rewriting "movntq" to "movq" on x86-64 (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/trusted/validator_ragel/dfa_validate_common.c ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 The Native Client Authors. All rights reserved. 2 * Copyright 2016 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "native_client/src/include/nacl_assert.h" 9 #include "native_client/src/include/nacl_assert.h"
10 10
(...skipping 22 matching lines...) Expand all
33 asm("movdqa g_src " MEM_SUFFIX ", %%xmm0\n" 33 asm("movdqa g_src " MEM_SUFFIX ", %%xmm0\n"
34 "movntdq %%xmm0, g_dest " MEM_SUFFIX "\n" : : : "xmm0"); 34 "movntdq %%xmm0, g_dest " MEM_SUFFIX "\n" : : : "xmm0");
35 ASSERT_EQ(memcmp(g_dest, g_src, 16), 0); 35 ASSERT_EQ(memcmp(g_dest, g_src, 16), 0);
36 36
37 /* Test prefetchnta. This has no side effects that we can test for. */ 37 /* Test prefetchnta. This has no side effects that we can test for. */
38 asm("prefetchnta g_dest " MEM_SUFFIX "\n" :); 38 asm("prefetchnta g_dest " MEM_SUFFIX "\n" :);
39 39
40 /* This compiles to prefetchnta on x86. */ 40 /* This compiles to prefetchnta on x86. */
41 __builtin_prefetch(&g_dest, /* rw= */ 0, /* locality= */ 0); 41 __builtin_prefetch(&g_dest, /* rw= */ 0, /* locality= */ 0);
42 42
43 #if defined(__i386__)
44 /* Test movntq. */ 43 /* Test movntq. */
45 reset_test_vars(); 44 reset_test_vars();
46 asm("movq g_src, %%mm0\n" 45 asm("movq g_src" MEM_SUFFIX ", %%mm0\n"
47 "movntq %%mm0, g_dest\n" : : : "mm0"); 46 "movntq %%mm0, g_dest" MEM_SUFFIX "\n" : : : "mm0");
48 ASSERT_EQ(memcmp(g_dest, g_src, 8), 0); 47 ASSERT_EQ(memcmp(g_dest, g_src, 8), 0);
49 #endif
50 48
51 #if defined(__x86_64__) 49 #if defined(__x86_64__)
52 /* Test movntps. */ 50 /* Test movntps. */
53 reset_test_vars(); 51 reset_test_vars();
54 asm("movdqa g_src(%%r15), %%xmm0\n" 52 asm("movdqa g_src(%%r15), %%xmm0\n"
55 "movntps %%xmm0, g_dest(%%r15)\n" : : : "xmm0"); 53 "movntps %%xmm0, g_dest(%%r15)\n" : : : "xmm0");
56 ASSERT_EQ(memcmp(g_dest, g_src, 16), 0); 54 ASSERT_EQ(memcmp(g_dest, g_src, 16), 0);
57 55
58 /* Test movnti, using 32-bit operand. */ 56 /* Test movnti, using 32-bit operand. */
59 reset_test_vars(); 57 reset_test_vars();
(...skipping 23 matching lines...) Expand all
83 asm("mov g_src(%%r15), %%rax\n" 81 asm("mov g_src(%%r15), %%rax\n"
84 "movnti %%rax, g_dest(%%rip)\n" : : : "rax"); 82 "movnti %%rax, g_dest(%%rip)\n" : : : "rax");
85 ASSERT_EQ(memcmp(g_dest, g_src, 8), 0); 83 ASSERT_EQ(memcmp(g_dest, g_src, 8), 0);
86 84
87 /* Test prefetchnta using RIP-relative addressing. */ 85 /* Test prefetchnta using RIP-relative addressing. */
88 asm("prefetchnta g_dest(%rip)\n"); 86 asm("prefetchnta g_dest(%rip)\n");
89 #endif 87 #endif
90 88
91 return 0; 89 return 0;
92 } 90 }
OLDNEW
« no previous file with comments | « src/trusted/validator_ragel/dfa_validate_common.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698