~ubuntu-branches/ubuntu/quantal/llvm-3.1/quantal

« back to all changes in this revision

Viewing changes to lib/Target/X86/X86InstrCompiler.td

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2012-04-01 23:45:03 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120401234503-c04qxrk7s9my53uy
Tags: 3.1~svn153852-1
New snapshot release

Show diffs side-by-side

added added

removed removed

Lines of Context:
301
301
// String Pseudo Instructions
302
302
//
303
303
let Defs = [ECX,EDI,ESI], Uses = [ECX,EDI,ESI], isCodeGenOnly = 1 in {
304
 
def REP_MOVSB : I<0xA4, RawFrm, (outs), (ins), "{rep;movsb|rep movsb}",
305
 
                  [(X86rep_movs i8)], IIC_REP_MOVS>, REP;
306
 
def REP_MOVSW : I<0xA5, RawFrm, (outs), (ins), "{rep;movsw|rep movsw}",
307
 
                  [(X86rep_movs i16)], IIC_REP_MOVS>, REP, OpSize;
308
 
def REP_MOVSD : I<0xA5, RawFrm, (outs), (ins), "{rep;movsl|rep movsd}",
309
 
                  [(X86rep_movs i32)], IIC_REP_MOVS>, REP;
310
 
}
311
 
 
312
 
let Defs = [RCX,RDI,RSI], Uses = [RCX,RDI,RSI], isCodeGenOnly = 1 in
313
 
def REP_MOVSQ : RI<0xA5, RawFrm, (outs), (ins), "{rep;movsq|rep movsq}",
314
 
                   [(X86rep_movs i64)], IIC_REP_MOVS>, REP;
315
 
 
 
304
def REP_MOVSB_32 : I<0xA4, RawFrm, (outs), (ins), "{rep;movsb|rep movsb}",
 
305
                    [(X86rep_movs i8)], IIC_REP_MOVS>, REP,
 
306
                   Requires<[In32BitMode]>;
 
307
def REP_MOVSW_32 : I<0xA5, RawFrm, (outs), (ins), "{rep;movsw|rep movsw}",
 
308
                    [(X86rep_movs i16)], IIC_REP_MOVS>, REP, OpSize,
 
309
                   Requires<[In32BitMode]>;
 
310
def REP_MOVSD_32 : I<0xA5, RawFrm, (outs), (ins), "{rep;movsl|rep movsd}",
 
311
                    [(X86rep_movs i32)], IIC_REP_MOVS>, REP,
 
312
                   Requires<[In32BitMode]>;
 
313
}
 
314
 
 
315
let Defs = [RCX,RDI,RSI], Uses = [RCX,RDI,RSI], isCodeGenOnly = 1 in {
 
316
def REP_MOVSB_64 : I<0xA4, RawFrm, (outs), (ins), "{rep;movsb|rep movsb}",
 
317
                    [(X86rep_movs i8)], IIC_REP_MOVS>, REP,
 
318
                   Requires<[In64BitMode]>;
 
319
def REP_MOVSW_64 : I<0xA5, RawFrm, (outs), (ins), "{rep;movsw|rep movsw}",
 
320
                    [(X86rep_movs i16)], IIC_REP_MOVS>, REP, OpSize,
 
321
                   Requires<[In64BitMode]>;
 
322
def REP_MOVSD_64 : I<0xA5, RawFrm, (outs), (ins), "{rep;movsl|rep movsd}",
 
323
                    [(X86rep_movs i32)], IIC_REP_MOVS>, REP,
 
324
                   Requires<[In64BitMode]>;
 
325
def REP_MOVSQ_64 : RI<0xA5, RawFrm, (outs), (ins), "{rep;movsq|rep movsq}",
 
326
                    [(X86rep_movs i64)], IIC_REP_MOVS>, REP,
 
327
                   Requires<[In64BitMode]>;
 
328
}
316
329
 
317
330
// FIXME: Should use "(X86rep_stos AL)" as the pattern.
318
 
let Defs = [ECX,EDI], Uses = [AL,ECX,EDI], isCodeGenOnly = 1 in
319
 
