rtasm: add x86_imul
authorKeith Whitwell <keith@tungstengraphics.com>
Fri, 18 Apr 2008 17:30:41 +0000 (18:30 +0100)
committerKeith Whitwell <keith@tungstengraphics.com>
Fri, 18 Apr 2008 17:32:37 +0000 (18:32 +0100)
src/gallium/auxiliary/rtasm/rtasm_x86sse.c
src/gallium/auxiliary/rtasm/rtasm_x86sse.h

index 5c25fa1..7f8cc23 100644 (file)
@@ -422,11 +422,20 @@ void x86_add( struct x86_function *p,
 void x86_mul( struct x86_function *p,
               struct x86_reg src )
 {
-//   assert (src.file == file_REG32 && src.mod == mod_REG);
    emit_1ub(p, 0xf7);
    emit_modrm_noreg(p, 4, src );
 }
 
+
+void x86_imul( struct x86_function *p,
+              struct x86_reg dst,
+              struct x86_reg src )
+{
+   emit_2ub(p, X86_TWOB, 0xAF);
+   emit_modrm(p, dst, src);
+}
+
+
 void x86_sub( struct x86_function *p,
               struct x86_reg dst,
               struct x86_reg src )
index dfde661..5e99cee 100644 (file)
@@ -213,6 +213,7 @@ void x86_inc( struct x86_function *p, struct x86_reg reg );
 void x86_lea( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
 void x86_mov( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
 void x86_mul( struct x86_function *p, struct x86_reg src );
+void x86_imul( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
 void x86_or( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
 void x86_pop( struct x86_function *p, struct x86_reg reg );
 void x86_push( struct x86_function *p, struct x86_reg reg );