From 1c955171c84f5d062f5f0be983de636a1817c6f7 Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Thu, 18 Oct 2007 05:51:01 -0400 Subject: Implement ex2 opcode --- src/mesa/pipe/llvm/instructions.cpp | 9 +++++++++ src/mesa/pipe/llvm/instructions.h | 1 + src/mesa/pipe/llvm/llvmtgsi.cpp | 4 +++- 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src/mesa') diff --git a/src/mesa/pipe/llvm/instructions.cpp b/src/mesa/pipe/llvm/instructions.cpp index ee67ae0eed..1e6b74eac6 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 0ca9bd25a7..de33b79e37 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 91c2d9beb8..5ad45ff6cc 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; -- cgit v1.2.3