~vcs-imports/qemu/git

« back to all changes in this revision

Viewing changes to target-i386/ops_sse_header.h

  • Committer: pbrook
  • Date: 2007-03-04 00:52:16 UTC
  • Revision ID: git-v1:7a2d6d9650ed16b2cdb0b4876fe9efce7ef8ea6d
64bit->win32 cross build fix.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2467 c046a42c-6fe2-441c-8c8c-71466251a162

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 *  MMX/3DNow!/SSE/SSE2/SSE3/SSSE3/SSE4/PNI support
3
 
 *
4
 
 *  Copyright (c) 2005 Fabrice Bellard
5
 
 *
6
 
 * This library is free software; you can redistribute it and/or
7
 
 * modify it under the terms of the GNU Lesser General Public
8
 
 * License as published by the Free Software Foundation; either
9
 
 * version 2 of the License, or (at your option) any later version.
10
 
 *
11
 
 * This library is distributed in the hope that it will be useful,
12
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 
 * Lesser General Public License for more details.
15
 
 *
16
 
 * You should have received a copy of the GNU Lesser General Public
17
 
 * License along with this library; if not, write to the Free Software
18
 
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
 
 */
20
 
#if SHIFT == 0
21
 
#define Reg MMXReg
22
 
#define SUFFIX _mmx
23
 
#else
24
 
#define Reg XMMReg
25
 
#define SUFFIX _xmm
26
 
#endif
27
 
 
28
 
DEF_HELPER(void, glue(helper_psrlw, SUFFIX), (Reg *d, Reg *s))
29
 
DEF_HELPER(void, glue(helper_psraw, SUFFIX), (Reg *d, Reg *s))
30
 
DEF_HELPER(void, glue(helper_psllw, SUFFIX), (Reg *d, Reg *s))
31
 
DEF_HELPER(void, glue(helper_psrld, SUFFIX), (Reg *d, Reg *s))
32
 
DEF_HELPER(void, glue(helper_psrad, SUFFIX), (Reg *d, Reg *s))
33
 
DEF_HELPER(void, glue(helper_pslld, SUFFIX), (Reg *d, Reg *s))
34
 
DEF_HELPER(void, glue(helper_psrlq, SUFFIX), (Reg *d, Reg *s))
35
 
DEF_HELPER(void, glue(helper_psllq, SUFFIX), (Reg *d, Reg *s))
36
 
 
37
 
#if SHIFT == 1
38
 
DEF_HELPER(void, glue(helper_psrldq, SUFFIX), (Reg *d, Reg *s))
39
 
DEF_HELPER(void, glue(helper_pslldq, SUFFIX), (Reg *d, Reg *s))
40
 
#endif
41
 
 
42
 
#define SSE_HELPER_B(name, F)\
43
 
    DEF_HELPER(void, glue(name, SUFFIX), (Reg *d, Reg *s))
44
 
 
45
 
#define SSE_HELPER_W(name, F)\
46
 
    DEF_HELPER(void, glue(name, SUFFIX), (Reg *d, Reg *s))
47
 
 
48
 
#define SSE_HELPER_L(name, F)\
49
 
    DEF_HELPER(void, glue(name, SUFFIX), (Reg *d, Reg *s))
50
 
 
51
 
#define SSE_HELPER_Q(name, F)\
52
 
    DEF_HELPER(void, glue(name, SUFFIX), (Reg *d, Reg *s))
53
 
 
54
 
SSE_HELPER_B(helper_paddb, FADD)
55
 
SSE_HELPER_W(helper_paddw, FADD)
56
 
SSE_HELPER_L(helper_paddl, FADD)
57
 
SSE_HELPER_Q(helper_paddq, FADD)
58
 
 
59
 
SSE_HELPER_B(helper_psubb, FSUB)
60
 
SSE_HELPER_W(helper_psubw, FSUB)
61
 
SSE_HELPER_L(helper_psubl, FSUB)
62
 
