Mercurial > octave-nkf
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); |