1 /* Test that the correct data prefetch instructions are generated for i386
2 variants that use 3DNow! prefetchw or SSE prefetch instructions with
3 locality hints. */
4
5 /* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
6
7 extern void exit (int);
8
9 char *msg = "howdy there";
10
foo(char * p)11 void foo (char *p)
12 {
13 __builtin_prefetch (p, 0, 0);
14 __builtin_prefetch (p, 0, 1);
15 __builtin_prefetch (p, 0, 2);
16 __builtin_prefetch (p, 0, 3);
17 __builtin_prefetch (p, 1, 0);
18 __builtin_prefetch (p, 1, 1);
19 __builtin_prefetch (p, 1, 2);
20 __builtin_prefetch (p, 1, 3);
21 }
22
main()23 int main ()
24 {
25 foo (msg);
26 exit (0);
27 }
28
29 /* { dg-final { scan-assembler "prefetchw" } } */
30 /* { dg-final { scan-assembler "prefetchnta" } } */
31 /* { dg-final { scan-assembler "prefetcht" } } */
32