comparison libinterp/corefcn/jit-typeinfo.cc @ 18323:0122fad27435

jit compiler: Fix uminus op support with scalar type * libinterp/corefcn/jit-typeinfo.cc: Add missing overload for uminus support.
author LYH <lyh.kernel@gmail.com>
date Wed, 08 Jan 2014 21:58:43 +0100
parents 8d98ebeceab4
children 634d9989bf7b
comparison
equal deleted inserted replaced
18322:8b22a9215ec2 18323:0122fad27435
1245 destroy_fn.add_overload (create_identity(scalar)); 1245 destroy_fn.add_overload (create_identity(scalar));
1246 destroy_fn.add_overload (create_identity(boolean)); 1246 destroy_fn.add_overload (create_identity(boolean));
1247 destroy_fn.add_overload (create_identity(index)); 1247 destroy_fn.add_overload (create_identity(index));
1248 destroy_fn.add_overload (create_identity(complex)); 1248 destroy_fn.add_overload (create_identity(complex));
1249 1249
1250 // -------------------- scalar related operations --------------------
1251
1250 // now for binary scalar operations 1252 // now for binary scalar operations
1251 add_binary_op (scalar, octave_value::op_add, llvm::Instruction::FAdd); 1253 add_binary_op (scalar, octave_value::op_add, llvm::Instruction::FAdd);
1252 add_binary_op (scalar, octave_value::op_sub, llvm::Instruction::FSub); 1254 add_binary_op (scalar, octave_value::op_sub, llvm::Instruction::FSub);
1253 add_binary_op (scalar, octave_value::op_mul, llvm::Instruction::FMul); 1255 add_binary_op (scalar, octave_value::op_mul, llvm::Instruction::FMul);
1254 add_binary_op (scalar, octave_value::op_el_mul, llvm::Instruction::FMul); 1256 add_binary_op (scalar, octave_value::op_el_mul, llvm::Instruction::FMul);
1333 llvm::Value *mone = llvm::ConstantFP::get (scalar_t, -1); 1335 llvm::Value *mone = llvm::ConstantFP::get (scalar_t, -1);
1334 llvm::Value *val = fn.argument (builder, 0); 1336 llvm::Value *val = fn.argument (builder, 0);
1335 val = builder.CreateFMul (val, mone); 1337 val = builder.CreateFMul (val, mone);
1336 fn.do_return (builder, val); 1338 fn.do_return (builder, val);
1337 } 1339 }
1340 unary_ops[octave_value::op_uminus].add_overload (fn);
1338 1341
1339 fn = create_identity (scalar); 1342 fn = create_identity (scalar);
1340 unary_ops[octave_value::op_uplus].add_overload (fn); 1343 unary_ops[octave_value::op_uplus].add_overload (fn);
1341 unary_ops[octave_value::op_transpose].add_overload (fn); 1344 unary_ops[octave_value::op_transpose].add_overload (fn);
1342 unary_ops[octave_value::op_hermitian].add_overload (fn); 1345 unary_ops[octave_value::op_hermitian].add_overload (fn);