Parcourir la source

Merged PR 26: Fix intrinsic names to match spec.

Fix intrinsic names to match spec.

- PrimitiveIndex still maps to low level dx.op.primitiveID
Tex Riddell il y a 7 ans
Parent
commit
914c040b14

+ 4 - 4
docs/DXIL.rst

@@ -2140,9 +2140,9 @@ ID  Name                                 Description
 141 InstanceID                           The user-provided InstanceID on the bottom-level acceleration structure instance within the top-level structure
 142 InstanceIndex                        The autogenerated index of the current instance in the top-level structure
 143 HitKind                              Returns the value passed as HitKind in ReportIntersection().  If intersection was reported by fixed-function triangle intersection, HitKind will be one of HIT_KIND_TRIANGLE_FRONT_FACE or HIT_KIND_TRIANGLE_BACK_FACE.
-144 RayFlag                              uint containing the current ray flags.
-145 RayDispatchIndex                     The current x and y location within the Width and Height
-146 RayDispatchDimension                 The Width and Height values from the D3D12_DISPATCH_RAYS_DESC structure provided to the originating DispatchRays() call.
+144 RayFlags                             uint containing the current ray flags.
+145 DispatchRaysIndex                    The current x and y location within the Width and Height
+146 DispatchRaysDimensions               The Width and Height values from the D3D12_DISPATCH_RAYS_DESC structure provided to the originating DispatchRays() call.
 147 WorldRayOrigin                       The world-space origin for the current ray.
 148 WorldRayDirection                    The world-space direction for the current ray.
 149 ObjectRayOrigin                      Object-space origin for the current ray.
@@ -2150,7 +2150,7 @@ ID  Name                                 Description
 151 ObjectToWorld                        Matrix for transforming from object-space to world-space.
 152 WorldToObject                        Matrix for transforming from world-space to object-space.
 153 RayTMin                              float representing the parametric starting point for the ray.
-154 CurrentRayT                          float representing the current parametric ending point for the ray
+154 RayTCurrent                          float representing the current parametric ending point for the ray
 155 IgnoreHit                            Used in an any hit shader to reject an intersection and terminate the shader
 156 AcceptHitAndEndSearch                Used in an any hit shader to abort the ray query and the intersection shader (if any). The current hit is committed and execution passes to the closest hit shader with the closest hit recorded so far
 157 TraceRay                             returns the view index

+ 8 - 8
include/dxc/HLSL/DxilConstants.h