def REP_STOSB : I<0xAA, RawFrm, (outs), (ins), "{rep;stosb|rep stosb}",
320
 
                  [(X86rep_stos i8)], IIC_REP_STOS>, REP;
321
 
let Defs = [ECX,EDI], Uses = [AX,ECX,EDI], isCodeGenOnly = 1 in
322
 
def REP_STOSW : I<0xAB, RawFrm, (outs), (ins), "{rep;stosw|rep stosw}",
323
 
                  [(X86rep_stos i16)], IIC_REP_STOS>, REP, OpSize;
324
 
let Defs = [ECX,EDI], Uses = [EAX,ECX,EDI], isCodeGenOnly = 1 in
325
 
def REP_STOSD : I<0xAB, RawFrm, (outs), (ins), "{rep;stosl|rep stosd}",
326
 
                  [(X86rep_stos i32)], IIC_REP_STOS>, REP;
327
 
 
328
 
let Defs = [RCX,RDI], Uses = [RAX,RCX,RDI], isCodeGenOnly = 1 in
329
 
def REP_STOSQ : RI<0xAB, RawFrm, (outs), (ins), "{rep;stosq|rep stosq}",
330
 
                   [(X86rep_stos i64)], IIC_REP_STOS>, REP;
331
 
 
 
331
let Defs = [ECX,EDI], isCodeGenOnly = 1 in {
 
332
  let Uses = [AL,ECX,EDI] in
 
333
  def REP_STOSB_32 : I<0xAA, RawFrm, (outs), (ins), "{rep;stosb|rep stosb}",
 
334
                      [(X86rep_stos i8)], IIC_REP_STOS>, REP,
 
335
                     Requires<[In32BitMode]>;
 
336
  let Uses = [AX,ECX,EDI] in
 
337
  def REP_STOSW_32 : I<0xAB, RawFrm, (outs), (ins), "{rep;stosw|rep stosw}",
 
338
                      [(X86rep_stos i16)], IIC_REP_STOS>, REP, OpSize,
 
339
                     Requires<[In32BitMode]>;
 
340
  let Uses = [EAX,ECX,EDI] in
 
341
  def REP_STOSD_32 : I<0xAB, RawFrm, (outs), (ins), "{rep;stosl|rep stosd}",
 
342
                      [(X86rep_stos i32)], IIC_REP_STOS>, REP,
 
343
                     Requires<[In32BitMode]>;
 
344
}
 
345
 
 
346
let Defs = [RCX,RDI], isCodeGenOnly = 1 in {
 
347
  let Uses = [AL,RCX,RDI] in
 
348
  def REP_STOSB_64 : I<0xAA, RawFrm, (outs), (ins), "{rep;stosb|rep stosb}",
 
349
                      [(X86rep_stos i8)], IIC_REP_STOS>, REP,
 
350
                     Requires<[In64BitMode]>;
 
351
  let Uses = [AX,RCX,RDI] in
 
352
  def REP_STOSW_64 : I<0xAB, RawFrm, (outs), (ins), "{rep;stosw|rep stosw}",
 
353
                      [(X86rep_stos i16)], IIC_REP_STOS>, REP, OpSize,
 
354
                     Requires<[In64BitMode]>;
 
355
  let Uses = [RAX,RCX,RDI] in
 
356
  def REP_STOSD_64 : I<0xAB, RawFrm, (outs), (ins), "{rep;stosl|rep stosd}",
 
357
                      [(X86rep_stos i32)], IIC_REP_STOS>, REP,
 
358
                     Requires<[In64BitMode]>;
 
359
 
 
360
  let Uses = [RAX,RCX,RDI] in
 
361
  def REP_STOSQ_64 : RI<0xAB, RawFrm, (outs), (ins), "{rep;stosq|rep stosq}",
 
362
                      [(X86rep_stos i64)], IIC_REP_STOS>, REP,
 
363
                     Requires<[In64BitMode]>;
 
364
}
332
365
 
333
366
//===----------------------------------------------------------------------===//
334
367
// Thread Local Storage Instructions