瀏覽代碼

Added support for 128 intrinsics on x64

woollybah 9 年之前
父節點
當前提交
0a43f49df8
共有 4 個文件被更改,包括 25 次插入0 次删除
  1. 10 0
      appstub.mod/debugger_mt.stdio.bmx
  2. 5 0
      blitz.mod/blitz.bmx
  3. 4 0
      blitz.mod/blitz_array.c
  4. 6 0
      blitz.mod/blitz_types.h

+ 10 - 0
appstub.mod/debugger_mt.stdio.bmx

@@ -134,10 +134,14 @@ Function TypeName$( tag$ Var )
 		Return "Long"
 	Case "y"
 		Return "ULong"
+	Case "j"
+		Return "Int128"
 	Case "f"
 		Return "Float"
 	Case "d"
 		Return "Double"
+	Case "k"
+		Return "Float128"
 	Case "$"
 		Return "String"
 	Case "z"
@@ -247,6 +251,8 @@ Function DebugDeclSize:Int( decl:Int Ptr )
 	Case Asc("l") Return 8
 	Case Asc("y") Return 8
 	Case Asc("d") Return 8
+	Case Asc("j") Return 16
+	Case Asc("k") Return 16
 	' size_t (t) fall-through to ptr64 size below
 	End Select
 
@@ -348,6 +354,10 @@ Function DebugDeclValue$( decl:Int Ptr,inst:Byte Ptr )
 		If Not bmx_debugger_DebugDecl_ArraySize(p) Return "Null"
 	Case Asc("@")
 		Return "{}"
+	Case Asc("j")
+		Return "{}"
+	Case Asc("k")
+		Return "{}"
 	Default
 		DebugError "Invalid decl typetag:"+Chr(tag)
 	End Select

+ 5 - 0
blitz.mod/blitz.bmx

@@ -71,6 +71,11 @@ ModuleInfo "CC_OPTS: -DGC_THREADS -DATOMIC_UNCOLLECTABLE"
 ModuleInfo "CC_OPTS: -DBMX_DEBUG"
 ?
 
+?x64
+ModuleInfo "CC_OPTS: -msse3"
+ModuleInfo "LD_OPTS: -msse3"
+?
+
 Import "blitz_app.c"
 Import "blitz_types.c"
 Import "blitz_cclib.c"

+ 4 - 0
blitz.mod/blitz_array.c

@@ -92,6 +92,10 @@ static BBArray *allocateArray( const char *type,int dims,int *lens, unsigned sho
 	case '[':size=sizeof(void*);flags=0;break;
 	case '(':size=sizeof(void*);break;
 	case 'z':size=sizeof(BBSIZET);break;
+	#ifdef __x86_64__
+	case 'j':size=sizeof(BBINT128);break;
+	case 'k':size=sizeof(BBFLOAT128);break;
+	#endif
 	case '#':size=data_size;flags=0;break; // extern structs
 	}
 	size*=length;

+ 6 - 0
blitz.mod/blitz_types.h

@@ -41,6 +41,12 @@ typedef BBInterfaceTable*	BBINTERFACETABLE;
 typedef BBInterface*	BBINTERFACE;
 typedef BBInterfaceOffsets * BBINTERFACEOFFSETS;
 
+#ifdef __x86_64__
+#include <immintrin.h>
+typedef __m128i			BBINT128;
+typedef __m128			BBFLOAT128;
+#endif
+
 extern const char *bbVoidTypeTag;	//"?"
 extern const char *bbByteTypeTag;	//"b"
 extern const char *bbShortTypeTag;	//"s"