Revision a8174147251f7b525dbecd1d2c9dc176be94eaad authored by Zalman Stern on 24 September 2022, 00:16:33 UTC, committed by GitHub on 24 September 2022, 00:16:33 UTC
Have ```CodeGen_LLVM::get_vector_type``` return the void type if passed the void type as a scalar base. This makes it possible to call intrinsics returning void via ```CodeGenn_LLVM::call_intrin```.

Should be very safe as currently this anything doing this would fail inside the routine. The change breaks the invariant that any thing returned from get_vector_type is a vector type, but propagating void for function return types is a pretty standard behavior and if this was not intended, it will very likely fail just outside this instead of having failed inside the use. I.e. very low chance of spurious errors from this.
1 parent 6499ad1
Raw File
Halide-VS2017.natvis
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">

	<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" MenuName="Add to Image Watch"/>

	<Type Name="halide_buffer_t">
		<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
	</Type>

	<Type Name="halide_buffer_t">
		<Expand>
			<Synthetic Name="[type]" Condition='type.code == 0'>
				<DisplayString Condition='type.bits ==  8'>INT8</DisplayString>
				<DisplayString Condition='type.bits == 16'>INT16</DisplayString>
				<DisplayString Condition='type.bits == 32'>INT32</DisplayString>
			</Synthetic>
			<Synthetic Name="[type]" Condition='type.code == 1'>
				<DisplayString Condition='type.bits ==  8'>UINT8</DisplayString>
				<DisplayString Condition='type.bits == 16'>UINT16</DisplayString>
				<DisplayString Condition='type.bits == 32'>UINT32</DisplayString>
			</Synthetic>
			<Synthetic Name="[type]" Condition='type.code == 2'>
				<DisplayString Condition='type.bits == 16'>FLOAT16</DisplayString>
				<DisplayString Condition='type.bits == 32'>FLOAT32</DisplayString>
				<DisplayString Condition='type.bits == 64'>FLOAT64</DisplayString>
			</Synthetic>
			<Item Name="[channels]">dim[2].extent > 1 ? dim[2].extent : 1</Item>
			<Item Name="[width]">dim[0].extent</Item>
			<Item Name="[height]">dim[1].extent</Item>
			<Item Name="[data]">host</Item>
			<Item Name="[stride]">dim[1].stride * type.bits / 8</Item>
		</Expand>
	</Type>

	<Type Name="Halide::Runtime::Buffer&lt;*&gt;">
		<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
	</Type>
	
	<Type Name="Halide::Runtime::Buffer&lt;*&gt;">
		<Expand>
			<ExpandedItem>
				buf
			</ExpandedItem>
		</Expand>
	</Type>
	
	<Type Name="Halide::Buffer&lt;*&gt;">
		<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
	</Type>
	
	<Type Name="Halide::Buffer&lt;*&gt;">
		<Expand>
			<ExpandedItem>
				(Halide.dll!Halide::Internal::BufferContents*)contents.ptr
			</ExpandedItem>
		</Expand>
	</Type>

	<Type Name="Halide::Internal::BufferContents">
		<Expand>
			<ExpandedItem>
				buf.buf
			</ExpandedItem>
		</Expand>
	</Type>

</AutoVisualizer>
back to top