extern void shrl32_with_0x10 ( void );
asm("\n"
+".text\n"
"shrl32_with_0x10:\n"
"\tpushq %rdx\n"
"\tmovq data, %rdx\n"
"\tshrl32_with_0x10_jump:\n"
"\tmov $0xdeaddead, %edx\n"
"\tjmp shrl32_with_0x10_cont\n"
+".previous\n"
);
extern void do_fxtract ( void );
asm("\n"
+".text\n"
".global do_fxtract\n"
"do_fxtract:\n"
"\tfinit\n"
"\tfxtract\n"
"\tfstpl res1\n"
"\tfstpl res2\n"
-"\tret"
+"\tret\n"
+".previous\n"
);
void try ( double x )
extern void foo64 ( void );
asm("\n"
+".text\n"
"foo64:\n"
"\tpushq %rcx\n"
"\tpopq %rcx\n"
"\tret\n"
+".previous\n"
);
extern void foo32 ( void );
asm("\n"
+".text\n"
"foo32:\n"
"\tpushq %rcx\n"
"\tpopq %rcx\n"
"\tret\n"
+".previous\n"
);
"\tmovq %rax, res\n"
"\tpopq %rcx\n"
"\tret\n"
+".previous\n"
);
extern void loop_ne ( void );
"\tmovq %rax, res\n"
"\tpopq %rcx\n"
"\tret\n"
+".previous\n"
);
extern void loop_e ( void );
"\tmovq %rax, res\n"
"\tpopq %rcx\n"
"\tret\n"
+".previous\n"
);
int main ( void )
extern void sbb_ib_al ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_ib_al) ":\n"
#ifndef VGP_amd64_darwin
#endif
"\tretq\n"
+".previous\n"
);
extern void sbb_iw_ax ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_iw_ax) ":\n"
#ifndef VGP_amd64_darwin
#endif
"\tretq\n"
+".previous\n"
);
extern void sbb_il_eax ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_il_eax) ":\n"
#ifndef VGP_amd64_darwin
#endif
"\tretq\n"
+".previous\n"
);
extern void sbb_eb_gb ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_eb_gb) ":\n"
#ifndef VGP_amd64_darwin
#endif
"\tretq\n"
+".previous\n"
);
extern void sbb_eb_gb_2 ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_eb_gb_2) ":\n"
"\tpushq %rcx\n"
"\tpopq %rcx\n"
"\tretq\n"
+".previous\n"
);
extern void adc_eb_gb ( void );
asm("\n"
+".text\n"
VG_SYM(adc_eb_gb) ":\n"
#ifndef VGP_amd64_darwin
#endif
"\tretq\n"
+".previous\n"
);
extern void adc_eb_gb_2 ( void );
asm("\n"
+".text\n"
VG_SYM(adc_eb_gb_2) ":\n"
"\tpushq %rcx\n"
"\tpopq %rcx\n"
"\tretq\n"
+".previous\n"
);
extern void adc_ib_al ( void );
asm("\n"
+".text\n"
VG_SYM(adc_ib_al) ":\n"
#ifndef VGP_amd64_darwin
#endif
"\tretq\n"
+".previous\n"
);
extern void adc_iw_ax ( void );
asm("\n"
+".text\n"
VG_SYM(adc_iw_ax) ":\n"
#ifndef VGP_amd64_darwin
#endif
"\tretq\n"
+".previous\n"
);
extern void adc_il_eax ( void );
asm("\n"
+".text\n"
VG_SYM(adc_il_eax) ":\n"
#ifndef VGP_amd64_darwin
#endif
"\tretq\n"
+".previous\n"
);
extern void shld64 ( void );
asm("\n"
+".text\n"
"shld64:\n"
"\tpushq %rsi\n"
"\tpushq %r11\n"
"\tpopq %r11\n"
"\tpopq %rsi\n"
"\tret\n"
+".previous\n"
);
extern void shld32 ( void );
asm("\n"
+".text\n"
"shld32:\n"
"\tpushq %rsi\n"
"\tpushq %r11\n"
"\tpopq %r11\n"
"\tpopq %rsi\n"
"\tret\n"
+".previous\n"
);
extern void shld16 ( void );
asm("\n"
+".text\n"
"shld16:\n"
"\tpushq %rsi\n"
"\tpushq %r11\n"
"\tpopq %r11\n"
"\tpopq %rsi\n"
"\tret\n"
+".previous\n"
);
extern void shrd64 ( void );
asm("\n"
+".text\n"
"shrd64:\n"
"\tpushq %rsi\n"
"\tpushq %r11\n"
"\tpopq %r11\n"
"\tpopq %rsi\n"
"\tret\n"
+".previous\n"
);
extern void shrd32 ( void );
asm("\n"
+".text\n"
"shrd32:\n"
"\tpushq %rsi\n"
"\tpushq %r11\n"
"\tpopq %r11\n"
"\tpopq %rsi\n"
"\tret\n"
+".previous\n"
);
extern void shrd16 ( void );
asm("\n"
+".text\n"
"shrd16:\n"
"\tpushq %rsi\n"
"\tpushq %r11\n"
"\tpopq %r11\n"
"\tpopq %rsi\n"
"\tret\n"
+".previous\n"
);
extern ULong lahf_1 ( void );
asm("\n"
+".text\n"
"lahf_1:\n"
"\tpushq $0\n"
"\tpopfq\n"
"\tsubq %rax, %rdx\n"
"\t.byte 0x9F\n" /* lahf */
"\tret\n"
+".previous\n"
);
extern ULong lahf_0 ( void );
asm("\n"
+".text\n"
"lahf_0:\n"
"\tpushq $0\n"
"\tpopfq\n"
"\tsubq %rax, %rdx\n"
"\t.byte 0x9F\n" /* lahf */
"\tret\n"
+".previous\n"
);
extern ULong sahf_then_lahf ( ULong );
asm("\n"
+".text\n"
"sahf_then_lahf:\n"
"\tmovq %rdi, %rax\n"
"\t.byte 0x9E\n" /* sahf */
"\tmovabsq $0, %rax\n"
"\t.byte 0x9F\n" /* lahf */
"\tret\n"
+".previous\n"
);
int main ( void )
extern void foo ( void );
asm("\n"
+ ".text\n"
VG_SYM(foo) ":\n"
"\tpushl %eax\n"
"\tpushl %ebx\n"
"\tpopl %ebx\n"
"\tpopl %eax\n"
"\tret\n"
+ ".previous\n"
);
int main ( void )
extern void do_fxtract ( void );
asm("\n"
+".text\n"
VG_SYM(do_fxtract) ":\n"
"\tfinit\n"
"\tfldl " VG_SYM(arg) "\n"
"\tfxtract\n"
"\tfstpl " VG_SYM(res1) "\n"
"\tfstpl " VG_SYM(res2) "\n"
-"\tret"
+"\tret\n"
+".previous\n"
);
void try ( double x )
extern int foo_1 ( void );
asm("\n"
+".text\n"
VG_SYM(foo_1) ":\n"
"\tpushl $0\n"
"\tpopfl\n"
"\tsubl %eax, %edx\n"
"\tlahf\n"
"\tret\n"
+".previous\n"
);
extern int foo_0 ( void );
asm("\n"
+".text\n"
VG_SYM(foo_0) ":\n"
"\tpushl $0\n"
"\tpopfl\n"
"\tsubl %eax, %edx\n"
"\tlahf\n"
"\tret\n"
+".previous\n"
);
int main ( void )
"\tmovl %eax, " VG_SYM(res) "\n"
"\tpopl %ecx\n"
"\tret\n"
+".previous\n"
);
extern void loop_ne ( void );
"\tmovl %eax, " VG_SYM(res) "\n"
"\tpopl %ecx\n"
"\tret\n"
+".previous\n"
);
extern void loop_e ( void );
"\tmovl %eax, " VG_SYM(res) "\n"
"\tpopl %ecx\n"
"\tret\n"
+".previous\n"
);
int main ( void )
extern void sbb_ib_al ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_ib_al) ":\n"
"\tmovb " VG_SYM(in_b) ", %al\n"
"\tmovb %al, " VG_SYM(out_b2) "\n"
"\tret\n"
+".previous\n"
);
extern void sbb_iw_ax ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_iw_ax) ":\n"
"\tmovw " VG_SYM(in_w) ", %ax\n"
"\tmovw %ax, " VG_SYM(out_w2) "\n"
"\tret\n"
+".previous\n"
);
extern void sbb_il_eax ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_il_eax) ":\n"
"\tmovl " VG_SYM(in_l) ", %eax\n"
"\tmovl %eax, " VG_SYM(out_l2) "\n"
"\tret\n"
+".previous\n"
);
extern void sbb_eb_gb ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_eb_gb) ":\n"
"\tmovb " VG_SYM(in_b) ", %al\n"
"\tmovb %al, " VG_SYM(out_b2) "\n"
"\tret\n"
+".previous\n"
);
extern void sbb_eb_gb_2 ( void );
asm("\n"
+".text\n"
VG_SYM(sbb_eb_gb_2) ":\n"
"\tpushl %ecx\n"
"\tpopl %ecx\n"
"\tret\n"
+".previous\n"
);
extern void adc_eb_gb ( void );
asm("\n"
+".text\n"
VG_SYM(adc_eb_gb) ":\n"
"\tmovb " VG_SYM(in_b) ", %al\n"
"\tmovb %al, " VG_SYM(out_b2) "\n"
"\tret\n"
+".previous\n"
);
extern void adc_eb_gb_2 ( void );
asm("\n"
+".text\n"
VG_SYM(adc_eb_gb_2) ":\n"
"\tpushl %ecx\n"
"\tpopl %ecx\n"
"\tret\n"
+".previous\n"
);
extern void adc_ib_al ( void );
asm("\n"
+".text\n"
VG_SYM(adc_ib_al) ":\n"
"\tmovb " VG_SYM(in_b) ", %al\n"
"\tmovb %al, " VG_SYM(out_b2) "\n"
"\tret\n"
+".previous\n"
);
extern void adc_iw_ax ( void );
asm("\n"
+".text\n"
VG_SYM(adc_iw_ax) ":\n"
"\tmovw " VG_SYM(in_w) ", %ax\n"
"\tmovw %ax, " VG_SYM(out_w2) "\n"
"\tret\n"
+".previous\n"
);
extern void adc_il_eax ( void );
asm("\n"
+".text\n"
VG_SYM(adc_il_eax) ":\n"
"\tmovl " VG_SYM(in_l) ", %eax\n"
"\tmovl %eax, " VG_SYM(out_l2) "\n"
"\tret\n"
+".previous\n"
);