diff options
author | Zack Rusin <[email protected]> | 2007-10-18 05:51:01 -0400 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2007-10-24 11:21:04 -0400 |
commit | 1c955171c84f5d062f5f0be983de636a1817c6f7 (patch) | |
tree | 889721ce994dc41c0968f5c7016e59e9101e888e /src/mesa | |
parent | bd38f4d92125e648b276344ebb2ab9d517b3e7a5 (diff) |
Implement ex2 opcode
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/pipe/llvm/instructions.cpp | 9 | ||||
-rw-r--r-- | src/mesa/pipe/llvm/instructions.h | 1 | ||||
-rw-r--r-- | src/mesa/pipe/llvm/llvmtgsi.cpp | 4 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/mesa/pipe/llvm/instructions.cpp b/src/mesa/pipe/llvm/instructions.cpp index ee67ae0eeda..1e6b74eac62 100644 --- a/src/mesa/pipe/llvm/instructions.cpp +++ b/src/mesa/pipe/llvm/instructions.cpp @@ -302,3 +302,12 @@ llvm::Value * Instructions::dst(llvm::Value *in1, llvm::Value *in2) ry, z, w); } +llvm::Value * Instructions::ex2(llvm::Value *in) +{ + llvm::Value *val = callPow(ConstantFP::get(Type::FloatTy, APFloat(2.f)), + new ExtractElementInst(in, unsigned(0), + name("x1"), + m_block)); + return vectorFromVals(val, val, val, val); +} + diff --git a/src/mesa/pipe/llvm/instructions.h b/src/mesa/pipe/llvm/instructions.h index 0ca9bd25a76..de33b79e378 100644 --- a/src/mesa/pipe/llvm/instructions.h +++ b/src/mesa/pipe/llvm/instructions.h @@ -19,6 +19,7 @@ public: llvm::Value *dp4(llvm::Value *in1, llvm::Value *in2); llvm::Value *dph(llvm::Value *in1, llvm::Value *in2); llvm::Value *dst(llvm::Value *in1, llvm::Value *in2); + llvm::Value *ex2(llvm::Value *in1); llvm::Value *lit(llvm::Value *in1); llvm::Value *madd(llvm::Value *in1, llvm::Value *in2, llvm::Value *in2); diff --git a/src/mesa/pipe/llvm/llvmtgsi.cpp b/src/mesa/pipe/llvm/llvmtgsi.cpp index 91c2d9beb8e..5ad45ff6ccf 100644 --- a/src/mesa/pipe/llvm/llvmtgsi.cpp +++ b/src/mesa/pipe/llvm/llvmtgsi.cpp @@ -249,7 +249,9 @@ translate_instruction(llvm::Module *module, break; case TGSI_OPCODE_ROUND: break; - case TGSI_OPCODE_EXPBASE2: + case TGSI_OPCODE_EXPBASE2: { + out = instr->ex2(inputs[0]); + } break; case TGSI_OPCODE_LOGBASE2: break; |