~bkerensa/ubuntu/raring/valgrind/merge-from-deb

« back to all changes in this revision

Viewing changes to memcheck/tests/x86/xor-undef-x86.c

  • Committer: Bazaar Package Importer
  • Author(s): Andrés Roldán
  • Date: 2008-06-13 02:31:40 UTC
  • mto: (1.4.1 upstream) (2.2.1 squeeze)
  • mto: This revision was merged to the branch mainline in revision 24.
  • Revision ID: james.westby@ubuntu.com-20080613023140-iwk33rz9rhvfkr96
Import upstream version 3.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#include <stdio.h>
 
3
#include <stdlib.h>
 
4
#include <assert.h>
 
5
 
 
6
#define JZ_NEXT ".byte 0x74,0x00"  /* jz the-next-insn */
 
7
 
 
8
int main ( void )
 
9
{
 
10
   char* junk = malloc(48);
 
11
   assert(junk);
 
12
 
 
13
 
 
14
   /* --- INTEGER --- */
 
15
 
 
16
   printf("\nComplain int32\n");
 
17
   __asm__ __volatile__(
 
18
      "movl   0(%0), %%eax\n\t"
 
19
      "movl   8(%0), %%edi\n\t"
 
20
      "xorl   %%edi, %%eax\n\t"
 
21
      JZ_NEXT
 
22
      : : "r"(junk) : "edi", "eax", "cc"
 
23
   );
 
24
 
 
25
   printf("\nNo complain int32\n");
 
26
   __asm__ __volatile__(
 
27
      "movl   0(%0), %%eax\n\t"
 
28
      "movl   8(%0), %%edi\n\t"
 
29
      "xorl   %%eax, %%eax\n\t"
 
30
      JZ_NEXT
 
31
      : : "r"(junk) : "edi", "eax", "cc"
 
32
   );
 
33
 
 
34
 
 
35
   /* --- MMX --- */
 
36
 
 
37
   printf("\nComplain mmx\n");
 
38
   __asm__ __volatile__(
 
39
      "emms\n\t"
 
40
      "movq   0(%0), %%mm0\n\t"
 
41
      "movq   8(%0), %%mm7\n\t"
 
42
      "pxor   %%mm7, %%mm0\n\t"
 
43
      "movq   %%mm0, 16(%0)\n\t"
 
44
      "movl   16(%0), %%esi\n\t"
 
45
      "addl   20(%0), %%esi\n\t"
 
46
      JZ_NEXT
 
47
      : : "r"(junk) : "esi", "mm7", "mm0", "cc", "memory"
 
48
   );
 
49
 
 
50
   printf("\nNo complain mmx\n");
 
51
   __asm__ __volatile__(
 
52
      "emms\n\t"
 
53
      "movq   0(%0), %%mm0\n\t"
 
54
      "movq   8(%0), %%mm7\n\t"
 
55
      "pxor   %%mm0, %%mm0\n\t"
 
56
      "movq   %%mm0, 16(%0)\n\t"
 
57
      "movl   16(%0), %%esi\n\t"
 
58
      "addl   20(%0), %%esi\n\t"
 
59
      JZ_NEXT
 
60
      : : "r"(junk) : "esi", "mm7", "mm0", "cc", "memory"
 
61
   );
 
62
 
 
63
 
 
64
   /* --- SSE1 --- */
 
65
 
 
66
   printf("\nComplain sse xorps\n");
 
67
   __asm__ __volatile__(
 
68
      "movups   0(%0),  %%xmm0\n\t"
 
69
      "movups   16(%0), %%xmm7\n\t"
 
70
      "xorps    %%xmm7, %%xmm0\n\t"
 
71
      "movups   %%xmm0, 32(%0)\n\t"
 
72
      "movl 32(%0), %%esi\n\t"
 
73
      "addl 36(%0), %%esi\n\t"
 
74
      "addl 40(%0), %%esi\n\t"
 
75
      "addl 44(%0), %%esi\n\t"
 
76
      JZ_NEXT
 
77
      : : "r"(junk) : "esi", "xmm7", "xmm0", "cc", "memory"
 
78
   );
 
79
 
 
80
   printf("\nNo complain sse xorps\n");
 
81
   __asm__ __volatile__(
 
82
      "movups   0(%0),  %%xmm0\n\t"
 
83
      "movups   16(%0), %%xmm7\n\t"
 
84
      "xorps    %%xmm0, %%xmm0\n\t"
 
85
      "movups   %%xmm0, 32(%0)\n\t"
 
86
      "movl 32(%0), %%esi\n\t"
 
87
      "addl 36(%0), %%esi\n\t"
 
88
      "addl 40(%0), %%esi\n\t"
 
89
      "addl 44(%0), %%esi\n\t"
 
90
      JZ_NEXT
 
91
      : : "r"(junk) : "esi", "xmm7", "xmm0", "cc", "memory"
 
92
   );
 
93
 
 
94
 
 
95
   /* --- SSE2 --- */
 
96
#if 0
 
97
   printf("\nComplain sse2 pxor\n");
 
98
   __asm__ __volatile__(
 
99
      "movups   0(%0),  %%xmm0\n\t"
 
100
      "movups   16(%0), %%xmm7\n\t"
 
101
      "pxor     %%xmm7, %%xmm0\n\t"
 
102
      "movups   %%xmm0, 32(%0)\n\t"
 
103
      "movl 32(%0), %%esi\n\t"
 
104
      "addl 36(%0), %%esi\n\t"
 
105
      "addl 40(%0), %%esi\n\t"
 
106
      "addl 44(%0), %%esi\n\t"
 
107
      JZ_NEXT
 
108
      : : "r"(junk) : "esi", "xmm7", "xmm0", "cc", "memory"
 
109
   );
 
110
 
 
111
   printf("\nNo complain sse2 pxor\n");
 
112
   __asm__ __volatile__(
 
113
      "movups   0(%0),  %%xmm0\n\t"
 
114
      "movups   16(%0), %%xmm7\n\t"
 
115
      "pxor     %%xmm0, %%xmm0\n\t"
 
116
      "movups   %%xmm0, 32(%0)\n\t"
 
117
      "movl 32(%0), %%esi\n\t"
 
118
      "addl 36(%0), %%esi\n\t"
 
119
      "addl 40(%0), %%esi\n\t"
 
120
      "addl 44(%0), %%esi\n\t"
 
121
      JZ_NEXT
 
122
      : : "r"(junk) : "esi", "xmm7", "xmm0", "cc", "memory"
 
123
   );
 
124
 
 
125
 
 
126
   printf("\nComplain sse2 xorpd\n");
 
127
   __asm__ __volatile__(
 
128
      "movups   0(%0),  %%xmm0\n\t"
 
129
      "movups   16(%0), %%xmm7\n\t"
 
130
      "xorpd    %%xmm7, %%xmm0\n\t"
 
131
      "movups   %%xmm0, 32(%0)\n\t"
 
132
      "movl 32(%0), %%esi\n\t"
 
133
      "addl 36(%0), %%esi\n\t"
 
134
      "addl 40(%0), %%esi\n\t"
 
135
      "addl 44(%0), %%esi\n\t"
 
136
      JZ_NEXT
 
137
      : : "r"(junk) : "esi", "xmm7", "xmm0", "cc", "memory"
 
138
   );
 
139
 
 
140
   printf("\nNo complain sse2 xorpd\n");
 
141
   __asm__ __volatile__(
 
142
      "movups   0(%0),  %%xmm0\n\t"
 
143
      "movups   16(%0), %%xmm7\n\t"
 
144
      "xorpd    %%xmm0, %%xmm0\n\t"
 
145
      "movups   %%xmm0, 32(%0)\n\t"
 
146
      "movl 32(%0), %%esi\n\t"
 
147
      "addl 36(%0), %%esi\n\t"
 
148
      "addl 40(%0), %%esi\n\t"
 
149
      "addl 44(%0), %%esi\n\t"
 
150
      JZ_NEXT
 
151
      : : "r"(junk) : "esi", "xmm7", "xmm0", "cc", "memory"
 
152
   );
 
153
#endif
 
154
 
 
155
   free(junk);
 
156
   return 0;
 
157
}