Index: libcxx/include/experimental/simd =================================================================== --- libcxx/include/experimental/simd +++ libcxx/include/experimental/simd @@ -978,52 +978,52 @@ __simd_reference operator+=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) + __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) + __val); } __simd_reference operator-=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) - __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) - __val); } __simd_reference operator*=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) * __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) * __val); } __simd_reference operator/=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) / __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) / __val); } __simd_reference operator%=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) % __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) % __val); } __simd_reference operator>>=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) >> __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) >> __val); } __simd_reference operator<<=(_Vp __val) && { - return std::move(*this) = __ptr_->__get(__index_) - << __from_value_type(__val); + return std::move(*this) = + __from_value_type(__ptr_->__get(__index_) << __val); } __simd_reference operator&=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) & __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) & __val); } __simd_reference operator|=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) | __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) | __val); } __simd_reference operator^=(_Vp __val) && { return std::move(*this) = - __ptr_->__get(__index_) ^ __from_value_type(__val); + __from_value_type(__ptr_->__get(__index_) ^ __val); } }; Index: libcxx/test/std/experimental/simd/simd.access/default.pass.cpp =================================================================== --- libcxx/test/std/experimental/simd/simd.access/default.pass.cpp +++ libcxx/test/std/experimental/simd/simd.access/default.pass.cpp @@ -160,11 +160,11 @@ } { auto c = a; - (void)(a[0] + (c[0] >>= a[0])); + (void)(a[0] + (c[0] >>= b[0])); } { auto c = a; - (void)(a[0] + (c[0] <<= a[0])); + (void)(a[0] + (c[0] <<= b[0])); } { auto c = a; Index: libcxx/test/std/experimental/simd/simd.mask.access/default.pass.cpp =================================================================== --- libcxx/test/std/experimental/simd/simd.mask.access/default.pass.cpp +++ libcxx/test/std/experimental/simd/simd.mask.access/default.pass.cpp @@ -159,11 +159,11 @@ } { auto c = a; - (void)(a[0] + (c[0] >>= a[0])); + (void)(a[0] + (c[0] >>= b[0])); } { auto c = a; - (void)(a[0] + (c[0] <<= a[0])); + (void)(a[0] + (c[0] <<= b[0])); } { auto c = a;