From: Nicolas Capens Date: Fri, 2 Dec 2016 20:30:56 +0000 (-0500) Subject: Deprecate the Long1 type. X-Git-Tag: android-x86-7.1-r1~291 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=45f187a368c383d2f44f369b965d361e1ce33e44;p=android-x86%2Fexternal-swiftshader.git Deprecate the Long1 type. It corresponds to a scalar MMX type, used mainly for vector shifts. We no longer need these shifts, and they would have been non-trivial to emulate with SSE2. Change-Id: I77a94ff5a62e043b991d4d6fa9ddd436d450181d Reviewed-on: https://swiftshader-review.googlesource.com/8249 Reviewed-by: Nicolas Capens Reviewed-by: Alexis Hétu Tested-by: Nicolas Capens --- diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp index 95fe59ce7..efcd874b2 100644 --- a/src/Reactor/LLVMReactor.cpp +++ b/src/Reactor/LLVMReactor.cpp @@ -2879,20 +2879,6 @@ namespace sw return x86::psraw(lhs, rhs); } - RValue operator<<(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createShl(lhs.value, rhs.value)); - - return x86::psllw(lhs, rhs); - } - - RValue operator>>(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createAShr(lhs.value, rhs.value)); - - return x86::psraw(lhs, rhs); - } - RValue operator+=(Short4 &lhs, RValue rhs) { return lhs = lhs + rhs; @@ -2943,16 +2929,6 @@ namespace sw return lhs = lhs >> rhs; } - RValue operator<<=(Short4 &lhs, RValue rhs) - { - return lhs = lhs << rhs; - } - - RValue operator>>=(Short4 &lhs, RValue rhs) - { - return lhs = lhs >> rhs; - } - // RValue operator+(RValue val) // { // return val; @@ -3353,20 +3329,6 @@ namespace sw return x86::psrlw(lhs, rhs); } - RValue operator<<(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createShl(lhs.value, rhs.value)); - - return As(x86::psllw(As(lhs), rhs)); - } - - RValue operator>>(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createLShr(lhs.value, rhs.value)); - - return x86::psrlw(lhs, rhs); - } - RValue operator<<=(UShort4 &lhs, unsigned char rhs) { return lhs = lhs << rhs; @@ -3377,16 +3339,6 @@ namespace sw return lhs = lhs >> rhs; } - RValue operator<<=(UShort4 &lhs, RValue rhs) - { - return lhs = lhs << rhs; - } - - RValue operator>>=(UShort4 &lhs, RValue rhs) - { - return lhs = lhs >> rhs; - } - RValue operator~(RValue val) { if(CPUID::supportsMMX2()) @@ -4086,31 +4038,6 @@ namespace sw return T(llvm::Type::getInt64Ty(*::context)); } - Long1::Long1(const RValue cast) - { - Value *undefCast = Nucleus::createInsertElement(V(UndefValue::get(VectorType::get(Int::getType(), 2))), cast.value, 0); - Value *zeroCast = Nucleus::createInsertElement(undefCast, V(Nucleus::createConstantInt(0)), 1); - - storeValue(Nucleus::createBitCast(zeroCast, Long1::getType())); - } - - Long1::Long1(RValue rhs) - { - storeValue(rhs.value); - } - - Type *Long1::getType() - { - if(CPUID::supportsMMX2()) - { - return MMX::getType(); - } - else - { - return T(VectorType::get(Long::getType(), 1)); - } - } - UInt::UInt(Argument argument) { storeValue(argument.value); @@ -4521,7 +4448,13 @@ namespace sw // movd mm0, lo // movd mm1, hi // punpckldq mm0, mm1 - storeValue(As(UnpackLow(As(Long1(RValue(lo))), As(Long1(RValue(hi))))).value); + + Value *loLong = Nucleus::createInsertElement(V(UndefValue::get(VectorType::get(Int::getType(), 2))), lo.value, 0); + loLong = Nucleus::createInsertElement(loLong, V(ConstantInt::get(Int::getType(), 0)), 1); + Value *hiLong = Nucleus::createInsertElement(V(UndefValue::get(VectorType::get(Int::getType(), 2))), hi.value, 0); + hiLong = Nucleus::createInsertElement(hiLong, V(ConstantInt::get(Int::getType(), 0)), 1); + + storeValue(As(UnpackLow(As(loLong), As(hiLong))).value); } else { @@ -4644,20 +4577,6 @@ namespace sw return x86::psrad(lhs, rhs); } - RValue operator<<(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createShl(lhs.value, rhs.value)); - - return x86::pslld(lhs, rhs); - } - - RValue operator>>(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createAShr(lhs.value, rhs.value)); - - return x86::psrad(lhs, rhs); - } - RValue operator+=(Int2 &lhs, RValue rhs) { return lhs = lhs + rhs; @@ -4708,16 +4627,6 @@ namespace sw return lhs = lhs >> rhs; } - RValue operator<<=(Int2 &lhs, RValue rhs) - { - return lhs = lhs << rhs; - } - - RValue operator>>=(Int2 &lhs, RValue rhs) - { - return lhs = lhs >> rhs; - } - // RValue operator+(RValue val) // { // return val; @@ -4740,7 +4649,7 @@ namespace sw } } - RValue UnpackLow(RValue x, RValue y) + RValue UnpackLow(RValue x, RValue y) { if(CPUID::supportsMMX2()) { @@ -4751,11 +4660,11 @@ namespace sw int shuffle[2] = {0, 2}; Value *packed = Nucleus::createShuffleVector(x.value, y.value, shuffle); - return RValue(Nucleus::createBitCast(packed, Long1::getType())); + return As(packed); } } - RValue UnpackHigh(RValue x, RValue y) + RValue UnpackHigh(RValue x, RValue y) { if(CPUID::supportsMMX2()) { @@ -4766,7 +4675,7 @@ namespace sw int shuffle[2] = {1, 3}; Value *packed = Nucleus::createShuffleVector(x.value, y.value, shuffle); - return RValue(Nucleus::createBitCast(packed, Long1::getType())); + return As(packed); } } @@ -4958,20 +4867,6 @@ namespace sw return x86::psrld(lhs, rhs); } - RValue operator<<(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createShl(lhs.value, rhs.value)); - - return As(x86::pslld(As(lhs), rhs)); - } - - RValue operator>>(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createLShr(lhs.value, rhs.value)); - - return x86::psrld(lhs, rhs); - } - RValue operator+=(UInt2 &lhs, RValue rhs) { return lhs = lhs + rhs; @@ -5022,16 +4917,6 @@ namespace sw return lhs = lhs >> rhs; } - RValue operator<<=(UInt2 &lhs, RValue rhs) - { - return lhs = lhs << rhs; - } - - RValue operator>>=(UInt2 &lhs, RValue rhs) - { - return lhs = lhs >> rhs; - } - // RValue operator+(RValue val) // { // return val; @@ -7097,18 +6982,18 @@ namespace sw return RValue(V(::builder->CreateCall2(pextrw, As(x).value, V(Nucleus::createConstantInt(i))))); } - RValue punpckldq(RValue x, RValue y) + RValue punpckldq(RValue x, RValue y) { llvm::Function *punpckldq = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_punpckldq); - return As(V(::builder->CreateCall2(punpckldq, As(x).value, As(y).value))); + return As(V(::builder->CreateCall2(punpckldq, As(x).value, As(y).value))); } - RValue punpckhdq(RValue x, RValue y) + RValue punpckhdq(RValue x, RValue y) { llvm::Function *punpckhdq = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_punpckhdq); - return As(V(::builder->CreateCall2(punpckhdq, As(x).value, As(y).value))); + return As(V(::builder->CreateCall2(punpckhdq, As(x).value, As(y).value))); } RValue punpcklbw(RValue x, RValue y) @@ -7384,48 +7269,6 @@ namespace sw } } - RValue psrlw(RValue x, RValue y) - { - llvm::Function *psrlw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psrl_w); - - return As(V(::builder->CreateCall2(psrlw, As(x).value, As(y).value))); - } - - RValue psraw(RValue x, RValue y) - { - llvm::Function *psraw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psra_w); - - return As(V(::builder->CreateCall2(psraw, As(x).value, As(y).value))); - } - - RValue psllw(RValue x, RValue y) - { - llvm::Function *psllw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psll_w); - - return As(V(::builder->CreateCall2(psllw, As(x).value, As(y).value))); - } - - RValue pslld(RValue x, RValue y) - { - llvm::Function *pslld = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psll_d); - - return As(V(::builder->CreateCall2(pslld, As(x).value, As(y).value))); - } - - RValue psrld(RValue x, RValue y) - { - llvm::Function *psrld = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psrl_d); - - return As(V(::builder->CreateCall2(psrld, As(x).value, As(y).value))); - } - - RValue psrad(RValue x, RValue y) - { - llvm::Function *psrld = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psra_d); - - return As(V(::builder->CreateCall2(psrld, As(x).value, As(y).value))); - } - RValue pmaxsd(RValue x, RValue y) { llvm::Function *pmaxsd = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pmaxsd); diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp index f75fa8bd9..2ed164b60 100644 --- a/src/Reactor/Reactor.hpp +++ b/src/Reactor/Reactor.hpp @@ -48,7 +48,6 @@ namespace sw class Int4; class UInt4; class Long; - class Long1; class Float; class Float2; class Float4; @@ -765,8 +764,6 @@ namespace sw RValue operator^(RValue lhs, RValue rhs); RValue operator<<(RValue lhs, unsigned char rhs); RValue operator>>(RValue lhs, unsigned char rhs); - RValue operator<<(RValue lhs, RValue rhs); - RValue operator>>(RValue lhs, RValue rhs); RValue operator+=(Short4 &lhs, RValue rhs); RValue operator-=(Short4 &lhs, RValue rhs); RValue operator*=(Short4 &lhs, RValue rhs); @@ -777,8 +774,6 @@ namespace sw RValue operator^=(Short4 &lhs, RValue rhs); RValue operator<<=(Short4 &lhs, unsigned char rhs); RValue operator>>=(Short4 &lhs, unsigned char rhs); - RValue operator<<=(Short4 &lhs, RValue rhs); - RValue operator>>=(Short4 &lhs, RValue rhs); // RValue operator+(RValue val); RValue operator-(RValue val); RValue operator~(RValue val); @@ -845,8 +840,6 @@ namespace sw RValue operator^(RValue lhs, RValue rhs); RValue operator<<(RValue lhs, unsigned char rhs); RValue operator>>(RValue lhs, unsigned char rhs); - RValue operator<<(RValue lhs, RValue rhs); - RValue operator>>(RValue lhs, RValue rhs); // RValue operator+=(UShort4 &lhs, RValue rhs); // RValue operator-=(UShort4 &lhs, RValue rhs); // RValue operator*=(UShort4 &lhs, RValue rhs); @@ -857,8 +850,6 @@ namespace sw // RValue operator^=(UShort4 &lhs, RValue rhs); RValue operator<<=(UShort4 &lhs, unsigned char rhs); RValue operator>>=(UShort4 &lhs, unsigned char rhs); - RValue operator<<=(UShort4 &lhs, RValue rhs); - RValue operator>>=(UShort4 &lhs, RValue rhs); // RValue operator+(RValue val); // RValue operator-(RValue val); RValue operator~(RValue val); @@ -1128,73 +1119,6 @@ namespace sw // RValue RoundLong(RValue cast); RValue AddAtomic( RValue> x, RValue y); - class Long1 : public LValue - { - public: - // Long1(Argument argument); - - // explicit Long1(RValue cast); - // explicit Long1(RValue cast); - // explicit Long1(RValue cast); - explicit Long1(RValue cast); - // explicit Long1(RValue cast); - - // Long1(); - // Long1(qword x); - Long1(RValue rhs); - // Long1(RValue rhs); - // Long1(const Long1 &rhs); - // Long1(const Reference &rhs); - // Long1(const ULong1 &rhs); - // Long1(const Reference &rhs); - - // RValue operator=(qword rhs); - // RValue operator=(RValue rhs); - // RValue operator=(RValue rhs); - // RValue operator=(const Long1 &rhs); - // RValue operator=(const Reference &rhs); - // RValue operator=(const ULong1 &rhs); - // RValue operator=(const Reference &rhs); - - static Type *getType(); - }; - -// RValue operator+(RValue lhs, RValue rhs); -// RValue operator-(RValue lhs, RValue rhs); -// RValue operator*(RValue lhs, RValue rhs); -// RValue operator/(RValue lhs, RValue rhs); -// RValue operator%(RValue lhs, RValue rhs); -// RValue operator&(RValue lhs, RValue rhs); -// RValue operator|(RValue lhs, RValue rhs); -// RValue operator^(RValue lhs, RValue rhs); -// RValue operator<<(RValue lhs, RValue rhs); -// RValue operator>>(RValue lhs, RValue rhs); -// RValue operator+=(Long1 &lhs, RValue rhs); -// RValue operator-=(Long1 &lhs, RValue rhs); -// RValue operator*=(Long1 &lhs, RValue rhs); -// RValue operator/=(Long1 &lhs, RValue rhs); -// RValue operator%=(Long1 &lhs, RValue rhs); -// RValue operator&=(Long1 &lhs, RValue rhs); -// RValue operator|=(Long1 &lhs, RValue rhs); -// RValue operator^=(Long1 &lhs, RValue rhs); -// RValue operator<<=(Long1 &lhs, RValue rhs); -// RValue operator>>=(Long1 &lhs, RValue rhs); -// RValue operator+(RValue val); -// RValue operator-(RValue val); -// RValue operator~(RValue val); -// RValue operator++(Long1 &val, int); // Post-increment -// const Long1 &operator++(Long1 &val); // Pre-increment -// RValue operator--(Long1 &val, int); // Post-decrement -// const Long1 &operator--(Long1 &val); // Pre-decrement -// RValue operator<(RValue lhs, RValue rhs); -// RValue operator<=(RValue lhs, RValue rhs); -// RValue operator>(RValue lhs, RValue rhs); -// RValue operator>=(RValue lhs, RValue rhs); -// RValue operator!=(RValue lhs, RValue rhs); -// RValue operator==(RValue lhs, RValue rhs); - -// RValue RoundLong1(RValue cast); - class UInt : public LValue { public: @@ -1294,8 +1218,6 @@ namespace sw RValue operator^(RValue lhs, RValue rhs); RValue operator<<(RValue lhs, unsigned char rhs); RValue operator>>(RValue lhs, unsigned char rhs); - RValue operator<<(RValue lhs, RValue rhs); - RValue operator>>(RValue lhs, RValue rhs); RValue operator+=(Int2 &lhs, RValue rhs); RValue operator-=(Int2 &lhs, RValue rhs); // RValue operator*=(Int2 &lhs, RValue rhs); @@ -1306,8 +1228,6 @@ namespace sw RValue operator^=(Int2 &lhs, RValue rhs); RValue operator<<=(Int2 &lhs, unsigned char rhs); RValue operator>>=(Int2 &lhs, unsigned char rhs); - RValue operator<<=(Int2 &lhs, RValue rhs); - RValue operator>>=(Int2 &lhs, RValue rhs); // RValue operator+(RValue val); // RValue operator-(RValue val); RValue operator~(RValue val); @@ -1323,8 +1243,8 @@ namespace sw // RValue operator==(RValue lhs, RValue rhs); // RValue RoundInt(RValue cast); - RValue UnpackLow(RValue x, RValue y); - RValue UnpackHigh(RValue x, RValue y); + RValue UnpackLow(RValue x, RValue y); + RValue UnpackHigh(RValue x, RValue y); RValue Extract(RValue val, int i); RValue Insert(RValue val, RValue element, int i); @@ -1354,8 +1274,6 @@ namespace sw RValue operator^(RValue lhs, RValue rhs); RValue operator<<(RValue lhs, unsigned char rhs); RValue operator>>(RValue lhs, unsigned char rhs); - RValue operator<<(RValue lhs, RValue rhs); - RValue operator>>(RValue lhs, RValue rhs); RValue operator+=(UInt2 &lhs, RValue rhs); RValue operator-=(UInt2 &lhs, RValue rhs); // RValue operator*=(UInt2 &lhs, RValue rhs); @@ -1366,8 +1284,6 @@ namespace sw RValue operator^=(UInt2 &lhs, RValue rhs); RValue operator<<=(UInt2 &lhs, unsigned char rhs); RValue operator>>=(UInt2 &lhs, unsigned char rhs); - RValue operator<<=(UInt2 &lhs, RValue rhs); - RValue operator>>=(UInt2 &lhs, RValue rhs); // RValue operator+(RValue val); // RValue operator-(RValue val); RValue operator~(RValue val); diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp index 154967b4f..973180c7f 100644 --- a/src/Reactor/SubzeroReactor.cpp +++ b/src/Reactor/SubzeroReactor.cpp @@ -3113,20 +3113,6 @@ namespace sw return RValue(Nucleus::createAShr(lhs.value, C(::context->getConstantInt32(rhs)))); } - RValue operator<<(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createShl(lhs.value, rhs.value)); - - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); - } - - RValue operator>>(RValue lhs, RValue rhs) - { - // return RValue(Nucleus::createAShr(lhs.value, rhs.value)); - - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); - } - RValue operator+=(Short4 &lhs, RValue rhs) { return lhs = lhs + rhs; @@ -3177,16 +3163,6 @@ namespace sw return lhs = lhs >> rhs; } - RValue operator<<=(Short4 &lhs, RValue rhs) - { - return lhs = lhs << rhs; - } - - RValue operator>>=(Short4 &lhs, RValue rhs) - { - return lhs = lhs >> rhs; - } - // RValue operator+(RValue val) // { // return val; @@ -3533,16 +3509,6 @@ namespace sw return RValue(Nucleus::createLShr(lhs.value, C(::context->getConstantInt32(rhs)))); } - RValue operator<<(RValue lhs, RValue rhs) - { - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); - } - - RValue operator>>(RValue lhs, RValue rhs) - { - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); - } - RValue operator<<=(UShort4 &lhs, unsigned char rhs) { return lhs = lhs << rhs; @@ -3553,16 +3519,6 @@ namespace sw return lhs = lhs >> rhs; } - RValue operator<<=(UShort4 &lhs, RValue rhs) - { - return lhs = lhs << rhs; - } - - RValue operator>>=(UShort4 &lhs, RValue rhs) - { - return lhs = lhs >> rhs; - } - RValue operator~(RValue val) { return RValue(Nucleus::createNot(val.value)); @@ -4253,21 +4209,6 @@ namespace sw return T(Ice::IceType_i64); } - Long1::Long1(const RValue cast) - { - assert(false && "UNIMPLEMENTED"); - } - - Long1::Long1(RValue rhs) - { - storeValue(rhs.value); - } - - Type *Long1::getType() - { - assert(false && "UNIMPLEMENTED"); return nullptr; - } - UInt::UInt(Argument argument) { storeValue(argument.value); @@ -4723,16 +4664,6 @@ namespace sw return RValue(Nucleus::createAShr(lhs.value, C(::context->getConstantInt32(rhs)))); } - RValue operator<<(RValue lhs, RValue rhs) - { - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); - } - - RValue operator>>(RValue lhs, RValue rhs) - { - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); - } - RValue operator+=(Int2 &lhs, RValue rhs) { return lhs = lhs + rhs; @@ -4783,16 +4714,6 @@ namespace sw return lhs = lhs >> rhs; } - RValue operator<<=(Int2 &lhs, RValue rhs) - { - return lhs = lhs << rhs; - } - - RValue operator>>=(Int2 &lhs, RValue rhs) - { - return lhs = lhs >> rhs; - } - // RValue operator+(RValue val) // { // return val; @@ -4808,14 +4729,14 @@ namespace sw return RValue(Nucleus::createNot(val.value)); } - RValue UnpackLow(RValue x, RValue y) + RValue UnpackLow(RValue x, RValue y) { - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); + assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); } - RValue UnpackHigh(RValue x, RValue y) + RValue UnpackHigh(RValue x, RValue y) { - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); + assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); } RValue Extract(RValue val, int i) @@ -4942,16 +4863,6 @@ namespace sw return RValue(Nucleus::createLShr(lhs.value, C(::context->getConstantInt32(rhs)))); } - RValue operator<<(RValue lhs, RValue rhs) - { - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); - } - - RValue operator>>(RValue lhs, RValue rhs) - { - assert(false && "UNIMPLEMENTED"); return RValue(V(nullptr)); - } - RValue operator+=(UInt2 &lhs, RValue rhs) { return lhs = lhs + rhs; @@ -5002,16 +4913,6 @@ namespace sw return lhs = lhs >> rhs; } - RValue operator<<=(UInt2 &lhs, RValue rhs) - { - return lhs = lhs << rhs; - } - - RValue operator>>=(UInt2 &lhs, RValue rhs) - { - return lhs = lhs >> rhs; - } - // RValue operator+(RValue val) // { // return val; diff --git a/src/Reactor/x86.hpp b/src/Reactor/x86.hpp index a0b8ac70e..5c08167b8 100644 --- a/src/Reactor/x86.hpp +++ b/src/Reactor/x86.hpp @@ -86,8 +86,8 @@ namespace sw RValue punpckhwd(RValue x, RValue y); RValue pinsrw(RValue x, RValue y, unsigned int i); RValue pextrw(RValue x, unsigned int i); - RValue punpckldq(RValue x, RValue y); - RValue punpckhdq(RValue x, RValue y); + RValue punpckldq(RValue x, RValue y); + RValue punpckhdq(RValue x, RValue y); RValue punpcklbw(RValue x, RValue y); RValue punpckhbw(RValue x, RValue y); RValue paddb(RValue x, RValue y); @@ -125,13 +125,6 @@ namespace sw RValue psrld(RValue x, unsigned char y); RValue psrld(RValue x, unsigned char y); - RValue psrlw(RValue x, RValue y); - RValue psraw(RValue x, RValue y); - RValue psllw(RValue x, RValue y); - RValue pslld(RValue x, RValue y); - RValue psrld(RValue x, RValue y); - RValue psrad(RValue x, RValue y); - RValue pmaxsd(RValue x, RValue y); RValue pminsd(RValue x, RValue y); RValue pmaxud(RValue x, RValue y); diff --git a/src/Shader/SamplerCore.cpp b/src/Shader/SamplerCore.cpp index d33acc39f..67b0f05a0 100644 --- a/src/Shader/SamplerCore.cpp +++ b/src/Shader/SamplerCore.cpp @@ -1908,8 +1908,8 @@ namespace sw c.z = *Pointer(buffer[f2] + 4 * index[2]); c.z = As(UnpackLow(c.z, *Pointer(buffer[f3] + 4 * index[3]))); c.y = c.x; - c.x = As(UnpackLow(As(c.x), As(c.z))); - c.y = As(UnpackHigh(As(c.y), As(c.z))); + c.x = UnpackLow(As(c.x), As(c.z)); + c.y = UnpackHigh(As(c.y), As(c.z)); break; case 1: c.x = Insert(c.x, *Pointer(buffer[f0] + 2 * index[0]), 0); diff --git a/src/Shader/ShaderCore.cpp b/src/Shader/ShaderCore.cpp index 727ea71f9..be1ca2e18 100644 --- a/src/Shader/ShaderCore.cpp +++ b/src/Shader/ShaderCore.cpp @@ -425,10 +425,10 @@ namespace sw Int2 tmp2 = UnpackLow(row0, row1); Int2 tmp3 = UnpackLow(row2, row3); - row0 = As(UnpackLow(tmp2, tmp3)); - row1 = As(UnpackHigh(tmp2, tmp3)); - row2 = As(UnpackLow(tmp0, tmp1)); - row3 = As(UnpackHigh(tmp0, tmp1)); + row0 = UnpackLow(tmp2, tmp3); + row1 = UnpackHigh(tmp2, tmp3); + row2 = UnpackLow(tmp0, tmp1); + row3 = UnpackHigh(tmp0, tmp1); } void transpose4x4(Float4 &row0, Float4 &row1, Float4 &row2, Float4 &row3)