@@ -395,8 +395,8 @@ namespace DXIL {
     Bfi = 53, // Given a bit range from the LSB of a number, places that number of bits in another number at any offset
   
     // Ray Dispatch Arguments
-    RayDispatchDimension = 146, // The Width and Height values from the D3D12_DISPATCH_RAYS_DESC structure provided to the originating DispatchRays() call.
-    RayDispatchIndex = 145, // The current x and y location within the Width and Height
+    DispatchRaysDimensions = 146, // The Width and Height values from the D3D12_DISPATCH_RAYS_DESC structure provided to the originating DispatchRays() call.
+    DispatchRaysIndex = 145, // The current x and y location within the Width and Height
   
     // Ray Transforms
     ObjectToWorld = 151, // Matrix for transforming from object-space to world-space.
@@ -409,14 +409,14 @@ namespace DXIL {
     WorldRayOrigin = 147, // The world-space origin for the current ray.
   
     // RayT
-    CurrentRayT = 154, // float representing the current parametric ending point for the ray
+    RayTCurrent = 154, // float representing the current parametric ending point for the ray
     RayTMin = 153, // float representing the parametric starting point for the ray.
   
     // Raytracing uint System Values
     HitKind = 143, // Returns the value passed as HitKind in ReportIntersection().  If intersection was reported by fixed-function triangle intersection, HitKind will be one of HIT_KIND_TRIANGLE_FRONT_FACE or HIT_KIND_TRIANGLE_BACK_FACE.
     InstanceID = 141, // The user-provided InstanceID on the bottom-level acceleration structure instance within the top-level structure
     InstanceIndex = 142, // The autogenerated index of the current instance in the top-level structure
-    RayFlag = 144, // uint containing the current ray flags.
+    RayFlags = 144, // uint containing the current ray flags.
   
     // Resources - gather
     TextureGather = 73, // gathers the four texels that would be used in a bi-linear filtering operation
@@ -634,8 +634,8 @@ namespace DXIL {
     Quaternary,
   
     // Ray Dispatch Arguments
-    RayDispatchDimension,
-    RayDispatchIndex,
+    DispatchRaysDimensions,
+    DispatchRaysIndex,
   
     // Ray Transforms
     ObjectToWorld,
@@ -648,14 +648,14 @@ namespace DXIL {
     WorldRayOrigin,
   
     // RayT
-    CurrentRayT,
+    RayTCurrent,
     RayTMin,
   
     // Raytracing uint System Values
     HitKind,
     InstanceID,
     InstanceIndex,
-    RayFlag,
+    RayFlags,
   
     // Resources - gather
     TextureGather,

+ 12 - 12
include/dxc/HLSL/DxilInstructions.h

@@ -4590,12 +4590,12 @@ struct DxilInst_HitKind {
 };
 
 /// This instruction uint containing the current ray flags.
-struct DxilInst_RayFlag {
+struct DxilInst_RayFlags {
   llvm::Instruction *Instr;
   // Construction and identification
-  DxilInst_RayFlag(llvm::Instruction *pInstr) : Instr(pInstr) {}
+  DxilInst_RayFlags(llvm::Instruction *pInstr) : Instr(pInstr) {}
   operator bool() const {
-    return hlsl::OP::IsDxilOpFuncCallInst(Instr, hlsl::OP::OpCode::RayFlag);
+    return hlsl::OP::IsDxilOpFuncCallInst(Instr, hlsl::OP::OpCode::RayFlags);
   }
   // Validation support
   bool isAllowed() const { return true; }
@@ -4606,12 +4606,12 @@ struct DxilInst_RayFlag {
 };
 
 /// This instruction The current x and y location within the Width and Height
-struct DxilInst_RayDispatchIndex {
+struct DxilInst_DispatchRaysIndex {
   llvm::Instruction *Instr;
   // Construction and identification
-  DxilInst_RayDispatchIndex(llvm::Instruction *pInstr) : Instr(pInstr) {}
+  DxilInst_DispatchRaysIndex(llvm::Instruction *pInstr) : Instr(pInstr) {}
   operator bool() const {
-    return hlsl::OP::IsDxilOpFuncCallInst(Instr, hlsl::OP::OpCode::RayDispatchIndex);
+    return hlsl::OP::IsDxilOpFuncCallInst(Instr, hlsl::OP::OpCode::DispatchRaysIndex);
   }
   // Validation support
   bool isAllowed() const { return true; }
@@ -4629,12 +4629,12 @@ struct DxilInst_RayDispatchIndex {
 };
 
 /// This instruction The Width and Height values from the D3D12_DISPATCH_RAYS_DESC structure provided to the originating DispatchRays() call.
-struct DxilInst_RayDispatchDimension {
+struct DxilInst_DispatchRaysDimensions {
   llvm::Instruction *Instr;
   // Construction and identification
-  DxilInst_RayDispatchDimension(llvm::Instruction *pInstr) : Instr(pInstr) {}
+  DxilInst_DispatchRaysDimensions(llvm::Instruction *pInstr) : Instr(pInstr) {}
   operator bool() const {
-    return hlsl::OP::IsDxilOpFuncCallInst(Instr, hlsl::OP::OpCode::RayDispatchDimension);
+    return hlsl::OP::IsDxilOpFuncCallInst(Instr, hlsl::OP::OpCode::DispatchRaysDimensions);
   }
   // Validation support
   bool isAllowed() const { return true; }
@@ -4812,12 +4812,12 @@ struct DxilInst_RayTMin {
 };
 
 /// This instruction float representing the current parametric ending point for the ray
-struct DxilInst_CurrentRayT {
+struct DxilInst_RayTCurrent {
   llvm::Instruction *Instr;
   // Construction and identification
-  DxilInst_CurrentRayT(llvm::Instruction *pInstr) : Instr(pInstr) {}
+  DxilInst_RayTCurrent(llvm::Instruction *pInstr) : Instr(pInstr) {}
   operator bool() const {
-    return hlsl::OP::IsDxilOpFuncCallInst(Instr, hlsl::OP::OpCode::CurrentRayT);
+    return hlsl::OP::IsDxilOpFuncCallInst(Instr, hlsl::OP::OpCode::RayTCurrent);
   }
   // Validation support
   bool isAllowed() const { return true; }

+ 5 - 5
include/dxc/HlslIntrinsicOp.h

@@ -27,10 +27,11 @@ import hctdb_instrhelp
   IOP_AllMemoryBarrierWithGroupSync,
   IOP_CallShader,
   IOP_CheckAccessFullyMapped,
-  IOP_CurrentRayT,
   IOP_D3DCOLORtoUBYTE4,
   IOP_DeviceMemoryBarrier,
   IOP_DeviceMemoryBarrierWithGroupSync,
+  IOP_DispatchRaysDimensions,
+  IOP_DispatchRaysIndex,
   IOP_EvaluateAttributeAtSample,
   IOP_EvaluateAttributeCentroid,
   IOP_EvaluateAttributeSnapped,
@@ -56,7 +57,7 @@ import hctdb_instrhelp
   IOP_ObjectRayDirection,
   IOP_ObjectRayOrigin,
   IOP_ObjectToWorld,
-  IOP_PrimitiveID,
+  IOP_PrimitiveIndex,
   IOP_Process2DQuadTessFactorsAvg,
   IOP_Process2DQuadTessFactorsMax,
   IOP_Process2DQuadTessFactorsMin,
@@ -71,9 +72,8 @@ import hctdb_instrhelp
   IOP_QuadReadAcrossX,
   IOP_QuadReadAcrossY,
   IOP_QuadReadLaneAt,
-  IOP_RayDispatchDimension,
-  IOP_RayDispatchIndex,
-  IOP_RayFlag,
+  IOP_RayFlags,
+  IOP_RayTCurrent,
   IOP_RayTMin,
   IOP_ReportHit,
   IOP_TraceRay,

+ 12 - 12
lib/HLSL/DxilOperations.cpp

@@ -269,11 +269,11 @@ const OP::OpCodeProperty OP::m_OpCodeProps[(unsigned)OP::OpCode::NumOpCodes] = {
   {  OC::InstanceID,              "InstanceID",               OCC::InstanceID,               "instanceID",                 false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
   {  OC::InstanceIndex,           "InstanceIndex",            OCC::InstanceIndex,            "instanceIndex",              false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
   {  OC::HitKind,                 "HitKind",                  OCC::HitKind,                  "hitKind",                    false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
-  {  OC::RayFlag,                 "RayFlag",                  OCC::RayFlag,                  "rayFlag",                    false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
+  {  OC::RayFlags,                "RayFlags",                 OCC::RayFlags,                 "rayFlags",                   false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
 
   // Ray Dispatch Arguments                                                                                                 void,     h,     f,     d,    i1,    i8,   i16,   i32,   i64,   udt,  obj,  function attribute
-  {  OC::RayDispatchIndex,        "RayDispatchIndex",         OCC::RayDispatchIndex,         "rayDispatchIndex",           false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
-  {  OC::RayDispatchDimension,    "RayDispatchDimension",     OCC::RayDispatchDimension,     "rayDispatchDimension",       false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
+  {  OC::DispatchRaysIndex,       "DispatchRaysIndex",        OCC::DispatchRaysIndex,        "dispatchRaysIndex",          false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
+  {  OC::DispatchRaysDimensions,  "DispatchRaysDimensions",   OCC::DispatchRaysDimensions,   "dispatchRaysDimensions",     false, false, false, false, false, false, false,  true, false, false, false, Attribute::ReadNone, },
 
   // Ray Vectors                                                                                                            void,     h,     f,     d,    i1,    i8,   i16,   i32,   i64,   udt,  obj,  function attribute
   {  OC::WorldRayOrigin,          "WorldRayOrigin",           OCC::WorldRayOrigin,           "worldRayOrigin",             false, false,  true, false, false, false, false, false, false, false, false, Attribute::ReadNone, },
@@ -287,7 +287,7 @@ const OP::OpCodeProperty OP::m_OpCodeProps[(unsigned)OP::OpCode::NumOpCodes] = {
 
   // RayT                                                                                                                   void,     h,     f,     d,    i1,    i8,   i16,   i32,   i64,   udt,  obj,  function attribute
   {  OC::RayTMin,                 "RayTMin",                  OCC::RayTMin,                  "rayTMin",                    false, false,  true, false, false, false, false, false, false, false, false, Attribute::ReadNone, },
-  {  OC::CurrentRayT,             "CurrentRayT",              OCC::CurrentRayT,              "currentRayT",                false, false,  true, false, false, false, false, false, false, false, false, Attribute::ReadNone, },
+  {  OC::RayTCurrent,             "RayTCurrent",              OCC::RayTCurrent,              "rayTCurrent",                false, false,  true, false, false, false, false, false, false, false, false, Attribute::ReadNone, },
 
   // AnyHit Terminals                                                                                                       void,     h,     f,     d,    i1,    i8,   i16,   i32,   i64,   udt,  obj,  function attribute
   {  OC::IgnoreHit,               "IgnoreHit",                OCC::IgnoreHit,                "ignoreHit",                   true, false, false, false, false, false, false, false, false, false, false, Attribute::NoReturn, },
@@ -842,11 +842,11 @@ Function *OP::GetOpFunc(OpCode OpCode, Type *pOverloadType) {
   case OpCode::InstanceID:             A(pI32);     A(pI32); break;
   case OpCode::InstanceIndex:          A(pI32);     A(pI32); break;
   case OpCode::HitKind:                A(pI32);     A(pI32); break;
-  case OpCode::RayFlag:                A(pI32);     A(pI32); break;
+  case OpCode::RayFlags:               A(pI32);     A(pI32); break;
 
     // Ray Dispatch Arguments
-  case OpCode::RayDispatchIndex:       A(pI32);     A(pI32); A(pI8);  break;
-  case OpCode::RayDispatchDimension:   A(pI32);     A(pI32); A(pI8);  break;
+  case OpCode::DispatchRaysIndex:      A(pI32);     A(pI32); A(pI8);  break;
+  case OpCode::DispatchRaysDimensions: A(pI32);     A(pI32); A(pI8);  break;
 
     // Ray Vectors
   case OpCode::WorldRayOrigin:         A(pF32);     A(pI32); A(pI8);  break;
@@ -860,7 +860,7 @@ Function *OP::GetOpFunc(OpCode OpCode, Type *pOverloadType) {
 
     // RayT
   case OpCode::RayTMin:                A(pF32);     A(pI32); break;
-  case OpCode::CurrentRayT:            A(pF32);     A(pI32); break;
+  case OpCode::RayTCurrent:            A(pF32);     A(pI32); break;
 
     // AnyHit Terminals
   case OpCode::IgnoreHit:              A(pV);       A(pI32); break;
@@ -1044,9 +1044,9 @@ llvm::Type *OP::GetOverloadType(OpCode OpCode, llvm::Function *F) {
   case OpCode::InstanceID:
   case OpCode::InstanceIndex:
   case OpCode::HitKind:
-  case OpCode::RayFlag:
-  case OpCode::RayDispatchIndex:
-  case OpCode::RayDispatchDimension:
+  case OpCode::RayFlags:
+  case OpCode::DispatchRaysIndex:
+  case OpCode::DispatchRaysDimensions:
     return IntegerType::get(m_Ctx, 32);
   case OpCode::CalculateLOD:
   case OpCode::DomainLocation:
@@ -1057,7 +1057,7 @@ llvm::Type *OP::GetOverloadType(OpCode OpCode, llvm::Function *F) {
   case OpCode::ObjectToWorld:
   case OpCode::WorldToObject:
   case OpCode::RayTMin:
-  case OpCode::CurrentRayT:
+  case OpCode::RayTCurrent:
     return Type::getFloatTy(m_Ctx);
   case OpCode::MakeDouble:
   case OpCode::SplitDouble:

+ 3 - 3
lib/HLSL/DxilValidation.cpp

@@ -605,10 +605,10 @@ static bool ValidateOpcodeInProfile(DXIL::OpCode opcode,
   // Instructions: RawBufferLoad=139, RawBufferStore=140
   if (139 <= op && op <= 140)
     return (pSM->GetMajor() > 6 || (pSM->GetMajor() == 6 && pSM->GetMinor() >= 2));
-  // Instructions: InstanceID=141, InstanceIndex=142, HitKind=143, RayFlag=144,
-  // RayDispatchIndex=145, RayDispatchDimension=146, WorldRayOrigin=147,
+  // Instructions: InstanceID=141, InstanceIndex=142, HitKind=143, RayFlags=144,
+  // DispatchRaysIndex=145, DispatchRaysDimensions=146, WorldRayOrigin=147,
   // WorldRayDirection=148, ObjectRayOrigin=149, ObjectRayDirection=150,
-  // ObjectToWorld=151, WorldToObject=152, RayTMin=153, CurrentRayT=154,
+  // ObjectToWorld=151, WorldToObject=152, RayTMin=153, RayTCurrent=154,
   // IgnoreHit=155, AcceptHitAndEndSearch=156, TraceRay=157, ReportHit=158,
   // CallShader=159, CreateHandleFromResourceStructForLib=160
   if (141 <= op && op <= 160)

+ 5 - 5
lib/HLSL/HLOperationLower.cpp

@@ -4408,10 +4408,11 @@ IntrinsicLower gLowerTable[static_cast<unsigned>(IntrinsicOp::Num_Intrinsics)] =
     {IntrinsicOp::IOP_AllMemoryBarrierWithGroupSync, TrivialBarrier, DXIL::OpCode::Barrier},
     {IntrinsicOp::IOP_CallShader, TranslateCallShader, DXIL::OpCode::CallShader},
     {IntrinsicOp::IOP_CheckAccessFullyMapped, TranslateCheckAccess, DXIL::OpCode::CheckAccessFullyMapped},
-    {IntrinsicOp::IOP_CurrentRayT, TrivialNoArgWithRetOperation, DXIL::OpCode::CurrentRayT},
     {IntrinsicOp::IOP_D3DCOLORtoUBYTE4, TranslateD3DColorToUByte4, DXIL::OpCode::NumOpCodes},
     {IntrinsicOp::IOP_DeviceMemoryBarrier, TrivialBarrier, DXIL::OpCode::Barrier},
     {IntrinsicOp::IOP_DeviceMemoryBarrierWithGroupSync, TrivialBarrier, DXIL::OpCode::Barrier},
+    {IntrinsicOp::IOP_DispatchRaysDimensions, TranslateNoArgVectorOperation, DXIL::OpCode::DispatchRaysDimensions},
+    {IntrinsicOp::IOP_DispatchRaysIndex, TranslateNoArgVectorOperation, DXIL::OpCode::DispatchRaysIndex},
     {IntrinsicOp::IOP_EvaluateAttributeAtSample, TranslateEvalSample, DXIL::OpCode::NumOpCodes},
     {IntrinsicOp::IOP_EvaluateAttributeCentroid, TranslateEvalCentroid, DXIL::OpCode::EvalCentroid},
     {IntrinsicOp::IOP_EvaluateAttributeSnapped, TranslateEvalSnapped, DXIL::OpCode::NumOpCodes},
@@ -4437,7 +4438,7 @@ IntrinsicLower gLowerTable[static_cast<unsigned>(IntrinsicOp::Num_Intrinsics)] =
     {IntrinsicOp::IOP_ObjectRayDirection, TranslateNoArgVectorOperation, DXIL::OpCode::ObjectRayDirection},
     {IntrinsicOp::IOP_ObjectRayOrigin, TranslateNoArgVectorOperation, DXIL::OpCode::ObjectRayOrigin},
     {IntrinsicOp::IOP_ObjectToWorld, TranslateNoArgMatrixOperation, DXIL::OpCode::ObjectToWorld},
-    {IntrinsicOp::IOP_PrimitiveID, TrivialNoArgWithRetOperation, DXIL::OpCode::PrimitiveID},
+    {IntrinsicOp::IOP_PrimitiveIndex, TrivialNoArgWithRetOperation, DXIL::OpCode::PrimitiveID},
     {IntrinsicOp::IOP_Process2DQuadTessFactorsAvg, TranslateProcessTessFactors, DXIL::OpCode::NumOpCodes},
     {IntrinsicOp::IOP_Process2DQuadTessFactorsMax, TranslateProcessTessFactors, DXIL::OpCode::NumOpCodes},
     {IntrinsicOp::IOP_Process2DQuadTessFactorsMin, TranslateProcessTessFactors, DXIL::OpCode::NumOpCodes},
@@ -4452,9 +4453,8 @@ IntrinsicLower gLowerTable[static_cast<unsigned>(IntrinsicOp::Num_Intrinsics)] =
     {IntrinsicOp::IOP_QuadReadAcrossX, TranslateQuadReadAcross, DXIL::OpCode::QuadOp},
     {IntrinsicOp::IOP_QuadReadAcrossY, TranslateQuadReadAcross, DXIL::OpCode::QuadOp},
     {IntrinsicOp::IOP_QuadReadLaneAt,  TranslateQuadReadLaneAt, DXIL::OpCode::NumOpCodes},
-    {IntrinsicOp::IOP_RayDispatchDimension, TranslateNoArgVectorOperation, DXIL::OpCode::RayDispatchDimension},
-    {IntrinsicOp::IOP_RayDispatchIndex, TranslateNoArgVectorOperation, DXIL::OpCode::RayDispatchIndex},
-    {IntrinsicOp::IOP_RayFlag, TrivialNoArgWithRetOperation, DXIL::OpCode::RayFlag},
+    {IntrinsicOp::IOP_RayFlags, TrivialNoArgWithRetOperation, DXIL::OpCode::RayFlags},
+    {IntrinsicOp::IOP_RayTCurrent, TrivialNoArgWithRetOperation, DXIL::OpCode::RayTCurrent},
     {IntrinsicOp::IOP_RayTMin, TrivialNoArgWithRetOperation, DXIL::OpCode::RayTMin},
     {IntrinsicOp::IOP_ReportHit, TranslateReportIntersection, DXIL::OpCode::ReportHit},
     {IntrinsicOp::IOP_TraceRay, TranslateTraceRay, DXIL::OpCode::TraceRay},

+ 2 - 2
tools/clang/lib/Sema/SemaHLSL.cpp

@@ -1500,9 +1500,9 @@ const char* g_ArBasicTypeNames[] =
 
   "deprecated effect object",
   "wave_t",
-  "ray_desc",
+  "RayDesc",
   "RaytracingAccelerationStructure",
-  "UserDefineType",
+  "user defined type",
   "BuiltInTriangleIntersectionAttributes"
 };
 

+ 111 - 111
tools/clang/lib/Sema/gen_intrin_main_tables_15.h

@@ -54,101 +54,106 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args5[] =
 
 static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args6[] =
 {
-    {"CurrentRayT", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_FLOAT, 1, 1},
+    {"D3DCOLORtoUBYTE4", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_INT, 1, 4},
+    {"x", AR_QUAL_IN, 0, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 4},
 };
 
 static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args7[] =
 {
-    {"D3DCOLORtoUBYTE4", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_INT, 1, 4},
-    {"x", AR_QUAL_IN, 0, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 4},
+    {"DeviceMemoryBarrier", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
 };
 
 static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args8[] =
 {
-    {"DeviceMemoryBarrier", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
+    {"DeviceMemoryBarrierWithGroupSync", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
 };
 
 static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args9[] =
 {
-    {"DeviceMemoryBarrierWithGroupSync", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
+    {"DispatchRaysDimensions", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_UINT, 1, 2},
 };
 
 static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args10[] =
+{
+    {"DispatchRaysIndex", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_UINT, 1, 2},
+};
+
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args11[] =
 {
     {"EvaluateAttributeAtSample", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"value", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"index", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args11[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args12[] =
 {
     {"EvaluateAttributeCentroid", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"value", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args12[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args13[] =
 {
     {"EvaluateAttributeSnapped", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"value", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"offset", AR_QUAL_IN, 2, LITEMPLATE_VECTOR, 2, LICOMPTYPE_INT, 1, 2},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args13[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args14[] =
 {
     {"GetAttributeAtVertex", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"value", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"VertexID", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args14[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args15[] =
 {
     {"GetRenderTargetSampleCount", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args15[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args16[] =
 {
     {"GetRenderTargetSamplePosition", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_FLOAT, 1, 2},
     {"s", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_INT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args16[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args17[] =
 {
     {"GroupMemoryBarrier", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args17[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args18[] =
 {
     {"GroupMemoryBarrierWithGroupSync", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args18[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args19[] =
 {
     {"HitKind", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args19[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args20[] =
 {
     {"IgnoreHit", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args20[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args21[] =
 {
     {"InstanceID", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args21[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args22[] =
 {
     {"InstanceIndex", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args22[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args23[] =
 {
     {"InterlockedAdd", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
     {"value", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args23[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args24[] =
 {
     {"InterlockedAdd", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
@@ -156,14 +161,14 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args23[] =
     {"original", AR_QUAL_OUT, 3, LITEMPLATE_SCALAR, 3, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args24[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args25[] =
 {
     {"InterlockedAnd", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
     {"value", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args25[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args26[] =
 {
     {"InterlockedAnd", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
@@ -171,7 +176,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args25[] =
     {"original", AR_QUAL_OUT, 3, LITEMPLATE_SCALAR, 3, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args26[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args27[] =
 {
     {"InterlockedCompareExchange", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
@@ -180,7 +185,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args26[] =
     {"original", AR_QUAL_OUT, 4, LITEMPLATE_SCALAR, 4, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args27[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args28[] =
 {
     {"InterlockedCompareStore", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
@@ -188,7 +193,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args27[] =
     {"value", AR_QUAL_IN, 3, LITEMPLATE_SCALAR, 3, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args28[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args29[] =
 {
     {"InterlockedExchange", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_NUMERIC32, 1, 1},
@@ -196,14 +201,14 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args28[] =
     {"original", AR_QUAL_OUT, 3, LITEMPLATE_SCALAR, 3, LICOMPTYPE_NUMERIC32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args29[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args30[] =
 {
     {"InterlockedMax", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
     {"value", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args30[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args31[] =
 {
     {"InterlockedMax", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
@@ -211,14 +216,14 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args30[] =
     {"original", AR_QUAL_OUT, 3, LITEMPLATE_SCALAR, 3, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args31[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args32[] =
 {
     {"InterlockedMin", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
     {"value", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args32[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args33[] =
 {
     {"InterlockedMin", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
@@ -226,14 +231,14 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args32[] =
     {"original", AR_QUAL_OUT, 3, LITEMPLATE_SCALAR, 3, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args33[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args34[] =
 {
     {"InterlockedOr", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
     {"value", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args34[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args35[] =
 {
     {"InterlockedOr", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
@@ -241,14 +246,14 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args34[] =
     {"original", AR_QUAL_OUT, 3, LITEMPLATE_SCALAR, 3, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args35[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args36[] =
 {
     {"InterlockedXor", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
     {"value", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args36[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args37[] =
 {
     {"InterlockedXor", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"result", AR_QUAL_IN, 1, LITEMPLATE_SCALAR, 1, LICOMPTYPE_ANY_INT32, 1, 1},
@@ -256,33 +261,33 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args36[] =
     {"original", AR_QUAL_OUT, 3, LITEMPLATE_SCALAR, 3, LICOMPTYPE_ANY_INT32, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args37[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args38[] =
 {
     {"NonUniformResourceIndex", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_ANY, IA_R, IA_C},
     {"index", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_ANY, IA_R, IA_C},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args38[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args39[] =
 {
     {"ObjectRayDirection", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_FLOAT, 1, 3},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args39[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args40[] =
 {
     {"ObjectRayOrigin", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_FLOAT, 1, 3},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args40[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args41[] =
 {
     {"ObjectToWorld", AR_QUAL_OUT | AR_QUAL_ROWMAJOR, 0, LITEMPLATE_MATRIX, 0, LICOMPTYPE_FLOAT, 3, 4},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args41[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args42[] =
 {
-    {"PrimitiveID", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_UINT, 1, 1},
+    {"PrimitiveIndex", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args42[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args43[] =
 {
     {"Process2DQuadTessFactorsAvg", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 4},
@@ -292,7 +297,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args42[] =
     {"UnroundedInsideFactors", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 2},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args43[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args44[] =
 {
     {"Process2DQuadTessFactorsMax", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 4},
@@ -302,7 +307,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args43[] =
     {"UnroundedInsideFactors", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 2},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args44[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args45[] =
 {
     {"Process2DQuadTessFactorsMin", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 4},
@@ -312,7 +317,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args44[] =
     {"UnroundedInsideFactors", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 2},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args45[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args46[] =
 {
     {"ProcessIsolineTessFactors", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawDetailFactor", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 1},
@@ -321,7 +326,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args45[] =
     {"RoundedDensityFactor", AR_QUAL_OUT, 4, LITEMPLATE_VECTOR, 4, LICOMPTYPE_FLOAT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args46[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args47[] =
 {
     {"ProcessQuadTessFactorsAvg", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 4},
@@ -331,7 +336,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args46[] =
     {"UnroundedInsideFactors", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 2},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args47[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args48[] =
 {
     {"ProcessQuadTessFactorsMax", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 4},
@@ -341,7 +346,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args47[] =
     {"UnroundedInsideFactors", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 2},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args48[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args49[] =
 {
     {"ProcessQuadTessFactorsMin", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 4},
@@ -351,7 +356,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args48[] =
     {"UnroundedInsideFactors", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 2},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args49[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args50[] =
 {
     {"ProcessTriTessFactorsAvg", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 3},
@@ -361,7 +366,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args49[] =
     {"UnroundedInsideFactor", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args50[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args51[] =
 {
     {"ProcessTriTessFactorsMax", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 3},
@@ -371,7 +376,7 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args50[] =
     {"UnroundedInsideFactor", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args51[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args52[] =
 {
     {"ProcessTriTessFactorsMin", 0, 0, LITEMPLATE_VOID, 0, LICOMPTYPE_VOID, 0, 0},
     {"RawEdgeFactors", AR_QUAL_IN, 1, LITEMPLATE_VECTOR, 1, LICOMPTYPE_FLOAT, 1, 3},
@@ -381,44 +386,39 @@ static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args51[] =
     {"UnroundedInsideFactor", AR_QUAL_OUT, 5, LITEMPLATE_VECTOR, 5, LICOMPTYPE_FLOAT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args52[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args53[] =
 {
     {"QuadReadAcrossDiagonal", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"value", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args53[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args54[] =
 {
     {"QuadReadAcrossX", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"value", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args54[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args55[] =
 {
     {"QuadReadAcrossY", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"value", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args55[] =
+static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args56[] =
 {
     {"QuadReadLaneAt", AR_QUAL_OUT, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"value", AR_QUAL_IN, 1, LITEMPLATE_ANY, 1, LICOMPTYPE_NUMERIC, IA_R, IA_C},
     {"quadLane", AR_QUAL_IN, 2, LITEMPLATE_SCALAR, 2, LICOMPTYPE_UINT, 1, 1},
 };
 
-static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args56[] =
-{
-    {"RayDispatchDimension", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_UINT, 1, 2},
-};
-
 static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args57[] =
 {
-    {"RayDispatchIndex", AR_QUAL_OUT, 0, LITEMPLATE_VECTOR, 0, LICOMPTYPE_UINT, 1, 2},
+    {"RayFlags", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_UINT, 1, 1},
 };
 
 static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args58[] =
 {
-    {"RayFlag", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_UINT, 1, 1},
+    {"RayTCurrent", AR_QUAL_OUT, 0, LITEMPLATE_SCALAR, 0, LICOMPTYPE_FLOAT, 1, 1},
 };
 
 static const HLSL_INTRINSIC_ARGUMENT g_Intrinsics_Args59[] =
@@ -1374,59 +1374,59 @@ static const HLSL_INTRINSIC g_Intrinsics[] =
     {(UINT)hlsl::IntrinsicOp::IOP_AllMemoryBarrierWithGroupSync, false, false, -1, 1, g_Intrinsics_Args3},
     {(UINT)hlsl::IntrinsicOp::IOP_CallShader, false, false, -1, 3, g_Intrinsics_Args4},
     {(UINT)hlsl::IntrinsicOp::IOP_CheckAccessFullyMapped, false, true, -1, 2, g_Intrinsics_Args5},
-    {(UINT)hlsl::IntrinsicOp::IOP_CurrentRayT, false, true, -1, 1, g_Intrinsics_Args6},
-    {(UINT)hlsl::IntrinsicOp::IOP_D3DCOLORtoUBYTE4, false, true, -1, 2, g_Intrinsics_Args7},
-    {(UINT)hlsl::IntrinsicOp::IOP_DeviceMemoryBarrier, false, false, -1, 1, g_Intrinsics_Args8},
-    {(UINT)hlsl::IntrinsicOp::IOP_DeviceMemoryBarrierWithGroupSync, false, false, -1, 1, g_Intrinsics_Args9},
-    {(UINT)hlsl::IntrinsicOp::IOP_EvaluateAttributeAtSample, false, true, -1, 3, g_Intrinsics_Args10},
-    {(UINT)hlsl::IntrinsicOp::IOP_EvaluateAttributeCentroid, false, true, -1, 2, g_Intrinsics_Args11},
-    {(UINT)hlsl::IntrinsicOp::IOP_EvaluateAttributeSnapped, false, true, -1, 3, g_Intrinsics_Args12},
-    {(UINT)hlsl::IntrinsicOp::IOP_GetAttributeAtVertex, false, true, -1, 3, g_Intrinsics_Args13},
-    {(UINT)hlsl::IntrinsicOp::IOP_GetRenderTargetSampleCount, false, true, -1, 1, g_Intrinsics_Args14},
-    {(UINT)hlsl::IntrinsicOp::IOP_GetRenderTargetSamplePosition, false, true, -1, 2, g_Intrinsics_Args15},
-    {(UINT)hlsl::IntrinsicOp::IOP_GroupMemoryBarrier, false, false, -1, 1, g_Intrinsics_Args16},
-    {(UINT)hlsl::IntrinsicOp::IOP_GroupMemoryBarrierWithGroupSync, false, false, -1, 1, g_Intrinsics_Args17},
-    {(UINT)hlsl::IntrinsicOp::IOP_HitKind, false, true, -1, 1, g_Intrinsics_Args18},
-    {(UINT)hlsl::IntrinsicOp::IOP_IgnoreHit, false, false, -1, 1, g_Intrinsics_Args19},
-    {(UINT)hlsl::IntrinsicOp::IOP_InstanceID, false, true, -1, 1, g_Intrinsics_Args20},
-    {(UINT)hlsl::IntrinsicOp::IOP_InstanceIndex, false, true, -1, 1, g_Intrinsics_Args21},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedAdd, false, false, -1, 3, g_Intrinsics_Args22},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedAdd, false, false, -1, 4, g_Intrinsics_Args23},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedAnd, false, false, -1, 3, g_Intrinsics_Args24},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedAnd, false, false, -1, 4, g_Intrinsics_Args25},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedCompareExchange, false, false, -1, 5, g_Intrinsics_Args26},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedCompareStore, false, false, -1, 4, g_Intrinsics_Args27},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedExchange, false, false, -1, 4, g_Intrinsics_Args28},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedMax, false, false, 1, 3, g_Intrinsics_Args29},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedMax, false, false, 1, 4, g_Intrinsics_Args30},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedMin, false, false, 1, 3, g_Intrinsics_Args31},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedMin, false, false, 1, 4, g_Intrinsics_Args32},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedOr, false, false, -1, 3, g_Intrinsics_Args33},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedOr, false, false, -1, 4, g_Intrinsics_Args34},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedXor, false, false, -1, 3, g_Intrinsics_Args35},
-    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedXor, false, false, -1, 4, g_Intrinsics_Args36},
-    {(UINT)hlsl::IntrinsicOp::IOP_NonUniformResourceIndex, false, true, -1, 2, g_Intrinsics_Args37},
-    {(UINT)hlsl::IntrinsicOp::IOP_ObjectRayDirection, false, true, -1, 1, g_Intrinsics_Args38},
-    {(UINT)hlsl::IntrinsicOp::IOP_ObjectRayOrigin, false, true, -1, 1, g_Intrinsics_Args39},
-    {(UINT)hlsl::IntrinsicOp::IOP_ObjectToWorld, false, true, -1, 1, g_Intrinsics_Args40},
-    {(UINT)hlsl::IntrinsicOp::IOP_PrimitiveID, false, true, -1, 1, g_Intrinsics_Args41},
-    {(UINT)hlsl::IntrinsicOp::IOP_Process2DQuadTessFactorsAvg, false, false, -1, 6, g_Intrinsics_Args42},
-    {(UINT)hlsl::IntrinsicOp::IOP_Process2DQuadTessFactorsMax, false, false, -1, 6, g_Intrinsics_Args43},
-    {(UINT)hlsl::IntrinsicOp::IOP_Process2DQuadTessFactorsMin, false, false, -1, 6, g_Intrinsics_Args44},
-    {(UINT)hlsl::IntrinsicOp::IOP_ProcessIsolineTessFactors, false, false, -1, 5, g_Intrinsics_Args45},
-    {(UINT)hlsl::IntrinsicOp::IOP_ProcessQuadTessFactorsAvg, false, false, -1, 6, g_Intrinsics_Args46},
-    {(UINT)hlsl::IntrinsicOp::IOP_ProcessQuadTessFactorsMax, false, false, -1, 6, g_Intrinsics_Args47},
-    {(UINT)hlsl::IntrinsicOp::IOP_ProcessQuadTessFactorsMin, false, false, -1, 6, g_Intrinsics_Args48},
-    {(UINT)hlsl::IntrinsicOp::IOP_ProcessTriTessFactorsAvg, false, false, -1, 6, g_Intrinsics_Args49},
-    {(UINT)hlsl::IntrinsicOp::IOP_ProcessTriTessFactorsMax, false, false, -1, 6, g_Intrinsics_Args50},
-    {(UINT)hlsl::IntrinsicOp::IOP_ProcessTriTessFactorsMin, false, false, -1, 6, g_Intrinsics_Args51},
-    {(UINT)hlsl::IntrinsicOp::IOP_QuadReadAcrossDiagonal, false, false, -1, 2, g_Intrinsics_Args52},
-    {(UINT)hlsl::IntrinsicOp::IOP_QuadReadAcrossX, false, false, -1, 2, g_Intrinsics_Args53},
-    {(UINT)hlsl::IntrinsicOp::IOP_QuadReadAcrossY, false, false, -1, 2, g_Intrinsics_Args54},
-    {(UINT)hlsl::IntrinsicOp::IOP_QuadReadLaneAt, false, false, -1, 3, g_Intrinsics_Args55},
-    {(UINT)hlsl::IntrinsicOp::IOP_RayDispatchDimension, false, true, -1, 1, g_Intrinsics_Args56},
-    {(UINT)hlsl::IntrinsicOp::IOP_RayDispatchIndex, false, true, -1, 1, g_Intrinsics_Args57},
-    {(UINT)hlsl::IntrinsicOp::IOP_RayFlag, false, true, -1, 1, g_Intrinsics_Args58},
+    {(UINT)hlsl::IntrinsicOp::IOP_D3DCOLORtoUBYTE4, false, true, -1, 2, g_Intrinsics_Args6},
+    {(UINT)hlsl::IntrinsicOp::IOP_DeviceMemoryBarrier, false, false, -1, 1, g_Intrinsics_Args7},
+    {(UINT)hlsl::IntrinsicOp::IOP_DeviceMemoryBarrierWithGroupSync, false, false, -1, 1, g_Intrinsics_Args8},
+    {(UINT)hlsl::IntrinsicOp::IOP_DispatchRaysDimensions, false, true, -1, 1, g_Intrinsics_Args9},
+    {(UINT)hlsl::IntrinsicOp::IOP_DispatchRaysIndex, false, true, -1, 1, g_Intrinsics_Args10},
+    {(UINT)hlsl::IntrinsicOp::IOP_EvaluateAttributeAtSample, false, true, -1, 3, g_Intrinsics_Args11},
+    {(UINT)hlsl::IntrinsicOp::IOP_EvaluateAttributeCentroid, false, true, -1, 2, g_Intrinsics_Args12},
+    {(UINT)hlsl::IntrinsicOp::IOP_EvaluateAttributeSnapped, false, true, -1, 3, g_Intrinsics_Args13},
+    {(UINT)hlsl::IntrinsicOp::IOP_GetAttributeAtVertex, false, true, -1, 3, g_Intrinsics_Args14},
+    {(UINT)hlsl::IntrinsicOp::IOP_GetRenderTargetSampleCount, false, true, -1, 1, g_Intrinsics_Args15},
+    {(UINT)hlsl::IntrinsicOp::IOP_GetRenderTargetSamplePosition, false, true, -1, 2, g_Intrinsics_Args16},
+    {(UINT)hlsl::IntrinsicOp::IOP_GroupMemoryBarrier, false, false, -1, 1, g_Intrinsics_Args17},
+    {(UINT)hlsl::IntrinsicOp::IOP_GroupMemoryBarrierWithGroupSync, false, false, -1, 1, g_Intrinsics_Args18},
+    {(UINT)hlsl::IntrinsicOp::IOP_HitKind, false, true, -1, 1, g_Intrinsics_Args19},
+    {(UINT)hlsl::IntrinsicOp::IOP_IgnoreHit, false, false, -1, 1, g_Intrinsics_Args20},
+    {(UINT)hlsl::IntrinsicOp::IOP_InstanceID, false, true, -1, 1, g_Intrinsics_Args21},
+    {(UINT)hlsl::IntrinsicOp::IOP_InstanceIndex, false, true, -1, 1, g_Intrinsics_Args22},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedAdd, false, false, -1, 3, g_Intrinsics_Args23},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedAdd, false, false, -1, 4, g_Intrinsics_Args24},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedAnd, false, false, -1, 3, g_Intrinsics_Args25},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedAnd, false, false, -1, 4, g_Intrinsics_Args26},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedCompareExchange, false, false, -1, 5, g_Intrinsics_Args27},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedCompareStore, false, false, -1, 4, g_Intrinsics_Args28},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedExchange, false, false, -1, 4, g_Intrinsics_Args29},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedMax, false, false, 1, 3, g_Intrinsics_Args30},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedMax, false, false, 1, 4, g_Intrinsics_Args31},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedMin, false, false, 1, 3, g_Intrinsics_Args32},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedMin, false, false, 1, 4, g_Intrinsics_Args33},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedOr, false, false, -1, 3, g_Intrinsics_Args34},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedOr, false, false, -1, 4, g_Intrinsics_Args35},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedXor, false, false, -1, 3, g_Intrinsics_Args36},
+    {(UINT)hlsl::IntrinsicOp::IOP_InterlockedXor, false, false, -1, 4, g_Intrinsics_Args37},
+    {(UINT)hlsl::IntrinsicOp::IOP_NonUniformResourceIndex, false, true, -1, 2, g_Intrinsics_Args38},
+    {(UINT)hlsl::IntrinsicOp::IOP_ObjectRayDirection, false, true, -1, 1, g_Intrinsics_Args39},
+    {(UINT)hlsl::IntrinsicOp::IOP_ObjectRayOrigin, false, true, -1, 1, g_Intrinsics_Args40},
+    {(UINT)hlsl::IntrinsicOp::IOP_ObjectToWorld, false, true, -1, 1, g_Intrinsics_Args41},
+    {(UINT)hlsl::IntrinsicOp::IOP_PrimitiveIndex, false, true, -1, 1, g_Intrinsics_Args42},
+    {(UINT)hlsl::IntrinsicOp::IOP_Process2DQuadTessFactorsAvg, false, false, -1, 6, g_Intrinsics_Args43},
+    {(UINT)hlsl::IntrinsicOp::IOP_Process2DQuadTessFactorsMax, false, false, -1, 6, g_Intrinsics_Args44},
+    {(UINT)hlsl::IntrinsicOp::IOP_Process2DQuadTessFactorsMin, false, false, -1, 6, g_Intrinsics_Args45},
+    {(UINT)hlsl::IntrinsicOp::IOP_ProcessIsolineTessFactors, false, false, -1, 5, g_Intrinsics_Args46},
+    {(UINT)hlsl::IntrinsicOp::IOP_ProcessQuadTessFactorsAvg, false, false, -1, 6, g_Intrinsics_Args47},
+    {(UINT)hlsl::IntrinsicOp::IOP_ProcessQuadTessFactorsMax, false, false, -1, 6, g_Intrinsics_Args48},
+    {(UINT)hlsl::IntrinsicOp::IOP_ProcessQuadTessFactorsMin, false, false, -1, 6, g_Intrinsics_Args49},
+    {(UINT)hlsl::IntrinsicOp::IOP_ProcessTriTessFactorsAvg, false, false, -1, 6, g_Intrinsics_Args50},
+    {(UINT)hlsl::IntrinsicOp::IOP_ProcessTriTessFactorsMax, false, false, -1, 6, g_Intrinsics_Args51},
+    {(UINT)hlsl::IntrinsicOp::IOP_ProcessTriTessFactorsMin, false, false, -1, 6, g_Intrinsics_Args52},
+    {(UINT)hlsl::IntrinsicOp::IOP_QuadReadAcrossDiagonal, false, false, -1, 2, g_Intrinsics_Args53},
+    {(UINT)hlsl::IntrinsicOp::IOP_QuadReadAcrossX, false, false, -1, 2, g_Intrinsics_Args54},
+    {(UINT)hlsl::IntrinsicOp::IOP_QuadReadAcrossY, false, false, -1, 2, g_Intrinsics_Args55},
+    {(UINT)hlsl::IntrinsicOp::IOP_QuadReadLaneAt, false, false, -1, 3, g_Intrinsics_Args56},
+    {(UINT)hlsl::IntrinsicOp::IOP_RayFlags, false, true, -1, 1, g_Intrinsics_Args57},
+    {(UINT)hlsl::IntrinsicOp::IOP_RayTCurrent, false, true, -1, 1, g_Intrinsics_Args58},
     {(UINT)hlsl::IntrinsicOp::IOP_RayTMin, false, true, -1, 1, g_Intrinsics_Args59},
     {(UINT)hlsl::IntrinsicOp::IOP_ReportHit, false, false, -1, 4, g_Intrinsics_Args60},
     {(UINT)hlsl::IntrinsicOp::IOP_TraceRay, false, false, -1, 9, g_Intrinsics_Args61},

+ 2 - 2
tools/clang/test/CodeGenHLSL/quick-test/raytracing_anyhit.hlsl

@@ -3,7 +3,7 @@
 // CHECK: define void [[anyhit1:@"\\01\?anyhit1@[^\"]+"]](%struct.MyPayload* noalias nocapture %payload, %struct.MyAttributes* nocapture readonly %attr) #0 {
 // CHECK:   call float @dx.op.objectRayOrigin.f32(i32 149, i8 2)
 // CHECK:   call float @dx.op.objectRayDirection.f32(i32 150, i8 2)
-// CHECK:   call float @dx.op.currentRayT.f32(i32 154)
+// CHECK:   call float @dx.op.rayTCurrent.f32(i32 154)
 // CHECK:   call void @dx.op.acceptHitAndEndSearch(i32 156)
 // CHECK:   call void @dx.op.ignoreHit(i32 155)
 // CHECK:   %color = getelementptr inbounds %struct.MyPayload, %struct.MyPayload* %payload, i32 0, i32 0
@@ -24,7 +24,7 @@ struct MyAttributes {
 void anyhit1( inout MyPayload payload : SV_RayPayload,
               in MyAttributes attr : SV_IntersectionAttributes )
 {
-  float3 hitLocation = ObjectRayOrigin() + ObjectRayDirection() * CurrentRayT();
+  float3 hitLocation = ObjectRayOrigin() + ObjectRayDirection() * RayTCurrent();
   if (hitLocation.z < attr.bary.x)
     AcceptHitAndEndSearch();         // aborts function
   if (hitLocation.z < attr.bary.y)

+ 3 - 3
tools/clang/test/CodeGenHLSL/quick-test/raytracing_intersection.hlsl

@@ -1,8 +1,8 @@
 // RUN: %dxc -T lib_6_3 %s | FileCheck %s
 
 // CHECK: define void [[intersection1:@"\\01\?intersection1@[^\"]+"]]() #0 {
-// CHECK:   [[CurrentRayT:%[^ ]+]] = call float @dx.op.currentRayT.f32(i32 154)
-// CHECK:   call i1 @dx.op.reportHit.struct.MyAttributes(i32 158, float [[CurrentRayT]], i32 0, %struct.MyAttributes* nonnull {{.*}})
+// CHECK:   [[rayTCurrent:%[^ ]+]] = call float @dx.op.rayTCurrent.f32(i32 154)
+// CHECK:   call i1 @dx.op.reportHit.struct.MyAttributes(i32 158, float [[rayTCurrent]], i32 0, %struct.MyAttributes* nonnull {{.*}})
 // CHECK:   ret void
 
 struct MyAttributes {
@@ -13,7 +13,7 @@ struct MyAttributes {
 [shader("intersection")]
 void intersection1()
 {
-  float hitT = CurrentRayT();
+  float hitT = RayTCurrent();
   MyAttributes attr = (MyAttributes)0;
   bool bReported = ReportHit(hitT, 0, attr);
 }

+ 5 - 5
tools/clang/test/CodeGenHLSL/quick-test/raytracing_raygeneration.hlsl

@@ -6,9 +6,9 @@
 
 // CHECK: define void [[raygen1:@"\\01\?raygen1@[^\"]+"]]() #0 {
 // CHECK:   %[[i_0:[0-9]+]] = load %struct.RaytracingAccelerationStructure, %struct.RaytracingAccelerationStructure* @"\01?RTAS@@3URaytracingAccelerationStructure@@A", align 4
-// CHECK:   call i32 @dx.op.rayDispatchIndex.i32(i32 145, i8 0)
-// CHECK:   call i32 @dx.op.rayDispatchIndex.i32(i32 145, i8 1)
-// CHECK:   call i32 @dx.op.rayDispatchDimension.i32(i32 146, i8 0)
+// CHECK:   call i32 @dx.op.dispatchRaysIndex.i32(i32 145, i8 0)
+// CHECK:   call i32 @dx.op.dispatchRaysIndex.i32(i32 145, i8 1)
+// CHECK:   call i32 @dx.op.dispatchRaysDimensions.i32(i32 146, i8 0)
 // CHECK:   %[[i_8:[0-9]+]] = call %dx.types.Handle @dx.op.createHandleFromResourceStructForLib.struct.RaytracingAccelerationStructure(i32 160, %struct.RaytracingAccelerationStructure %[[i_0]])
 // CHECK:   call void @dx.op.traceRay.struct.MyPayload(i32 157, %dx.types.Handle %[[i_8]], i32 0, i32 0, i32 0, i32 1, i32 0, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 1.250000e-01, float {{.*}}, float {{.*}}, float {{.*}}, float 1.280000e+02, %struct.MyPayload* nonnull {{.*}})
 // CHECK:   ret void
@@ -24,9 +24,9 @@ RaytracingAccelerationStructure RTAS : register(t5);
 void raygen1()
 {
   MyPayload p = (MyPayload)0;
-  p.pos = RayDispatchIndex();
+  p.pos = DispatchRaysIndex();
   float3 origin = {0, 0, 0};
-  float3 dir = normalize(float3(p.pos / (float)RayDispatchDimension(), 1));
+  float3 dir = normalize(float3(p.pos / (float)DispatchRaysDimensions(), 1));
   RayDesc ray = { origin, 0.125, dir, 128.0};
   TraceRay(RTAS, RAY_FLAG_NONE, 0, 0, 1, 0, ray, p);
 }

+ 11 - 12
tools/clang/test/CodeGenHLSL/quick-test/raytracing_sgv_intrin.hlsl

@@ -1,10 +1,10 @@
 // RUN: %dxc -T lib_6_3 %s | FileCheck %s
 
-// CHECK: call i32 @dx.op.rayDispatchIndex.i32(i32 145, i8 0)
-// CHECK: call i32 @dx.op.rayDispatchIndex.i32(i32 145, i8 1)
+// CHECK: call i32 @dx.op.dispatchRaysIndex.i32(i32 145, i8 0)
+// CHECK: call i32 @dx.op.dispatchRaysIndex.i32(i32 145, i8 1)
 
-// CHECK: call i32 @dx.op.rayDispatchDimension.i32(i32 146, i8 0)
-// CHECK: call i32 @dx.op.rayDispatchDimension.i32(i32 146, i8 1)
+// CHECK: call i32 @dx.op.dispatchRaysDimensions.i32(i32 146, i8 0)
+// CHECK: call i32 @dx.op.dispatchRaysDimensions.i32(i32 146, i8 1)
 
 // CHECK: call float @dx.op.worldRayOrigin.f32(i32 147, i8 0)
 // CHECK: call float @dx.op.worldRayOrigin.f32(i32 147, i8 1)
@@ -23,16 +23,16 @@
 // CHECK: call float @dx.op.objectRayDirection.f32(i32 150, i8 2)
 
 // CHECK: call float @dx.op.rayTMin.f32(i32 153)
-// CHECK: call float @dx.op.currentRayT.f32(i32 154)
+// CHECK: call float @dx.op.rayTCurrent.f32(i32 154)
 // CHECK: call i32 @dx.op.primitiveID.i32(i32 108)
 // CHECK: call i32 @dx.op.instanceID.i32(i32 141)
 // CHECK: call i32 @dx.op.instanceIndex.i32(i32 142)
 // CHECK: call i32 @dx.op.hitKind.i32(i32 143)
-// CHECK: call i32 @dx.op.rayFlag.i32(i32 144)
+// CHECK: call i32 @dx.op.rayFlags.i32(i32 144)
 
 float4 emit(uint shader)  {
-  uint2 a = RayDispatchIndex();
-  a += RayDispatchDimension();
+  uint2 a = DispatchRaysIndex();
+  a += DispatchRaysDimensions();
   float3 b = WorldRayOrigin();
   b += WorldRayDirection();
   b += ObjectRayOrigin();
@@ -41,13 +41,12 @@ float4 emit(uint shader)  {
   float4 r = float4(b, a.x+a.y);
 
   r.w += RayTMin();
-  r.w += CurrentRayT();
-  r.w += PrimitiveID();
+  r.w += RayTCurrent();
+  r.w += PrimitiveIndex();
   r.w += InstanceID();
   r.w += InstanceIndex();
   r.w += HitKind();
-  r.w += RayFlag();
-  
+  r.w += RayFlags();
 
    return r;
 }

+ 2 - 2
tools/clang/test/HLSL/raytracings.hlsl

@@ -1,7 +1,7 @@
 // RUN: %clang_cc1 -HV 2018 -Wno-unused-value -fsyntax-only -ffreestanding -verify %s
 
 void run() {
-  RAY_FLAG rayFlag =
+  RAY_FLAG rayFlags =
     RAY_FLAG_NONE                            +
     RAY_FLAG_FORCE_OPAQUE                    +
     RAY_FLAG_FORCE_NON_OPAQUE                +
@@ -12,7 +12,7 @@ void run() {
     RAY_FLAG_CULL_OPAQUE                     +
     RAY_FLAG_CULL_NON_OPAQUE;
 
-  rayFlag += RAY_FLAG_INVALID;                             /* expected-note@? {{'RAY_FLAG_NONE' declared here}} */ /* expected-error {{use of undeclared identifier 'RAY_FLAG_INVALID'; did you mean 'RAY_FLAG_NONE'?}} */
+  rayFlags += RAY_FLAG_INVALID;                             /* expected-note@? {{'RAY_FLAG_NONE' declared here}} */ /* expected-error {{use of undeclared identifier 'RAY_FLAG_INVALID'; did you mean 'RAY_FLAG_NONE'?}} */
 
   int intFlag = RAY_FLAG_CULL_OPAQUE;
 

+ 4 - 4
tools/clang/tools/dxcompiler/dxcdisassembler.cpp

@@ -970,9 +970,9 @@ static const char *OpCodeSignatures[] = {
   "()",  // InstanceID
   "()",  // InstanceIndex
   "()",  // HitKind
-  "()",  // RayFlag
-  "(col)",  // RayDispatchIndex
-  "(col)",  // RayDispatchDimension
+  "()",  // RayFlags
+  "(col)",  // DispatchRaysIndex
+  "(col)",  // DispatchRaysDimensions
   "(col)",  // WorldRayOrigin
   "(col)",  // WorldRayDirection
   "(col)",  // ObjectRayOrigin
@@ -980,7 +980,7 @@ static const char *OpCodeSignatures[] = {
   "(row,col)",  // ObjectToWorld
   "(row,col)",  // WorldToObject
   "()",  // RayTMin
-  "()",  // CurrentRayT
+  "()",  // RayTCurrent
   "()",  // IgnoreHit
   "()",  // AcceptHitAndEndSearch
   "(AccelerationStructure,RayFlags,InstanceInclusionMask,RayContributionToHitGroupIndex,MultiplierForGeometryContributionToShaderIndex,MissShaderIndex,Origin_X,Origin_Y,Origin_Z,TMin,Direction_X,Direction_Y,Direction_Z,TMax,payload)",  // TraceRay

+ 5 - 5
utils/hct/gen_intrin_main.txt

@@ -274,8 +274,8 @@ bool [[]]  ReportHit(in float THit, in uint HitKind, in udt Attributes);
 void [[]]  CallShader(in uint ShaderIndex, inout udt Parameter);
 void [[]]  IgnoreHit();
 void [[]]  AcceptHitAndEndSearch();
-uint<2> [[rn]] RayDispatchIndex();
-uint<2> [[rn]] RayDispatchDimension();
+uint<2> [[rn]] DispatchRaysIndex();
+uint<2> [[rn]] DispatchRaysDimensions();
 // group: Ray Vectors
 float<3> [[rn]] WorldRayOrigin();
 float<3> [[rn]] WorldRayDirection();
@@ -283,13 +283,13 @@ float<3> [[rn]] ObjectRayOrigin();
 float<3> [[rn]] ObjectRayDirection();
 // group: RayT
 float [[rn]] RayTMin();
-float [[rn]] CurrentRayT();
+float [[rn]] RayTCurrent();
 // group: Raytracing uint System Values
-uint [[rn]] PrimitiveID();
+uint [[rn]] PrimitiveIndex();
 uint [[rn]] InstanceID();
 uint [[rn]] InstanceIndex();
 uint [[rn]] HitKind();
-uint [[rn]] RayFlag();
+uint [[rn]] RayFlags();
 // group: Ray Transforms
 row_major float<3,4> [[rn]] ObjectToWorld();
 row_major float<3,4> [[rn]] WorldToObject();

+ 7 - 7
utils/hct/hctdb.py

@@ -293,10 +293,10 @@ class db_dxil(object):
             self.name_idx[i].shader_model = 6,1
         for i in "RawBufferLoad,RawBufferStore".split(","):
             self.name_idx[i].shader_model = 6,2
-        for i in "InstanceID,InstanceIndex,HitKind,RayFlag".split(","):
+        for i in "InstanceID,InstanceIndex,HitKind,RayFlags".split(","):
             self.name_idx[i].category = "Raytracing uint System Values"
             self.name_idx[i].shader_model = 6,3
-        for i in "RayDispatchIndex,RayDispatchDimension".split(","):
+        for i in "DispatchRaysIndex,DispatchRaysDimensions".split(","):
             self.name_idx[i].category = "Ray Dispatch Arguments"
             self.name_idx[i].shader_model = 6,3
         for i in "WorldRayOrigin,WorldRayDirection,ObjectRayOrigin,ObjectRayDirection".split(","):
@@ -305,7 +305,7 @@ class db_dxil(object):
         for i in "ObjectToWorld,WorldToObject".split(","):
             self.name_idx[i].category = "Ray Transforms"
             self.name_idx[i].shader_model = 6,3
-        for i in "RayTMin,CurrentRayT".split(","):
+        for i in "RayTMin,RayTCurrent".split(","):
             self.name_idx[i].category = "RayT"
             self.name_idx[i].shader_model = 6,3
         for i in "IgnoreHit,AcceptHitAndEndSearch".split(","):
@@ -1144,16 +1144,16 @@ class db_dxil(object):
             db_dxil_param(0, "i32", "", "result")])
         next_op_idx += 1
 
-        self.add_dxil_op("RayFlag", next_op_idx, "RayFlag", "uint containing the current ray flags.", "i", "rn", [
+        self.add_dxil_op("RayFlags", next_op_idx, "RayFlags", "uint containing the current ray flags.", "i", "rn", [
             db_dxil_param(0, "i32", "", "result")])
         next_op_idx += 1
 
-        self.add_dxil_op("RayDispatchIndex", next_op_idx, "RayDispatchIndex", "The current x and y location within the Width and Height", "i", "rn", [
+        self.add_dxil_op("DispatchRaysIndex", next_op_idx, "DispatchRaysIndex", "The current x and y location within the Width and Height", "i", "rn", [
             db_dxil_param(0, "i32", "", "result"),
             db_dxil_param(2, "i8", "col", "column, relative to the element")])
         next_op_idx += 1
 
-        self.add_dxil_op("RayDispatchDimension", next_op_idx, "RayDispatchDimension", "The Width and Height values from the D3D12_DISPATCH_RAYS_DESC structure provided to the originating DispatchRays() call.", "i", "rn", [
+        self.add_dxil_op("DispatchRaysDimensions", next_op_idx, "DispatchRaysDimensions", "The Width and Height values from the D3D12_DISPATCH_RAYS_DESC structure provided to the originating DispatchRays() call.", "i", "rn", [
             db_dxil_param(0, "i32", "", "result"),
             db_dxil_param(2, "i8", "col", "column, relative to the element")])
         next_op_idx += 1
@@ -1194,7 +1194,7 @@ class db_dxil(object):
             db_dxil_param(0, "f", "", "result")])
         next_op_idx += 1
 
-        self.add_dxil_op("CurrentRayT", next_op_idx, "CurrentRayT", "float representing the current parametric ending point for the ray", "f", "rn", [
+        self.add_dxil_op("RayTCurrent", next_op_idx, "RayTCurrent", "float representing the current parametric ending point for the ray", "f", "rn", [
             db_dxil_param(0, "f", "", "result")])
         next_op_idx += 1