diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index 2ce828e..dae58d1 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -2655,11 +2655,11 @@
 	auto src = Operand(this, state, insn.word(3));
 	if(src.isPointer())
 	{
-		state->createPointer(insn.resultId(), src.Pointer(0));
+		state->createPointer(insn.resultId(), src.Pointer());
 	}
 	else if(src.isSampledImage())
 	{
-		state->createSampledImage(insn.resultId(), src.SampledImage(0));
+		state->createSampledImage(insn.resultId(), src.SampledImage());
 	}
 	else
 	{
diff --git a/src/Pipeline/SpirvShader.hpp b/src/Pipeline/SpirvShader.hpp
index cc204fd..b25c131 100644
--- a/src/Pipeline/SpirvShader.hpp
+++ b/src/Pipeline/SpirvShader.hpp
@@ -1269,11 +1269,11 @@
 			return SIMD::UInt(constant[i]);
 		}
 
-		const SIMD::Pointer &Pointer(uint32_t i) const
+		const SIMD::Pointer &Pointer() const
 		{
 			ASSERT(intermediate == nullptr);
 
-			return pointer[i];
+			return *pointer;
 		}
 
 		bool isPointer() const
@@ -1281,11 +1281,11 @@
 			return (pointer != nullptr);
 		}
 
-		const SampledImagePointer &SampledImage(uint32_t i) const
+		const SampledImagePointer &SampledImage() const
 		{
 			ASSERT(intermediate == nullptr);
 
-			return sampledImage[i];
+			return *sampledImage;
 		}
 
 		bool isSampledImage() const
diff --git a/src/Pipeline/SpirvShaderArithmetic.cpp b/src/Pipeline/SpirvShaderArithmetic.cpp
index 6c92602..86acfe6 100644
--- a/src/Pipeline/SpirvShaderArithmetic.cpp
+++ b/src/Pipeline/SpirvShaderArithmetic.cpp
@@ -153,7 +153,7 @@
 		if(sizeof(void *) == 4)  // 32-bit pointers
 		{
 			SIMD::UInt bits;
-			src.Pointer(0).castTo(bits);
+			src.Pointer().castTo(bits);
 
 			auto &dst = state->createIntermediate(resultID, 1);
 			dst.move(0, bits);
@@ -162,7 +162,7 @@
 		{
 			ASSERT(sizeof(void *) == 8);
 			// Casting a 64 bit pointer into 2 32bit integers
-			auto &ptr = src.Pointer(0);
+			auto &ptr = src.Pointer();
 			SIMD::UInt lowerBits, upperBits;
 			ptr.castTo(lowerBits, upperBits);
 
diff --git a/src/Pipeline/SpirvShaderMemory.cpp b/src/Pipeline/SpirvShaderMemory.cpp
index 2ebb0d1..476ecf4 100644
--- a/src/Pipeline/SpirvShaderMemory.cpp
+++ b/src/Pipeline/SpirvShaderMemory.cpp
@@ -125,8 +125,9 @@
 	if(value.isPointer())
 	{
 		VisitMemoryObject(pointerId, true, [&](const MemoryElement &el) {
+			ASSERT(el.index == 0);
 			auto p = GetElementPointer(ptr, el.offset, interleavedByLane);
-			p.Store(value.Pointer(el.index), robustness, mask, atomic, memoryOrder);
+			p.Store(value.Pointer(), robustness, mask, atomic, memoryOrder);
 		});
 	}
 	else
