From: Zack Rusin Date: Thu, 18 Oct 2007 09:51:01 +0000 (-0400) Subject: Implement ex2 opcode X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1c955171c84f5d062f5f0be983de636a1817c6f7;p=mesa.git Implement ex2 opcode --- 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;