SSE_HELPER_Q(helper_psubq, FSUB)
63
 
 
64
 
SSE_HELPER_B(helper_paddusb, FADDUB)
65
 
SSE_HELPER_B(helper_paddsb, FADDSB)
66
 
SSE_HELPER_B(helper_psubusb, FSUBUB)
67
 
SSE_HELPER_B(helper_psubsb, FSUBSB)
68
 
 
69
 
SSE_HELPER_W(helper_paddusw, FADDUW)
70
 
SSE_HELPER_W(helper_paddsw, FADDSW)
71
 
SSE_HELPER_W(helper_psubusw, FSUBUW)
72
 
SSE_HELPER_W(helper_psubsw, FSUBSW)
73
 
 
74
 
SSE_HELPER_B(helper_pminub, FMINUB)
75
 
SSE_HELPER_B(helper_pmaxub, FMAXUB)
76
 
 
77
 
SSE_HELPER_W(helper_pminsw, FMINSW)
78
 
SSE_HELPER_W(helper_pmaxsw, FMAXSW)
79
 
 
80
 
SSE_HELPER_Q(helper_pand, FAND)
81
 
SSE_HELPER_Q(helper_pandn, FANDN)
82
 
SSE_HELPER_Q(helper_por, FOR)
83
 
SSE_HELPER_Q(helper_pxor, FXOR)
84
 
 
85
 
SSE_HELPER_B(helper_pcmpgtb, FCMPGTB)
86
 
SSE_HELPER_W(helper_pcmpgtw, FCMPGTW)
87
 
SSE_HELPER_L(helper_pcmpgtl, FCMPGTL)
88
 
 
89
 
SSE_HELPER_B(helper_pcmpeqb, FCMPEQ)
90
 
SSE_HELPER_W(helper_pcmpeqw, FCMPEQ)
91
 
SSE_HELPER_L(helper_pcmpeql, FCMPEQ)
92
 
 
93
 
SSE_HELPER_W(helper_pmullw, FMULLW)
94
 
#if SHIFT == 0
95
 
SSE_HELPER_W(helper_pmulhrw, FMULHRW)
96
 
#endif
97
 
SSE_HELPER_W(helper_pmulhuw, FMULHUW)
98
 
SSE_HELPER_W(helper_pmulhw, FMULHW)
99
 
 
100
 
SSE_HELPER_B(helper_pavgb, FAVG)
101
 
SSE_HELPER_W(helper_pavgw, FAVG)
102
 
 
103
 
DEF_HELPER(void, glue(helper_pmuludq, SUFFIX) , (Reg *d, Reg *s))
104
 
DEF_HELPER(void, glue(helper_pmaddwd, SUFFIX) , (Reg *d, Reg *s))
105
 
 
106
 
DEF_HELPER(void, glue(helper_psadbw, SUFFIX) , (Reg *d, Reg *s))
107
 
DEF_HELPER(void, glue(helper_maskmov, SUFFIX) , (Reg *d, Reg *s, target_ulong a0))
108
 
DEF_HELPER(void, glue(helper_movl_mm_T0, SUFFIX) , (Reg *d, uint32_t val))
109
 
#ifdef TARGET_X86_64
110
 
DEF_HELPER(void, glue(helper_movq_mm_T0, SUFFIX) , (Reg *d, uint64_t val))
111
 
#endif
112
 
 
113
 
#if SHIFT == 0
114
 
DEF_HELPER(void, glue(helper_pshufw, SUFFIX) , (Reg *d, Reg *s, int order))
115
 
#else
116
 
DEF_HELPER(void, helper_shufps, (Reg *d, Reg *s, int order))
117
 
DEF_HELPER(void, helper_shufpd, (Reg *d, Reg *s, int order))
118
 
DEF_HELPER(void, glue(helper_pshufd, SUFFIX) , (Reg *d, Reg *s, int order))
119
 
