Avoid ambiguous vector casts.

Bug swiftshader:15

Change-Id: Ia42d21b4f2c9e19a839ffb414661f2dffa350692
Reviewed-on: https://swiftshader-review.googlesource.com/7711
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-on: https://swiftshader-review.googlesource.com/7630
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp
index ae7ad53..c0778af 100644
--- a/src/Reactor/SubzeroReactor.cpp
+++ b/src/Reactor/SubzeroReactor.cpp
@@ -1939,22 +1939,28 @@
 		assert(false && "UNIMPLEMENTED"); return nullptr;
 	}
 
+	Byte4::Byte4(RValue<Byte8> cast)
+	{
+	//	xyzw.parent = this;
+
+		storeValue(Nucleus::createBitCast(cast.value, getType()));
+	}
+
+	Byte4::Byte4(const Reference<Byte4> &rhs)
+	{
+	//	xyzw.parent = this;
+
+		assert(false && "UNIMPLEMENTED");
+	}
+
 	Type *Byte4::getType()
 	{
-		#if 0
-			return VectorType::get(Byte::getType(), 4);
-		#else
-			return UInt::getType();   // FIXME
-		#endif
+		assert(false && "UNIMPLEMENTED"); return nullptr;
 	}
 
 	Type *SByte4::getType()
 	{
-		#if 0
-			return VectorType::get(SByte::getType(), 4);
-		#else
-			return Int::getType();   // FIXME
-		#endif
+		assert(false && "UNIMPLEMENTED"); return nullptr;
 	}
 
 	Byte8::Byte8()
@@ -1965,11 +1971,8 @@
 	Byte8::Byte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
 	{
 	//	xyzw.parent = this;
-	}
 
-	Byte8::Byte8(int64_t x)
-	{
-	//	xyzw.parent = this;
+		assert(false && "UNIMPLEMENTED");
 	}
 
 	Byte8::Byte8(RValue<Byte8> rhs)
@@ -2190,13 +2193,6 @@
 		assert(false && "UNIMPLEMENTED");
 	}
 
-	SByte8::SByte8(int64_t x)
-	{
-	//	xyzw.parent = this;
-
-		assert(false && "UNIMPLEMENTED");
-	}
-
 	SByte8::SByte8(RValue<SByte8> rhs)
 	{
 	//	xyzw.parent = this;
@@ -2454,6 +2450,26 @@
 		assert(false && "UNIMPLEMENTED"); return nullptr;
 	}
 
+	Short2::Short2(RValue<Short4> cast)
+	{
+		assert(false && "UNIMPLEMENTED");
+	}
+
+	Type *Short2::getType()
+	{
+		assert(false && "UNIMPLEMENTED"); return nullptr;
+	}
+
+	UShort2::UShort2(RValue<UShort4> cast)
+	{
+		assert(false && "UNIMPLEMENTED");
+	}
+
+	Type *UShort2::getType()
+	{
+		assert(false && "UNIMPLEMENTED"); return nullptr;
+	}
+
 	Short4::Short4(RValue<Int> cast)
 	{
 		Value *extend = Nucleus::createZExt(cast.value, Long::getType());
@@ -2944,6 +2960,21 @@
 		assert(false && "UNIMPLEMENTED"); return RValue<UShort4>(V(nullptr));
 	}
 
+	RValue<UShort4> operator&(RValue<UShort4> lhs, RValue<UShort4> rhs)
+	{
+		assert(false && "UNIMPLEMENTED"); return RValue<UShort4>(V(nullptr));
+	}
+
+	RValue<UShort4> operator|(RValue<UShort4> lhs, RValue<UShort4> rhs)
+	{
+		assert(false && "UNIMPLEMENTED"); return RValue<UShort4>(V(nullptr));
+	}
+
+	RValue<UShort4> operator^(RValue<UShort4> lhs, RValue<UShort4> rhs)
+	{
+		assert(false && "UNIMPLEMENTED"); return RValue<UShort4>(V(nullptr));
+	}
+
 	RValue<UShort4> operator<<(RValue<UShort4> lhs, unsigned char rhs)
 	{
 		assert(false && "UNIMPLEMENTED"); return RValue<UShort4>(V(nullptr));