comparison libinterp/corefcn/jit-typeinfo.h @ 18582:c31fe3239c8b draft

partial support of single/uint16
author LYH <lyh.kernel@gmail.com>
date Fri, 21 Mar 2014 14:59:38 -0400
parents 4d90e104bf35
children 67445219aee2
comparison
equal deleted inserted replaced
18581:f3314c4b9266 18582:c31fe3239c8b
455 455
456 static jit_type *get_scalar (void) { return instance->scalar; } 456 static jit_type *get_scalar (void) { return instance->scalar; }
457 457
458 static llvm::Type *get_scalar_llvm (void) 458 static llvm::Type *get_scalar_llvm (void)
459 { return instance->scalar->to_llvm (); } 459 { return instance->scalar->to_llvm (); }
460
461 static jit_type *get_single (void) { return instance->single; }
460 462
461 static jit_type *get_scalar_ptr (void) { return instance->scalar_ptr; } 463 static jit_type *get_scalar_ptr (void) { return instance->scalar_ptr; }
462 464
463 static jit_type *get_any_ptr (void) { return instance->any_ptr; } 465 static jit_type *get_any_ptr (void) { return instance->any_ptr; }
464 466
788 790
789 llvm::Value *complex_new (llvm::Value *real, llvm::Value *imag); 791 llvm::Value *complex_new (llvm::Value *real, llvm::Value *imag);
790 792
791 void create_int (size_t nbits); 793 void create_int (size_t nbits);
792 794
795 void create_uint (size_t nbits);
796
793 jit_type *intN (size_t nbits) const; 797 jit_type *intN (size_t nbits) const;
798
799 jit_type *uintN (size_t nbits) const;
794 800
795 static jit_typeinfo *instance; 801 static jit_typeinfo *instance;
796 802
797 llvm::Module *module; 803 llvm::Module *module;
798 llvm::ExecutionEngine *engine; 804 llvm::ExecutionEngine *engine;
805 811
806 std::vector<jit_type*> id_to_type; 812 std::vector<jit_type*> id_to_type;
807 jit_type *any; 813 jit_type *any;
808 jit_type *matrix; 814 jit_type *matrix;
809 jit_type *scalar; 815 jit_type *scalar;
816 jit_type *single;
810 jit_type *scalar_ptr; // a fake type for interfacing with C++ 817 jit_type *scalar_ptr; // a fake type for interfacing with C++
811 jit_type *any_ptr; // a fake type for interfacing with C++ 818 jit_type *any_ptr; // a fake type for interfacing with C++
812 jit_type *range; 819 jit_type *range;
813 jit_type *string; 820 jit_type *string;
814 jit_type *boolean; 821 jit_type *boolean;
815 jit_type *index; 822 jit_type *index;
816 jit_type *complex; 823 jit_type *complex;
817 jit_type *unknown_function; 824 jit_type *unknown_function;
818 std::map<size_t, jit_type *> ints; 825 std::map<size_t, jit_type *> ints;
826 std::map<size_t, jit_type *> uints;
819 std::map<std::string, jit_type *> builtins; 827 std::map<std::string, jit_type *> builtins;
820 828
821 llvm::StructType *complex_ret; 829 llvm::StructType *complex_ret;
822 830
823 std::vector<jit_operation> binary_ops; 831 std::vector<jit_operation> binary_ops;