1864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// Copyright 2011 the V8 project authors. All rights reserved.
2864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// Redistribution and use in source and binary forms, with or without
3864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// modification, are permitted provided that the following conditions are
4864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// met:
5864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//
6864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//     * Redistributions of source code must retain the above copyright
7864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//       notice, this list of conditions and the following disclaimer.
8864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//     * Redistributions in binary form must reproduce the above
9864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//       copyright notice, this list of conditions and the following
10864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//       disclaimer in the documentation and/or other materials provided
11864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//       with the distribution.
12864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//     * Neither the name of Google Inc. nor the names of its
13864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//       contributors may be used to endorse or promote products derived
14864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//       from this software without specific prior written permission.
15864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org//
16864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
28864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#include <stdlib.h>
29864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
30196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/v8.h"
31196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org
32196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/debug.h"
33196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/disasm.h"
34196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/disassembler.h"
356474a1cfee1cdad45de5cc96960085e1c7daf11cmachenbach@chromium.org#include "src/ic/ic.h"
36196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/macro-assembler.h"
37196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/serialize.h"
38196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "test/cctest/cctest.h"
39864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
40864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgusing namespace v8::internal;
41864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
42864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
43864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#define __ assm.
44864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
45864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
46864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgstatic void DummyStaticFunction(Object* result) {
47864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org}
48864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
49864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
50864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgTEST(DisasmIa320) {
51864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  CcTest::InitializeVM();
52864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  Isolate* isolate = CcTest::i_isolate();
53864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  HandleScope scope(isolate);
54864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  v8::internal::byte buffer[2048];
55864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  Assembler assm(isolate, buffer, sizeof buffer);
56864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  DummyStaticFunction(NULL);  // just bloody use it (DELETE; debugging)
57864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
58864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // Short immediate instructions
59864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ adc(eax, 12345678);
60864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(eax, Immediate(12345678));
61864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ or_(eax, 12345678);
62864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sub(eax, Immediate(12345678));
63864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ xor_(eax, 12345678);
64864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ and_(eax, 12345678);
65864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  Handle<FixedArray> foo = isolate->factory()->NewFixedArray(10, TENURED);
66864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmp(eax, foo);
67864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
68864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // ---- This one caused crash
69864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov(ebx,  Operand(esp, ecx, times_2, 0));  // [esp+ecx*4]
70864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
71864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // ---- All instructions that I can think of
72864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, ebx);
73864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(12, RelocInfo::NONE32));
74864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(ebx, 0));
75864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(ebx, 16));
76864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(ebx, 1999));
77864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(ebx, -4));
78864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(ebx, -1999));
79864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(esp, 0));
80864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(esp, 16));
81864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(esp, 1999));
82864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(esp, -4));
83864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(esp, -1999));
84864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
85864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(esi, Operand(ecx, times_4, 0));
86864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(esi, Operand(ecx, times_4, 24));
87864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(esi, Operand(ecx, times_4, -4));
88864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(esi, Operand(ecx, times_4, -1999));
89864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
90864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edi, Operand(ebp, ecx, times_4, 0));
91864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edi, Operand(ebp, ecx, times_4, 12));
92864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edi, Operand(ebp, ecx, times_4, -8));
93864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edi, Operand(ebp, ecx, times_4, -3999));
94864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(Operand(ebp, ecx, times_4, 12), Immediate(12));
95864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
96864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
97864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(ebx, Immediate(12));
98864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
99864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ adc(ecx, 12);
100864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ adc(ecx, 1000);
101864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
102864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ and_(edx, 3);
103864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ and_(edx, Operand(esp, 4));
104864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmp(edx, 3);
105864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmp(edx, Operand(esp, 4));
106864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmp(Operand(ebp, ecx, times_4, 0), Immediate(1000));
107864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  Handle<FixedArray> foo2 = isolate->factory()->NewFixedArray(10, TENURED);
108864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmp(ebx, foo2);
109864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmpb(ebx, Operand(ebp, ecx, times_2, 0));
110864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmpb(Operand(ebp, ecx, times_2, 0), ebx);
111864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ or_(edx, 3);
112864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ xor_(edx, 3);
113864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
114864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cpuid();
115864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ movsx_b(edx, ecx);
116864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ movsx_w(edx, ecx);
117864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ movzx_b(edx, ecx);
118864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ movzx_w(edx, ecx);
119864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
120864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
121864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ imul(edx, ecx);
122864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shld(edx, ecx);
123864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shrd(edx, ecx);
124864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ bts(edx, ecx);
125864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ bts(Operand(ebx, ecx, times_4, 0), ecx);
126864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
127864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ pushad();
128864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ popad();
129864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ pushfd();
130864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ popfd();
131864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(Immediate(12));
132864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(Immediate(23456));
133864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(ecx);
134864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(esi);
135864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
136864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(Operand(ebx, ecx, times_4, 0));
137864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(Operand(ebx, ecx, times_4, 0));
138864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(Operand(ebx, ecx, times_4, 10000));
139864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ pop(edx);
140864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ pop(eax);
141864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ pop(Operand(ebx, ecx, times_4, 0));
142864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
143864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
144864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, Operand(esp, 16));
145864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(edx, ecx);
146864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov_b(edx, ecx);
147864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov_b(ecx, 6);
148864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov_b(Operand(ebx, ecx, times_4, 10000), 6);
149864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov_b(Operand(esp, 16), edx);
150864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov_w(edx, Operand(esp, 16));
151864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov_w(Operand(esp, 16), edx);
152864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
153864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ movsx_w(edx, Operand(esp, 12));
154864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ movsx_b(edx, Operand(esp, 12));
155864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ movzx_w(edx, Operand(esp, 12));
156864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ movzx_b(edx, Operand(esp, 12));
157864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
158864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov(edx, 1234567);
159864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov(edx, Operand(esp, 12));
160864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov(Operand(ebx, ecx, times_4, 10000), Immediate(12345));
161864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mov(Operand(ebx, ecx, times_4, 10000), edx);
162864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
163864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ dec_b(edx);
164864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ dec_b(Operand(eax, 10));
165864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ dec_b(Operand(ebx, ecx, times_4, 10000));
166864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ dec(edx);
167864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cdq();
168864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
169864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
170864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ idiv(edx);
1715c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ idiv(Operand(edx, ecx, times_1, 1));
1725c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ idiv(Operand(esp, 12));
1735c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ div(edx);
1745c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ div(Operand(edx, ecx, times_1, 1));
1755c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ div(Operand(esp, 12));
176864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ mul(edx);
177864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ neg(edx);
178864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ not_(edx);
179864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ test(Operand(ebx, ecx, times_4, 10000), Immediate(123456));
180864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
181864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ imul(edx, Operand(ebx, ecx, times_4, 10000));
182864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ imul(edx, ecx, 12);
1835c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ imul(edx, Operand(edx, eax, times_2, 42), 8);
184864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ imul(edx, ecx, 1000);
1855c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ imul(edx, Operand(ebx, ecx, times_4, 1), 9000);
186864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
187864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ inc(edx);
188864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ inc(Operand(ebx, ecx, times_4, 10000));
189864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ push(Operand(ebx, ecx, times_4, 10000));
190864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ pop(Operand(ebx, ecx, times_4, 10000));
191864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ call(Operand(ebx, ecx, times_4, 10000));
192864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ jmp(Operand(ebx, ecx, times_4, 10000));
193864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
194864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ lea(edx, Operand(ebx, ecx, times_4, 10000));
195864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ or_(edx, 12345);
196864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ or_(edx, Operand(ebx, ecx, times_4, 10000));
197864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
198864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
199864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
200864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ rcl(edx, 1);
201864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ rcl(edx, 7);
202864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ rcr(edx, 1);
203864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ rcr(edx, 7);
204864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sar(edx, 1);
205864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sar(edx, 6);
206864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sar_cl(edx);
2075c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ sar(Operand(ebx, ecx, times_4, 10000), 1);
2085c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ sar(Operand(ebx, ecx, times_4, 10000), 6);
2095c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ sar_cl(Operand(ebx, ecx, times_4, 10000));
210864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sbb(edx, Operand(ebx, ecx, times_4, 10000));
211864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shld(edx, Operand(ebx, ecx, times_4, 10000));
212864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shl(edx, 1);
213864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shl(edx, 6);
214864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shl_cl(edx);
2155c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ shl(Operand(ebx, ecx, times_4, 10000), 1);
2165c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ shl(Operand(ebx, ecx, times_4, 10000), 6);
2175c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ shl_cl(Operand(ebx, ecx, times_4, 10000));
218864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shrd(edx, Operand(ebx, ecx, times_4, 10000));
219864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shr(edx, 1);
220864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shr(edx, 7);
221864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ shr_cl(edx);
2225c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ shr(Operand(ebx, ecx, times_4, 10000), 1);
2235c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ shr(Operand(ebx, ecx, times_4, 10000), 6);
2245c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  __ shr_cl(Operand(ebx, ecx, times_4, 10000));
225864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
226864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
227864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // Immediates
228864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
229864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ adc(edx, 12345);
230864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
231864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(ebx, Immediate(12));
232864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ add(Operand(edx, ecx, times_4, 10000), Immediate(12));
233864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
234864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ and_(ebx, 12345);
235864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
236864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmp(ebx, 12345);
237864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmp(ebx, Immediate(12));
238864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmp(Operand(edx, ecx, times_4, 10000), Immediate(12));
239864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cmpb(eax, 100);
240864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
241864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ or_(ebx, 12345);
242864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
243864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sub(ebx, Immediate(12));
244864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sub(Operand(edx, ecx, times_4, 10000), Immediate(12));
245864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
246864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ xor_(ebx, 12345);
247864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
248864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ imul(edx, ecx, 12);
249864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ imul(edx, ecx, 1000);
250864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
251864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ cld();
252864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ rep_movs();
253864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ rep_stos();
254864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ stos();
255864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
256864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sub(edx, Operand(ebx, ecx, times_4, 10000));
257864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ sub(edx, ebx);
258864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
259864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ test(edx, Immediate(12345));
260864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ test(edx, Operand(ebx, ecx, times_8, 10000));
261864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ test(Operand(esi, edi, times_1, -20000000), Immediate(300000000));
262864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ test_b(edx, Operand(ecx, ebx, times_2, 1000));
263864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ test_b(Operand(eax, -20), 0x9A);
264864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
265864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
266864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ xor_(edx, 12345);
267864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ xor_(edx, Operand(ebx, ecx, times_8, 10000));
268864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ bts(Operand(ebx, ecx, times_8, 10000), edx);
269864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ hlt();
270864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ int3();
271864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ ret(0);
272864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ ret(8);
273864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
274864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // Calls
275864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
276864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  Label L1, L2;
277864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ bind(&L1);
278864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
279864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ call(&L1);
280864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ call(&L2);
281864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
282864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ bind(&L2);
283864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ call(Operand(ebx, ecx, times_4, 10000));
284864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
285864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  Handle<Code> ic(LoadIC::initialize_stub(isolate, NOT_CONTEXTUAL));
286864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ call(ic, RelocInfo::CODE_TARGET);
287864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
288864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ call(FUNCTION_ADDR(DummyStaticFunction), RelocInfo::RUNTIME_ENTRY);
289864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
290864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
291864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ jmp(&L1);
292864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ jmp(Operand(ebx, ecx, times_4, 10000));
293864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  ExternalReference after_break_target =
294864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org      ExternalReference::debug_after_break_target_address(isolate);
295864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ jmp(Operand::StaticVariable(after_break_target));
296864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ jmp(ic, RelocInfo::CODE_TARGET);
297864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
298864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
299864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
300864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  Label Ljcc;
301864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
302864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // long jumps
303864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(overflow, &Ljcc);
304864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(no_overflow, &Ljcc);
305864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(below, &Ljcc);
306864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(above_equal, &Ljcc);
307864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(equal, &Ljcc);
308864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(not_equal, &Ljcc);
309864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(below_equal, &Ljcc);
310864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(above, &Ljcc);
311864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(sign, &Ljcc);
312864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(not_sign, &Ljcc);
313864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(parity_even, &Ljcc);
314864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(parity_odd, &Ljcc);
315864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(less, &Ljcc);
316864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(greater_equal, &Ljcc);
317864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(less_equal, &Ljcc);
318864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(greater, &Ljcc);
319864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
320864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ bind(&Ljcc);
321864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // short jumps
322864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(overflow, &Ljcc);
323864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(no_overflow, &Ljcc);
324864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(below, &Ljcc);
325864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(above_equal, &Ljcc);
326864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(equal, &Ljcc);
327864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(not_equal, &Ljcc);
328864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(below_equal, &Ljcc);
329864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(above, &Ljcc);
330864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(sign, &Ljcc);
331864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(not_sign, &Ljcc);
332864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(parity_even, &Ljcc);
333864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(parity_odd, &Ljcc);
334864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(less, &Ljcc);
335864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(greater_equal, &Ljcc);
336864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(less_equal, &Ljcc);
337864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ j(greater, &Ljcc);
338864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
339864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // 0xD9 instructions
340864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
341864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
342864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fld(1);
343864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fld1();
344864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fldz();
345864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fldpi();
346864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fabs();
347864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fchs();
348864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fprem();
349864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fprem1();
350864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fincstp();
351864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ ftst();
35206b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org  __ fxam();
353864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fxch(3);
354864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fld_s(Operand(ebx, ecx, times_4, 10000));
355864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fstp_s(Operand(ebx, ecx, times_4, 10000));
356864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ ffree(3);
357864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fld_d(Operand(ebx, ecx, times_4, 10000));
358864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fstp_d(Operand(ebx, ecx, times_4, 10000));
359864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
360864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
361864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fild_s(Operand(ebx, ecx, times_4, 10000));
362864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fistp_s(Operand(ebx, ecx, times_4, 10000));
363864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fild_d(Operand(ebx, ecx, times_4, 10000));
364864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fistp_d(Operand(ebx, ecx, times_4, 10000));
365864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fnstsw_ax();
366864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
367864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fadd(3);
368864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fsub(3);
369864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fmul(3);
370864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fdiv(3);
371864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
372864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ faddp(3);
373864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fsubp(3);
374864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fmulp(3);
375864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fdivp(3);
376864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fcompp();
377864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fwait();
378864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ frndint();
379864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ fninit();
380864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ nop();
381864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
38206b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org  __ fldcw(Operand(ebx, ecx, times_4, 10000));
38306b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org  __ fnstcw(Operand(ebx, ecx, times_4, 10000));
38406b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org  __ fadd_d(Operand(ebx, ecx, times_4, 10000));
38506b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org  __ fnsave(Operand(ebx, ecx, times_4, 10000));
38606b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org  __ frstor(Operand(ebx, ecx, times_4, 10000));
38706b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org
3885c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  // xchg.
3895c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  {
3905c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org    __ xchg(eax, eax);
3915c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org    __ xchg(eax, ebx);
3925c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org    __ xchg(ebx, ebx);
3935c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org    __ xchg(ebx, Operand(esp, 12));
3945c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org  }
3955c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org
396864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  // Nop instructions
397864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  for (int i = 0; i < 16; i++) {
398864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org    __ Nop(i);
399864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  }
400864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
401864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  __ ret(0);
402864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
403864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  CodeDesc desc;
404864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  assm.GetCode(&desc);
405864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  Handle<Code> code = isolate->factory()->NewCode(
406864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org      desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
407864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  USE(code);
408864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#ifdef OBJECT_PRINT
40960fc910a49e86bb7faeeee0017abbd1ca05d16e8machenbach@chromium.org  OFStream os(stdout);
41060fc910a49e86bb7faeeee0017abbd1ca05d16e8machenbach@chromium.org  code->Print(os);
411864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  byte* begin = code->instruction_start();
412864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  byte* end = begin + code->instruction_size();
413864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org  disasm::Disassembler::Disassemble(stdout, begin, end);
414864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#endif
415864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org}
416864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org
417864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#undef __
418