DEF_HELPER(void, glue(helper_pshuflw, SUFFIX) , (Reg *d, Reg *s, int order))
120
 
DEF_HELPER(void, glue(helper_pshufhw, SUFFIX) , (Reg *d, Reg *s, int order))
121
 
#endif
122
 
 
123
 
#if SHIFT == 1
124
 
/* FPU ops */
125
 
/* XXX: not accurate */
126
 
 
127
 
#define SSE_HELPER_S(name, F)\
128
 
    DEF_HELPER(void, helper_ ## name ## ps , (Reg *d, Reg *s))        \
129
 
    DEF_HELPER(void, helper_ ## name ## ss , (Reg *d, Reg *s))        \
130
 
    DEF_HELPER(void, helper_ ## name ## pd , (Reg *d, Reg *s))        \
131
 
    DEF_HELPER(void, helper_ ## name ## sd , (Reg *d, Reg *s))
132
 
 
133
 
SSE_HELPER_S(add, FPU_ADD)
134
 
SSE_HELPER_S(sub, FPU_SUB)
135
 
SSE_HELPER_S(mul, FPU_MUL)
136
 
SSE_HELPER_S(div, FPU_DIV)
137
 
SSE_HELPER_S(min, FPU_MIN)
138
 
SSE_HELPER_S(max, FPU_MAX)
139
 
SSE_HELPER_S(sqrt, FPU_SQRT)
140
 
 
141
 
 
142
 
DEF_HELPER(void, helper_cvtps2pd, (Reg *d, Reg *s))
143
 
DEF_HELPER(void, helper_cvtpd2ps, (Reg *d, Reg *s))
144
 
DEF_HELPER(void, helper_cvtss2sd, (Reg *d, Reg *s))
145
 
DEF_HELPER(void, helper_cvtsd2ss, (Reg *d, Reg *s))
146
 
DEF_HELPER(void, helper_cvtdq2ps, (Reg *d, Reg *s))
147
 
DEF_HELPER(void, helper_cvtdq2pd, (Reg *d, Reg *s))
148
 
DEF_HELPER(void, helper_cvtpi2ps, (XMMReg *d, MMXReg *s))
149
 
DEF_HELPER(void, helper_cvtpi2pd, (XMMReg *d, MMXReg *s))
150
 
DEF_HELPER(void, helper_cvtsi2ss, (XMMReg *d, uint32_t val))
151
 
DEF_HELPER(void, helper_cvtsi2sd, (XMMReg *d, uint32_t val))
152
 
 
153
 
#ifdef TARGET_X86_64
154
 
DEF_HELPER(void, helper_cvtsq2ss, (XMMReg *d, uint64_t val))
155
 
DEF_HELPER(void, helper_cvtsq2sd, (XMMReg *d, uint64_t val))
156
 
#endif
157
 
 
158
 
DEF_HELPER(void, helper_cvtps2dq, (XMMReg *d, XMMReg *s))
159
 
DEF_HELPER(void, helper_cvtpd2dq, (XMMReg *d, XMMReg *s))
160
 
DEF_HELPER(void, helper_cvtps2pi, (MMXReg *d, XMMReg *s))
161
 
DEF_HELPER(void, helper_cvtpd2pi, (MMXReg *d, XMMReg *s))
162
 
DEF_HELPER(int32_t, helper_cvtss2si, (XMMReg *s))
163
 
DEF_HELPER(int32_t, helper_cvtsd2si, (XMMReg *s))
164
 
#ifdef TARGET_X86_64
165
 
DEF_HELPER(int64_t, helper_cvtss2sq, (XMMReg *s))
166
 
DEF_HELPER(int64_t, helper_cvtsd2sq, (XMMReg *s))
167
 
#endif
168
 
 
169
 
DEF_HELPER(void, helper_cvttps2dq, (XMMReg *d, XMMReg *s))
170
 
DEF_HELPER(void, helper_cvttpd2dq, (XMMReg *d, XMMReg *s))
171
 
DEF_HELPER(void, helper_cvttps2pi, (MMXReg *d, XMMReg *s))
172
 
DEF_HELPER(void, helper_cvttpd2pi, (MMXReg *d, XMMReg *s))
173
 
DEF_HELPER(int32_t, helper_cvttss2si, (XMMReg *s))
174
 
DEF_HELPER(int32_t, helper_cvttsd2si, (XMMReg *s))
175
 
#ifdef TARGET_X86_64
176
 
DEF_HELPER(int64_t, helper_cvttss2sq, (XMMReg *s))
177
 
DEF_HELPER(int64_t, helper_cvttsd2sq, (XMMReg *s))
178
 
#endif
179
 
 
180
 
DEF_HELPER(void, helper_rsqrtps, (XMMReg *d, XMMReg *s))
181
 
DEF_HELPER(void, helper_rsqrtss, (XMMReg *d, XMMReg *s))
182
 
DEF_HELPER(void, helper_rcpps, (XMMReg *d, XMMReg *s))
183
 
DEF_HELPER(void, helper_rcpss, (XMMReg *d, XMMReg *s))
184
 
DEF_HELPER(void, helper_haddps, (XMMReg *d, XMMReg *s))
185
 
DEF_HELPER(void, helper_haddpd, (XMMReg *d, XMMReg *s))
186
 
DEF_HELPER(void, helper_hsubps, (XMMReg *d, XMMReg *s))
187
 
DEF_HELPER(void, helper_hsubpd, (XMMReg *d, XMMReg *s))
188
 
DEF_HELPER(void, helper_addsubps, (XMMReg *d, XMMReg *s))
189
 
DEF_HELPER(void, helper_addsubpd, (XMMReg *d, XMMReg *s))
190
 
 
191
 
#define SSE_HELPER_CMP(name, F)\
192
 
    DEF_HELPER(void, helper_ ## name ## ps , (Reg *d, Reg *s))        \
193
 
    DEF_HELPER(void, helper_ ## name ## ss , (Reg *d, Reg *s))        \
194
 
    DEF_HELPER(void, helper_ ## name ## pd , (Reg *d, Reg *s))        \
195
 
    DEF_HELPER(void, helper_ ## name ## sd , (Reg *d, Reg *s))
196
 
 
197
 
SSE_HELPER_CMP(cmpeq, FPU_CMPEQ)
198
 
SSE_HELPER_CMP(cmplt, FPU_CMPLT)
199
 
SSE_HELPER_CMP(cmple, FPU_CMPLE)
200
 
SSE_HELPER_CMP(cmpunord, FPU_CMPUNORD)
201
 
SSE_HELPER_CMP(cmpneq, FPU_CMPNEQ)
202
 
SSE_HELPER_CMP(cmpnlt, FPU_CMPNLT)
203
 
SSE_HELPER_CMP(cmpnle, FPU_CMPNLE)
204
 
SSE_HELPER_CMP(cmpord, FPU_CMPORD)
205
 
 
206
 
DEF_HELPER(void, helper_ucomiss, (Reg *d, Reg *s))
207
 
DEF_HELPER(void, helper_comiss, (Reg *d, Reg *s))
208
 
DEF_HELPER(void, helper_ucomisd, (Reg *d, Reg *s))
209
 
DEF_HELPER(void, helper_comisd, (Reg *d, Reg *s))
210
 
DEF_HELPER(uint32_t, helper_movmskps, (Reg *s))
211
 
DEF_HELPER(uint32_t, helper_movmskpd, (Reg *s))
212
 
#endif
213
 
 
214
 
DEF_HELPER(uint32_t, glue(helper_pmovmskb, SUFFIX), (Reg *s))
215
 
DEF_HELPER(void, glue(helper_packsswb, SUFFIX) , (Reg *d, Reg *s))
216
 
DEF_HELPER(void, glue(helper_packuswb, SUFFIX) , (Reg *d, Reg *s))
217
 
DEF_HELPER(void, glue(helper_packssdw, SUFFIX) , (Reg *d, Reg *s))
218
 
#define UNPCK_OP(base_name, base)                               \
219
 
    DEF_HELPER(void, glue(helper_punpck ## base_name ## bw, SUFFIX) , (Reg *d, Reg *s)) \
220
 
    DEF_HELPER(void, glue(helper_punpck ## base_name ## wd, SUFFIX) , (Reg *d, Reg *s)) \
221
 
    DEF_HELPER(void, glue(helper_punpck ## base_name ## dq, SUFFIX) , (Reg *d, Reg *s))
222
 
 
223
 
UNPCK_OP(l, 0)
224
 
UNPCK_OP(h, 1)
225
 
 
226
 
#if SHIFT == 1
227
 
DEF_HELPER(void, glue(helper_punpcklqdq, SUFFIX) , (Reg *d, Reg *s))
228
 
DEF_HELPER(void, glue(helper_punpckhqdq, SUFFIX) , (Reg *d, Reg *s))
229
 
#endif
230
 
 
231
 
/* 3DNow! float ops */
232
 
#if SHIFT == 0
233
 
DEF_HELPER(void, helper_pi2fd, (MMXReg *d, MMXReg *s))
234
 
DEF_HELPER(void, helper_pi2fw, (MMXReg *d, MMXReg *s))
235
 
DEF_HELPER(void, helper_pf2id, (MMXReg *d, MMXReg *s))
236
 
DEF_HELPER(void, helper_pf2iw, (MMXReg *d, MMXReg *s))
237
 
DEF_HELPER(void, helper_pfacc, (MMXReg *d, MMXReg *s))
238
 
DEF_HELPER(void, helper_pfadd, (MMXReg *d, MMXReg *s))
239
 
DEF_HELPER(void, helper_pfcmpeq, (MMXReg *d, MMXReg *s))
240
 
DEF_HELPER(void, helper_pfcmpge, (MMXReg *d, MMXReg *s))
241
 
DEF_HELPER(void, helper_pfcmpgt, (MMXReg *d, MMXReg *s))
242
 
DEF_HELPER(void, helper_pfmax, (MMXReg *d, MMXReg *s))
243
 
DEF_HELPER(void, helper_pfmin, (MMXReg *d, MMXReg *s))
244
 
DEF_HELPER(void, helper_pfmul, (MMXReg *d, MMXReg *s))
245
 
DEF_HELPER(void, helper_pfnacc, (MMXReg *d, MMXReg *s))
246
 
DEF_HELPER(void, helper_pfpnacc, (MMXReg *d, MMXReg *s))
247
 
DEF_HELPER(void, helper_pfrcp, (MMXReg *d, MMXReg *s))
248
 
DEF_HELPER(void, helper_pfrsqrt, (MMXReg *d, MMXReg *s))
249
 
DEF_HELPER(void, helper_pfsub, (MMXReg *d, MMXReg *s))
250
 
DEF_HELPER(void, helper_pfsubr, (MMXReg *d, MMXReg *s))
251
 
DEF_HELPER(void, helper_pswapd, (MMXReg *d, MMXReg *s))
252
 
#endif
253
 
 
254
 
/* SSSE3 op helpers */
255
 
DEF_HELPER(void, glue(helper_phaddw, SUFFIX), (Reg *d, Reg *s))
256
 
DEF_HELPER(void, glue(helper_phaddd, SUFFIX), (Reg *d, Reg *s))
257
 
DEF_HELPER(void, glue(helper_phaddsw, SUFFIX), (Reg *d, Reg *s))
258
 
DEF_HELPER(void, glue(helper_phsubw, SUFFIX), (Reg *d, Reg *s))
259
 
DEF_HELPER(void, glue(helper_phsubd, SUFFIX), (Reg *d, Reg *s))
260
 
DEF_HELPER(void, glue(helper_phsubsw, SUFFIX), (Reg *d, Reg *s))
261
 
DEF_HELPER(void, glue(helper_pabsb, SUFFIX), (Reg *d, Reg *s))
262
 
DEF_HELPER(void, glue(helper_pabsw, SUFFIX), (Reg *d, Reg *s))
263
 
DEF_HELPER(void, glue(helper_pabsd, SUFFIX), (Reg *d, Reg *s))
264
 
DEF_HELPER(void, glue(helper_pmaddubsw, SUFFIX), (Reg *d, Reg *s))
265
 
DEF_HELPER(void, glue(helper_pmulhrsw, SUFFIX), (Reg *d, Reg *s))
266
 
DEF_HELPER(void, glue(helper_pshufb, SUFFIX), (Reg *d, Reg *s))
267
 
DEF_HELPER(void, glue(helper_psignb, SUFFIX), (Reg *d, Reg *s))
268
 
DEF_HELPER(void, glue(helper_psignw, SUFFIX), (Reg *d, Reg *s))
269
 
DEF_HELPER(void, glue(helper_psignd, SUFFIX), (Reg *d, Reg *s))
270
 
DEF_HELPER(void, glue(helper_palignr, SUFFIX), (Reg *d, Reg *s, int32_t shift))
271
 
 
272
 
/* SSE4.1 op helpers */
273
 
#if SHIFT == 1
274
 
DEF_HELPER(void, glue(helper_pblendvb, SUFFIX), (Reg *d, Reg *s))
275
 
DEF_HELPER(void, glue(helper_blendvps, SUFFIX), (Reg *d, Reg *s))
276
 
DEF_HELPER(void, glue(helper_blendvpd, SUFFIX), (Reg *d, Reg *s))
277
 
DEF_HELPER(void, glue(helper_ptest, SUFFIX), (Reg *d, Reg *s))
278
 
DEF_HELPER(void, glue(helper_pmovsxbw, SUFFIX), (Reg *d, Reg *s))
279
 
DEF_HELPER(void, glue(helper_pmovsxbd, SUFFIX), (Reg *d, Reg *s))
280
 
DEF_HELPER(void, glue(helper_pmovsxbq, SUFFIX), (Reg *d, Reg *s))
281
 
DEF_HELPER(void, glue(helper_pmovsxwd, SUFFIX), (Reg *d, Reg *s))
282
 
DEF_HELPER(void, glue(helper_pmovsxwq, SUFFIX), (Reg *d, Reg *s))
283
 
DEF_HELPER(void, glue(helper_pmovsxdq, SUFFIX), (Reg *d, Reg *s))
284
 
DEF_HELPER(void, glue(helper_pmovzxbw, SUFFIX), (Reg *d, Reg *s))
285
 
DEF_HELPER(void, glue(helper_pmovzxbd, SUFFIX), (Reg *d, Reg *s))
286
 
DEF_HELPER(void, glue(helper_pmovzxbq, SUFFIX), (Reg *d, Reg *s))
287
 
DEF_HELPER(void, glue(helper_pmovzxwd, SUFFIX), (Reg *d, Reg *s))
288
 
DEF_HELPER(void, glue(helper_pmovzxwq, SUFFIX), (Reg *d, Reg *s))
289
 
DEF_HELPER(void, glue(helper_pmovzxdq, SUFFIX), (Reg *d, Reg *s))
290
 
DEF_HELPER(void, glue(helper_pmuldq, SUFFIX), (Reg *d, Reg *s))
291
 
DEF_HELPER(void, glue(helper_pcmpeqq, SUFFIX), (Reg *d, Reg *s))
292
 
DEF_HELPER(void, glue(helper_packusdw, SUFFIX), (Reg *d, Reg *s))
293
 
DEF_HELPER(void, glue(helper_pminsb, SUFFIX), (Reg *d, Reg *s))
294
 
DEF_HELPER(void, glue(helper_pminsd, SUFFIX), (Reg *d, Reg *s))
295
 
DEF_HELPER(void, glue(helper_pminuw, SUFFIX), (Reg *d, Reg *s))
296
 
DEF_HELPER(void, glue(helper_pminud, SUFFIX), (Reg *d, Reg *s))
297
 
DEF_HELPER(void, glue(helper_pmaxsb, SUFFIX), (Reg *d, Reg *s))
298
 
DEF_HELPER(void, glue(helper_pmaxsd, SUFFIX), (Reg *d, Reg *s))
299
 
DEF_HELPER(void, glue(helper_pmaxuw, SUFFIX), (Reg *d, Reg *s))
300
 
DEF_HELPER(void, glue(helper_pmaxud, SUFFIX), (Reg *d, Reg *s))
301
 
DEF_HELPER(void, glue(helper_pmulld, SUFFIX), (Reg *d, Reg *s))
302
 
DEF_HELPER(void, glue(helper_phminposuw, SUFFIX), (Reg *d, Reg *s))
303
 
DEF_HELPER(void, glue(helper_roundps, SUFFIX), (Reg *d, Reg *s, uint32_t mode))
304
 
DEF_HELPER(void, glue(helper_roundpd, SUFFIX), (Reg *d, Reg *s, uint32_t mode))
305
 
DEF_HELPER(void, glue(helper_roundss, SUFFIX), (Reg *d, Reg *s, uint32_t mode))
306
 
DEF_HELPER(void, glue(helper_roundsd, SUFFIX), (Reg *d, Reg *s, uint32_t mode))
307
 
DEF_HELPER(void, glue(helper_blendps, SUFFIX), (Reg *d, Reg *s, uint32_t imm))
308
 
DEF_HELPER(void, glue(helper_blendpd, SUFFIX), (Reg *d, Reg *s, uint32_t imm))
309
 
DEF_HELPER(void, glue(helper_pblendw, SUFFIX), (Reg *d, Reg *s, uint32_t imm))
310
 
DEF_HELPER(void, glue(helper_dpps, SUFFIX), (Reg *d, Reg *s, uint32_t mask))
311
 
DEF_HELPER(void, glue(helper_dppd, SUFFIX), (Reg *d, Reg *s, uint32_t mask))
312
 
DEF_HELPER(void, glue(helper_mpsadbw, SUFFIX), (Reg *d, Reg *s, uint32_t off))
313
 
#endif
314
 
 
315
 
/* SSE4.2 op helpers */
316
 
#if SHIFT == 1
317
 
DEF_HELPER(void, glue(helper_pcmpgtq, SUFFIX), (Reg *d, Reg *s))
318
 
DEF_HELPER(void, glue(helper_pcmpestri, SUFFIX), (Reg *d, Reg *s, uint32_t ctl))
319
 
DEF_HELPER(void, glue(helper_pcmpestrm, SUFFIX), (Reg *d, Reg *s, uint32_t ctl))
320
 
DEF_HELPER(void, glue(helper_pcmpistri, SUFFIX), (Reg *d, Reg *s, uint32_t ctl))
321
 
DEF_HELPER(void, glue(helper_pcmpistrm, SUFFIX), (Reg *d, Reg *s, uint32_t ctl))
322
 
DEF_HELPER(target_ulong, helper_crc32,
323
 
                (uint32_t crc1, target_ulong msg, uint32_t len))
324
 
DEF_HELPER(target_ulong, helper_popcnt, (target_ulong n, uint32_t type))
325
 
#endif
326
 
 
327
 
#undef SHIFT
328
 
#undef Reg
329
 
#undef SUFFIX
330
 
 
331
 
#undef SSE_HELPER_B
332
 
#undef SSE_HELPER_W
333
 
#undef SSE_HELPER_L
334
 
#undef SSE_HELPER_Q
335
 
#undef SSE_HELPER_S
336
 
#undef SSE_HELPER_CMP
337
 
#undef UNPCK_OP