@@ -739,6 +739,15 @@ def CheckAccessFullyMapped : DXILOp<71, checkAccessFullyMapped> {
739739 let stages = [Stages<DXIL1_0, [all_stages]>];
740740}
741741
742+ def Discard : DXILOp<82, discard> {
743+ let Doc = "discard the current pixel";
744+ let LLVMIntrinsic = int_dx_clip;
745+ let arguments = [Int1Ty];
746+ let result = VoidTy;
747+ let stages = [Stages<DXIL1_0, [pixel]>];
748+ let attributes = [Attributes<DXIL1_0, [ReadNone]>];
749+ }
750+
742751def ThreadId : DXILOp<93, threadId> {
743752 let Doc = "Reads the thread ID";
744753 let LLVMIntrinsic = int_dx_thread_id;
@@ -788,20 +797,6 @@ def SplitDouble : DXILOp<102, splitDouble> {
788797 let attributes = [Attributes<DXIL1_0, [ReadNone]>];
789798}
790799
791- def AnnotateHandle : DXILOp<217, annotateHandle> {
792- let Doc = "annotate handle with resource properties";
793- let arguments = [HandleTy, ResPropsTy];
794- let result = HandleTy;
795- let stages = [Stages<DXIL1_6, [all_stages]>];
796- }
797-
798- def CreateHandleFromBinding : DXILOp<218, createHandleFromBinding> {
799- let Doc = "create resource handle from binding";
800- let arguments = [ResBindTy, Int32Ty, Int1Ty];
801- let result = HandleTy;
802- let stages = [Stages<DXIL1_6, [all_stages]>];
803- }
804-
805800def WaveIsFirstLane : DXILOp<110, waveIsFirstLane> {
806801 let Doc = "returns 1 for the first lane in the wave";
807802 let LLVMIntrinsic = int_dx_wave_is_first_lane;
@@ -811,6 +806,15 @@ def WaveIsFirstLane : DXILOp<110, waveIsFirstLane> {
811806 let attributes = [Attributes<DXIL1_0, [ReadNone]>];
812807}
813808
809+ def WaveGetLaneIndex : DXILOp<111, waveGetLaneIndex> {
810+ let Doc = "returns the index of the current lane in the wave";
811+ let LLVMIntrinsic = int_dx_wave_getlaneindex;
812+ let arguments = [];
813+ let result = Int32Ty;
814+ let stages = [Stages<DXIL1_0, [all_stages]>];
815+ let attributes = [Attributes<DXIL1_0, [ReadNone]>];
816+ }
817+
814818def WaveReadLaneAt: DXILOp<117, waveReadLaneAt> {
815819 let Doc = "returns the value from the specified lane";
816820 let LLVMIntrinsic = int_dx_wave_readlane;
@@ -821,11 +825,16 @@ def WaveReadLaneAt: DXILOp<117, waveReadLaneAt> {
821825 let attributes = [Attributes<DXIL1_0, [ReadNone]>];
822826}
823827
824- def WaveGetLaneIndex : DXILOp<111, waveGetLaneIndex> {
825- let Doc = "returns the index of the current lane in the wave";
826- let LLVMIntrinsic = int_dx_wave_getlaneindex;
827- let arguments = [];
828- let result = Int32Ty;
829- let stages = [Stages<DXIL1_0, [all_stages]>];
830- let attributes = [Attributes<DXIL1_0, [ReadNone]>];
828+ def AnnotateHandle : DXILOp<217, annotateHandle> {
829+ let Doc = "annotate handle with resource properties";
830+ let arguments = [HandleTy, ResPropsTy];
831+ let result = HandleTy;
832+ let stages = [Stages<DXIL1_6, [all_stages]>];
833+ }
834+
835+ def CreateHandleFromBinding : DXILOp<218, createHandleFromBinding> {
836+ let Doc = "create resource handle from binding";
837+ let arguments = [ResBindTy, Int32Ty, Int1Ty];
838+ let result = HandleTy;
839+ let stages = [Stages<DXIL1_6, [all_stages]>];
831840}
0 commit comments