comparison libinterp/interp-core/pt-jit.cc @ 15893:1f076c40c133

Do not use vectorized llvm commands for complex numbers * jit-typeinfo.cc (octave_jit_complex_mul): New function. (jit_typeinfo::jit_typeinfo): Implement complex numbers using an llvm array and use create_internal/create_external. (jit_typeinfo::complex_real, jit_typeinfo::complex_imag, jit_typeinfo::pack_complex, jit_typeinfo::unpack_complex): Implement complex numbers using an llvm array. (jit_typeinfo::add_binary_op, jit_typeinfo::add_binary_icmp, jit_typeinfo::add_binary_fcmp, jit_typeinfo::create_identity, jit_typeinfo::register_intrinsic, jit_typeinfo::register_generic, jit_typeinfo::mirror_binary): Use create_internal/create_external. (jit_typeinfo::type_of): Correctly determine complex type. * jit-typeinfo.h (jit_typeinfo::create_complex, jit_typeinfo::create_internal, jit_typeinfo::create_external): New function. * pt-jit.cc (jit_convert_llvm::visit): Create an array for complex constants.
author Max Brister <max@2bass.com>
date Thu, 03 Jan 2013 12:35:10 -0700
parents 44272909d926
children 0cbac4d3a81c e125db98263f
comparison
equal deleted inserted replaced
15890:44f30dcd87e0 15893:1f076c40c133
1254 1254
1255 void 1255 void
1256 jit_convert_llvm::visit (jit_const_complex& cc) 1256 jit_convert_llvm::visit (jit_const_complex& cc)
1257 { 1257 {
1258 llvm::Type *scalar_t = jit_typeinfo::get_scalar_llvm (); 1258 llvm::Type *scalar_t = jit_typeinfo::get_scalar_llvm ();
1259 llvm::Constant *values[2];
1260 Complex value = cc.value (); 1259 Complex value = cc.value ();
1261 values[0] = llvm::ConstantFP::get (scalar_t, value.real ()); 1260 llvm::Value *real = llvm::ConstantFP::get (scalar_t, value.real ());
1262 values[1] = llvm::ConstantFP::get (scalar_t, value.imag ()); 1261 llvm::Value *imag = llvm::ConstantFP::get (scalar_t, value.imag ());
1263 cc.stash_llvm (llvm::ConstantVector::get (values)); 1262 cc.stash_llvm (jit_typeinfo::create_complex (real, imag));
1264 } 1263 }
1265 1264
1266 void jit_convert_llvm::visit (jit_const_index& ci) 1265 void jit_convert_llvm::visit (jit_const_index& ci)
1267 { 1266 {
1268 ci.stash_llvm (llvm::ConstantInt::get (ci.type_llvm (), ci.value ())); 1267 ci.stash_llvm (llvm::ConstantInt::get (ci.type_llvm (), ci.value ()));