blob: 3078bdea564c65fee02366a7c2b69df1fd046a11 [file] [log] [blame] [edit]
// This file generated by compiling the following source (runtime.c) as follows:
// clang -S -emit-llvm -target nvptr runtime.c
// opt -S -mem2reg runtime.ll -o runtime.opt.ll
// The resulting LLVM-IR is stripped of its datalayout and replaced with one
// compatible with DXIL.
// runtime.c
#if 0
#include <stddef.h>
static const int STACK_SIZE_IN_BYTES = 1024;
typedef float float3 __attribute__((vector_size(3*sizeof(float))));
typedef float float4 __attribute__((vector_size(4*sizeof(float))));
typedef float float12 __attribute__((vector_size(12*sizeof(float))));
typedef float (M3x4)[12];
typedef int (StackType)[STACK_SIZE_IN_BYTES/sizeof(int)];
typedef unsigned char byte;
typedef struct RuntimeDataStruct
{
int DispatchRaysIndex[2];
int DispatchRaysDimensions[2];
float RayTMin;
float RayTCurrent;
unsigned RayFlags;
float WorldRayOrigin[3];
float WorldRayDirection[3];
float ObjectRayOrigin[3];
float ObjectRayDirection[3];
M3x4 ObjectToWorld;
M3x4 WorldToObject;
unsigned PrimitiveIndex;
unsigned InstanceIndex;
unsigned InstanceID;
unsigned HitKind;
unsigned ShaderRecordOffset;
// Pending hit values - accessed in anyHit and intersection shaders before a hit has been committed
float PendingRayTCurrent;
unsigned PendingPrimitiveIndex;
unsigned PendingInstanceIndex;
unsigned PendingInstanceID;
unsigned PendingHitKind;
unsigned PendingShaderRecordOffset;
int GroupIndex;
int AnyHitResult;
int AnyHitStateId; // Originally temporary. We needed to avoid resource usage
// in ReportHit() because of linking issues so weset the value here first.
// May be worth retaining to cache the value when fetching the intersection
// stateId (fetch them both at once).
int PayloadOffset;
int CommittedAttrOffset;
int PendingAttrOffset;
int StackOffset; // offset from the start of the stack
StackType* Stack;
} RuntimeData;
typedef RuntimeData* RuntimeDataType;
typedef struct TraceRaySpills_ClosestHit
{
float RayTMin;
float RayTCurrent;
unsigned RayFlags;
float WorldRayOrigin[3];
float WorldRayDirection[3];
float ObjectRayOrigin[3];
float ObjectRayDirection[3];
unsigned PrimitiveIndex;
unsigned InstanceIndex;
unsigned InstanceID;
unsigned HitKind;
unsigned ShaderRecordOffset;
} TraceRaySpills_ClosestHit;
typedef struct TraceRaySpills_Miss
{
float RayTMin;
float RayTCurrent;
unsigned RayFlags;
float WorldRayOrigin[3];
float WorldRayDirection[3];
unsigned ShaderRecordOffset;
} TraceRaySpills_Miss;
#define REF(x) (runtimeData->x)
#define REF_FLT(x) (runtimeData->x)
#define REF_STACK(offset) \
((*runtimeData->Stack)[runtimeData->StackOffset + offset])
#define REF_FLT_OFS(x, offset) (runtimeData->x[offset])
// Return next stateID
int rewrite_dispatch(RuntimeDataType runtimeData, int stateID);
void* rewrite_setLaunchParams(RuntimeDataType runtimeData, unsigned dimx, unsigned dimy);
unsigned rewrite_getStackSize(void);
StackType* rewrite_createStack(void);
void stackInit(RuntimeDataType runtimeData, StackType* theStack, unsigned stackSize)
{
REF(Stack) = theStack;
REF(StackOffset) = stackSize/sizeof(int) - 1;
REF(PayloadOffset) = 1111; // recognizable bogus values
REF(CommittedAttrOffset) = 2222;
REF(PendingAttrOffset) = 3333;
}
void stackFramePush(RuntimeDataType runtimeData, int size)
{
REF(StackOffset) -= size;
}
void stackFramePop(RuntimeDataType runtimeData, int size)
{
REF(StackOffset) += size;
}
int stackFrameOffset(RuntimeDataType runtimeData)
{
return REF(StackOffset);
}
int payloadOffset(RuntimeDataType runtimeData)
{
return REF(PayloadOffset);
}
int committedAttrOffset(RuntimeDataType runtimeData)
{
return REF(CommittedAttrOffset);
}
int pendingAttrOffset(RuntimeDataType runtimeData)
{
return REF(PendingAttrOffset);
}
int* stackIntPtr(RuntimeDataType runtimeData, int baseOffset, int offset)
{
return &(*runtimeData->Stack)[baseOffset + offset];
}
void traceFramePush(RuntimeDataType runtimeData, int attrSize)
{
// Save the old payload and attribute offsets
REF_STACK(-1) = REF(CommittedAttrOffset);
REF_STACK(-2) = REF(PendingAttrOffset);
// Set new offsets
REF(CommittedAttrOffset) = REF(StackOffset) - 2 - attrSize;
REF(PendingAttrOffset) = REF(StackOffset) - 2 - 2 * attrSize;
}
void traceFramePop(RuntimeDataType runtimeData)
{
// Restore the old attribute offsets
REF(CommittedAttrOffset) = REF_STACK(-1);
REF(PendingAttrOffset) = REF_STACK(-2);
}
void traceRaySave_ClosestHit(RuntimeDataType runtimeData, TraceRaySpills_ClosestHit* spills)
{
spills->RayFlags = REF(RayFlags);
spills->RayTCurrent = REF_FLT(RayTCurrent);
spills->RayTMin = REF_FLT(RayTMin);
spills->WorldRayOrigin[0] = REF_FLT(WorldRayOrigin[0]);
spills->WorldRayOrigin[1] = REF_FLT(WorldRayOrigin[1]);
spills->WorldRayOrigin[2] = REF_FLT(WorldRayOrigin[2]);
spills->WorldRayDirection[0] = REF_FLT(WorldRayDirection[0]);
spills->WorldRayDirection[1] = REF_FLT(WorldRayDirection[1]);
spills->WorldRayDirection[2] = REF_FLT(WorldRayDirection[2]);
spills->ObjectRayOrigin[0] = REF_FLT(ObjectRayOrigin[0]);
spills->ObjectRayOrigin[1] = REF_FLT(ObjectRayOrigin[1]);
spills->ObjectRayOrigin[2] = REF_FLT(ObjectRayOrigin[2]);
spills->ObjectRayDirection[0] = REF_FLT(ObjectRayDirection[0]);
spills->ObjectRayDirection[1] = REF_FLT(ObjectRayDirection[1]);
spills->ObjectRayDirection[2] = REF_FLT(ObjectRayDirection[2]);
spills->PrimitiveIndex = REF(PrimitiveIndex);
spills->InstanceIndex = REF(InstanceIndex);
spills->InstanceID = REF(InstanceID);
spills->HitKind = REF(HitKind);
spills->ShaderRecordOffset = REF(ShaderRecordOffset);
}
void traceRayRestore_ClosestHit(RuntimeDataType runtimeData, TraceRaySpills_ClosestHit* spills)
{
REF(RayFlags) = spills->RayFlags;
REF_FLT(RayTCurrent) = spills->RayTCurrent;
REF_FLT(RayTMin) = spills->RayTMin;
REF_FLT(WorldRayOrigin[0]) = spills->WorldRayOrigin[0];
REF_FLT(WorldRayOrigin[1]) = spills->WorldRayOrigin[1];
REF_FLT(WorldRayOrigin[2]) = spills->WorldRayOrigin[2];
REF_FLT(WorldRayDirection[0]) = spills->WorldRayDirection[0];
REF_FLT(WorldRayDirection[1]) = spills->WorldRayDirection[1];
REF_FLT(WorldRayDirection[2]) = spills->WorldRayDirection[2];
REF_FLT(ObjectRayOrigin[0]) = spills->ObjectRayOrigin[0];
REF_FLT(ObjectRayOrigin[1]) = spills->ObjectRayOrigin[1];
REF_FLT(ObjectRayOrigin[2]) = spills->ObjectRayOrigin[2];
REF_FLT(ObjectRayDirection[0]) = spills->ObjectRayDirection[0];
REF_FLT(ObjectRayDirection[1]) = spills->ObjectRayDirection[1];
REF_FLT(ObjectRayDirection[2]) = spills->ObjectRayDirection[2];
REF(PrimitiveIndex) = spills->PrimitiveIndex;
REF(InstanceIndex) = spills->InstanceIndex;
REF(InstanceID) = spills->InstanceID;
REF(HitKind) = spills->HitKind;
REF(ShaderRecordOffset) = spills->ShaderRecordOffset;
}
void traceRaySave_Miss(RuntimeDataType runtimeData, TraceRaySpills_Miss* spills)
{
spills->RayFlags = REF(RayFlags);
spills->RayTCurrent = REF_FLT(RayTCurrent);
spills->RayTMin = REF_FLT(RayTMin);
spills->WorldRayOrigin[0] = REF_FLT(WorldRayOrigin[0]);
spills->WorldRayOrigin[1] = REF_FLT(WorldRayOrigin[1]);
spills->WorldRayOrigin[2] = REF_FLT(WorldRayOrigin[2]);
spills->WorldRayDirection[0] = REF_FLT(WorldRayDirection[0]);
spills->WorldRayDirection[1] = REF_FLT(WorldRayDirection[1]);
spills->WorldRayDirection[2] = REF_FLT(WorldRayDirection[2]);
spills->ShaderRecordOffset = REF(ShaderRecordOffset);
}
void traceRayRestore_Miss(RuntimeDataType runtimeData, TraceRaySpills_Miss* spills)
{
REF(RayFlags) = spills->RayFlags;
REF_FLT(RayTCurrent) = spills->RayTCurrent;
REF_FLT(RayTMin) = spills->RayTMin;
REF_FLT(WorldRayOrigin[0]) = spills->WorldRayOrigin[0];
REF_FLT(WorldRayOrigin[1]) = spills->WorldRayOrigin[1];
REF_FLT(WorldRayOrigin[2]) = spills->WorldRayOrigin[2];
REF_FLT(WorldRayDirection[0]) = spills->WorldRayDirection[0];
REF_FLT(WorldRayDirection[1]) = spills->WorldRayDirection[1];
REF_FLT(WorldRayDirection[2]) = spills->WorldRayDirection[2];
REF(ShaderRecordOffset) = spills->ShaderRecordOffset;
}
//////////////////////////////////////////////////////////////////////////
//
// Intrinsics for the fallback layer
//
//////////////////////////////////////////////////////////////////////////
void fb_Fallback_Scheduler(int initialStateId, unsigned dimx, unsigned dimy)
{
StackType* theStack = rewrite_createStack();
RuntimeData theRuntimeData;
RuntimeDataType runtimeData = &theRuntimeData;
rewrite_setLaunchParams(runtimeData, dimx, dimy);
if(REF(DispatchRaysIndex[0]) >= REF(DispatchRaysDimensions[0]) ||
REF(DispatchRaysIndex[1]) >= REF(DispatchRaysDimensions[1]))
{
return;
}
// Set final return stateID into reserved area at stack top
unsigned stackSize = rewrite_getStackSize();
stackInit(runtimeData, theStack, stackSize);
int stackFrameOffs = stackFrameOffset(runtimeData);
*stackIntPtr(runtimeData, stackFrameOffs, 0) = -1;
int stateId = initialStateId;
int count = 0;
while( stateId >= 0 )
{
stateId = rewrite_dispatch(runtimeData, stateId);
}
}
void fb_Fallback_SetLaunchParams(RuntimeDataType runtimeData, unsigned DTidx, unsigned DTidy, unsigned dimx, unsigned dimy, unsigned groupIndex)
{
REF(DispatchRaysIndex[0]) = DTidx;
REF(DispatchRaysIndex[1]) = DTidy;
REF(DispatchRaysDimensions[0]) = dimx;
REF(DispatchRaysDimensions[1]) = dimy;
REF(GroupIndex) = groupIndex;
}
int fb_Fallback_TraceRayBegin(RuntimeDataType runtimeData, unsigned rayFlags, float ox, float oy, float oz, float tmin, float dx, float dy, float dz, float tmax, int newPayloadOffset)
{
REF(RayFlags) = rayFlags;
REF_FLT(WorldRayOrigin[0]) = ox;
REF_FLT(WorldRayOrigin[1]) = oy;
REF_FLT(WorldRayOrigin[2]) = oz;
REF_FLT(WorldRayDirection[0]) = dx;
REF_FLT(WorldRayDirection[1]) = dy;
REF_FLT(WorldRayDirection[2]) = dz;
REF_FLT(RayTCurrent) = tmax;
REF_FLT(RayTMin) = tmin;
int oldOffset = REF(PayloadOffset);
REF(PayloadOffset) = newPayloadOffset;
return oldOffset;
}
void fb_Fallback_TraceRayEnd(RuntimeDataType runtimeData, int oldPayloadOffset)
{
REF(PayloadOffset) = oldPayloadOffset;
}
void fb_Fallback_SetPendingTriVals(RuntimeDataType runtimeData, unsigned shaderRecordOffset, unsigned primitiveIndex, unsigned instanceIndex, unsigned instanceID, float t, unsigned hitKind)
{
REF(PendingShaderRecordOffset) = shaderRecordOffset;
REF(PendingPrimitiveIndex) = primitiveIndex;
REF(PendingInstanceIndex) = instanceIndex;
REF(PendingInstanceID) = instanceID;
REF_FLT(PendingRayTCurrent) = t;
REF(PendingHitKind) = hitKind;
}
void fb_Fallback_SetPendingCustomVals(RuntimeDataType runtimeData, unsigned shaderRecordOffset, unsigned primitiveIndex, unsigned instanceIndex, unsigned instanceID)
{
REF(PendingShaderRecordOffset) = shaderRecordOffset;
REF(PendingPrimitiveIndex) = primitiveIndex;
REF(PendingInstanceIndex) = instanceIndex;
REF(PendingInstanceID) = instanceID;
}
void fb_Fallback_CommitHit(RuntimeDataType runtimeData)
{
REF_FLT(RayTCurrent) = REF_FLT(PendingRayTCurrent);
REF(ShaderRecordOffset) = REF(PendingShaderRecordOffset);
REF(PrimitiveIndex) = REF(PendingPrimitiveIndex);
REF(InstanceIndex) = REF(PendingInstanceIndex);
REF(InstanceID) = REF(PendingInstanceID);
REF(HitKind) = REF(PendingHitKind);
int PendingAttrOffset = REF(PendingAttrOffset);
REF(PendingAttrOffset) = REF(CommittedAttrOffset);
REF(CommittedAttrOffset) = PendingAttrOffset;
}
int fb_Fallback_RuntimeDataLoadInt(RuntimeDataType runtimeData, int offset)
{
return (*runtimeData->Stack)[offset];
}
void fb_Fallback_RuntimeDataStoreInt(RuntimeDataType runtimeData, int offset, int val)
{
(*runtimeData->Stack)[offset] = val;
}
unsigned fb_dxop_dispatchRaysIndex(RuntimeDataType runtimeData, byte i)
{
return REF(DispatchRaysIndex[i]);
}
unsigned fb_dxop_dispatchRaysDimensions(RuntimeDataType runtimeData, byte i)
{
return REF(DispatchRaysDimensions[i]);
}
float fb_dxop_rayTMin(RuntimeDataType runtimeData)
{
return REF_FLT(RayTMin);
}
float fb_Fallback_RayTMin(RuntimeDataType runtimeData)
{
return REF_FLT(RayTMin);
}
void fb_Fallback_SetRayTMin(RuntimeDataType runtimeData, float t)
{
REF_FLT(RayTMin) = t;
}
float fb_dxop_rayTCurrent(RuntimeDataType runtimeData)
{
return REF_FLT(RayTCurrent);
}
float fb_Fallback_RayTCurrent(RuntimeDataType runtimeData)
{
return REF_FLT(RayTCurrent);
}
void fb_Fallback_SetRayTCurrent(RuntimeDataType runtimeData, float t)
{
REF_FLT(RayTCurrent) = t;
}
unsigned fb_dxop_rayFlags(RuntimeDataType runtimeData)
{
return REF(RayFlags);
}
unsigned fb_Fallback_RayFlags(RuntimeDataType runtimeData)
{
return REF(RayFlags);
}
void fb_Fallback_SetRayFlags(RuntimeDataType runtimeData, unsigned flags)
{
REF(RayFlags) = flags;
}
float fb_dxop_worldRayOrigin(RuntimeDataType runtimeData, byte i)
{
return REF_FLT(WorldRayOrigin[i]);
}
float fb_Fallback_WorldRayOrigin(RuntimeDataType runtimeData, byte i)
{
return REF_FLT(WorldRayOrigin[i]);
}
void fb_Fallback_SetWorldRayOrigin(RuntimeDataType runtimeData, float x, float y, float z)
{
REF_FLT(WorldRayOrigin[0]) = x;
REF_FLT(WorldRayOrigin[1]) = y;
REF_FLT(WorldRayOrigin[2]) = z;
}
float fb_dxop_worldRayDirection(RuntimeDataType runtimeData, byte i)
{
return REF_FLT(WorldRayDirection[i]);
}
float fb_Fallback_WorldRayDirection(RuntimeDataType runtimeData, byte i)
{
return REF_FLT(WorldRayDirection[i]);
}
void fb_Fallback_SetWorldRayDirection(RuntimeDataType runtimeData, float x, float y, float z)
{
REF_FLT(WorldRayDirection[0]) = x;
REF_FLT(WorldRayDirection[1]) = y;
REF_FLT(WorldRayDirection[2]) = z;
}
float fb_dxop_objectRayOrigin(RuntimeDataType runtimeData, byte i)
{
return REF_FLT(ObjectRayOrigin[i]);
}
float fb_Fallback_ObjectRayOrigin(RuntimeDataType runtimeData, byte i)
{
return REF_FLT(ObjectRayOrigin[i]);
}
void fb_Fallback_SetObjectRayOrigin(RuntimeDataType runtimeData, float x, float y, float z)
{
REF_FLT(ObjectRayOrigin[0]) = x;
REF_FLT(ObjectRayOrigin[1]) = y;
REF_FLT(ObjectRayOrigin[2]) = z;
}
float fb_dxop_objectRayDirection(RuntimeDataType runtimeData, byte i)
{
return REF_FLT(ObjectRayDirection[i]);
}
float fb_Fallback_ObjectRayDirection(RuntimeDataType runtimeData, byte i)
{
return REF_FLT(ObjectRayDirection[i]);
}
void fb_Fallback_SetObjectRayDirection(RuntimeDataType runtimeData, float x, float y, float z)
{
REF_FLT(ObjectRayDirection[0]) = x;
REF_FLT(ObjectRayDirection[1]) = y;
REF_FLT(ObjectRayDirection[2]) = z;
}
float fb_dxop_objectToWorld(RuntimeDataType runtimeData, int r, byte c)
{
int i = r * 4 + c;
return REF_FLT_OFS(ObjectToWorld, i);
}
void fb_Fallback_SetObjectToWorld(RuntimeDataType runtimeData, float12 M)
{
REF_FLT_OFS(ObjectToWorld, 0) = M[0];
REF_FLT_OFS(ObjectToWorld, 1) = M[1];
REF_FLT_OFS(ObjectToWorld, 2) = M[2];
REF_FLT_OFS(ObjectToWorld, 3) = M[3];
REF_FLT_OFS(ObjectToWorld, 4) = M[4];
REF_FLT_OFS(ObjectToWorld, 5) = M[5];
REF_FLT_OFS(ObjectToWorld, 6) = M[6];
REF_FLT_OFS(ObjectToWorld, 7) = M[7];
REF_FLT_OFS(ObjectToWorld, 8) = M[8];
REF_FLT_OFS(ObjectToWorld, 9) = M[9];
REF_FLT_OFS(ObjectToWorld, 10) = M[10];
REF_FLT_OFS(ObjectToWorld, 11) = M[11];
}
float fb_dxop_worldToObject(RuntimeDataType runtimeData, int r, byte c)
{
int i = r * 4 + c;
return REF_FLT_OFS(WorldToObject, i);
}
void fb_Fallback_SetWorldToObject(RuntimeDataType runtimeData, float12 M)
{
REF_FLT_OFS(WorldToObject, 0) = M[0];
REF_FLT_OFS(WorldToObject, 1) = M[1];
REF_FLT_OFS(WorldToObject, 2) = M[2];
REF_FLT_OFS(WorldToObject, 3) = M[3];
REF_FLT_OFS(WorldToObject, 4) = M[4];
REF_FLT_OFS(WorldToObject, 5) = M[5];
REF_FLT_OFS(WorldToObject, 6) = M[6];
REF_FLT_OFS(WorldToObject, 7) = M[7];
REF_FLT_OFS(WorldToObject, 8) = M[8];
REF_FLT_OFS(WorldToObject, 9) = M[9];
REF_FLT_OFS(WorldToObject, 10) = M[10];
REF_FLT_OFS(WorldToObject, 11) = M[11];
}
unsigned fb_dxop_primitiveIndex(RuntimeDataType runtimeData)
{
return REF(PrimitiveIndex);
}
unsigned fb_Fallback_PrimitiveIndex(RuntimeDataType runtimeData)
{
return REF(PrimitiveIndex);
}
void fb_Fallback_SetPrimitiveIndex(RuntimeDataType runtimeData, unsigned i)
{
REF(PrimitiveIndex) = i;
}
unsigned fb_Fallback_ShaderRecordOffset(RuntimeDataType runtimeData)
{
return REF(ShaderRecordOffset);
}
void fb_Fallback_SetShaderRecordOffset(RuntimeDataType runtimeData, unsigned shaderRecordOffset)
{
REF(ShaderRecordOffset) = shaderRecordOffset;
}
unsigned fb_dxop_instanceIndex(RuntimeDataType runtimeData)
{
return REF(InstanceIndex);
}
unsigned fb_Fallback_InstanceIndex(RuntimeDataType runtimeData)
{
return REF(InstanceIndex);
}
void fb_Fallback_SetInstanceIndex(RuntimeDataType runtimeData, unsigned i)
{
REF(InstanceIndex) = i;
}
unsigned fb_dxop_instanceID(RuntimeDataType runtimeData)
{
return REF(InstanceID);
}
unsigned fb_Fallback_InstanceID(RuntimeDataType runtimeData)
{
return REF(InstanceID);
}
void fb_Fallback_SetInstanceID(RuntimeDataType runtimeData, unsigned i)
{
REF(InstanceID) = i;
}
unsigned fb_dxop_hitKind(RuntimeDataType runtimeData)
{
return REF(HitKind);
}
unsigned fb_Fallback_HitKind(RuntimeDataType runtimeData)
{
return REF(HitKind);
}
void fb_Fallback_SetHitKind(RuntimeDataType runtimeData, unsigned i)
{
REF(HitKind) = i;
}
float fb_dxop_pending_rayTCurrent(RuntimeDataType runtimeData)
{
return REF_FLT(PendingRayTCurrent);
}
void fb_Fallback_SetPendingRayTCurrent(RuntimeDataType runtimeData, float t)
{
REF_FLT(PendingRayTCurrent) = t;
}
unsigned fb_dxop_pending_primitiveID(RuntimeDataType runtimeData)
//unsigned fb_dxop_pending_primitiveIndex(RuntimeDataType runtimeData)
{
return REF(PendingPrimitiveIndex);
}
unsigned fb_Fallback_PendingShaderRecordOffset(RuntimeDataType runtimeData)
{
return REF(PendingShaderRecordOffset);
}
unsigned fb_dxop_pending_instanceIndex(RuntimeDataType runtimeData)
{
return REF(PendingInstanceIndex);
}
unsigned fb_dxop_pending_instanceID(RuntimeDataType runtimeData)
{
return REF(PendingInstanceID);
}
unsigned fb_dxop_pending_hitKind(RuntimeDataType runtimeData)
{
return REF(PendingHitKind);
}
void fb_Fallback_SetPendingHitKind(RuntimeDataType runtimeData, unsigned i)
{
REF(PendingHitKind) = i;
}
unsigned fb_Fallback_GroupIndex(RuntimeDataType runtimeData)
{
return REF(GroupIndex);
}
int fb_Fallback_AnyHitResult(RuntimeDataType runtimeData)
{
return REF(AnyHitResult);
}
void fb_Fallback_SetAnyHitResult(RuntimeDataType runtimeData, int result)
{
REF(AnyHitResult) = result;
}
int fb_Fallback_AnyHitStateId(RuntimeDataType runtimeData)
{
return REF(AnyHitStateId);
}
void fb_Fallback_SetAnyHitStateId(RuntimeDataType runtimeData, int id)
{
REF(AnyHitStateId) = id;
}
#endif
static const char *runtimeString[] = {R"AAA(
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f:64:64-n8:16:32:64"
target triple = "dxil-ms-dx"
%struct.RuntimeDataStruct = type { [2 x i32], [2 x i32], float, float, i32, [3 x float], [3 x float], [3 x float], [3 x float], [12 x float], [12 x float], i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [256 x i32]* }
%struct.TraceRaySpills_ClosestHit = type { float, float, i32, [3 x float], [3 x float], [3 x float], [3 x float], i32, i32, i32, i32, i32 }
%struct.TraceRaySpills_Miss = type { float, float, i32, [3 x float], [3 x float], i32 }
; Function Attrs: nounwind
define void @stackInit(%struct.RuntimeDataStruct* %runtimeData, [256 x i32]* %theStack, i32 %stackSize) #0 {
entry:
%Stack = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 29
store [256 x i32]* %theStack, [256 x i32]** %Stack, align 4
%div = udiv i32 %stackSize, 4
%sub = sub i32 %div, 1
%StackOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
store i32 %sub, i32* %StackOffset, align 4
%PayloadOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 25
store i32 1111, i32* %PayloadOffset, align 4
%CommittedAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 26
store i32 2222, i32* %CommittedAttrOffset, align 4
%PendingAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 27
store i32 3333, i32* %PendingAttrOffset, align 4
ret void
}
; Function Attrs: nounwind
define void @stackFramePush(%struct.RuntimeDataStruct* %runtimeData, i32 %size) #0 {
entry:
%StackOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%0 = load i32, i32* %StackOffset, align 4
%sub = sub nsw i32 %0, %size
store i32 %sub, i32* %StackOffset, align 4
ret void
}
; Function Attrs: nounwind
define void @stackFramePop(%struct.RuntimeDataStruct* %runtimeData, i32 %size) #0 {
entry:
%StackOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%0 = load i32, i32* %StackOffset, align 4
%add = add nsw i32 %0, %size
store i32 %add, i32* %StackOffset, align 4
ret void
}
; Function Attrs: nounwind
define i32 @stackFrameOffset(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%StackOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%0 = load i32, i32* %StackOffset, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @payloadOffset(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PayloadOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 25
%0 = load i32, i32* %PayloadOffset, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @committedAttrOffset(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%CommittedAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 26
%0 = load i32, i32* %CommittedAttrOffset, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @pendingAttrOffset(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PendingAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 27
%0 = load i32, i32* %PendingAttrOffset, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32* @stackIntPtr(%struct.RuntimeDataStruct* %runtimeData, i32 %baseOffset, i32 %offset) #0 {
entry:
%add = add nsw i32 %baseOffset, %offset
%Stack = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 29
%0 = load [256 x i32]*, [256 x i32]** %Stack, align 4
%arrayidx = getelementptr inbounds [256 x i32], [256 x i32]* %0, i32 0, i32 %add
ret i32* %arrayidx
}
; Function Attrs: nounwind
define void @traceFramePush(%struct.RuntimeDataStruct* %runtimeData, i32 %attrSize) #0 {
entry:
%CommittedAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 26
%0 = load i32, i32* %CommittedAttrOffset, align 4
%StackOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%1 = load i32, i32* %StackOffset, align 4
%add = add nsw i32 %1, -1
%Stack = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 29
%2 = load [256 x i32]*, [256 x i32]** %Stack, align 4
%arrayidx = getelementptr inbounds [256 x i32], [256 x i32]* %2, i32 0, i32 %add
store i32 %0, i32* %arrayidx, align 4
%PendingAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 27
%3 = load i32, i32* %PendingAttrOffset, align 4
%StackOffset1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%4 = load i32, i32* %StackOffset1, align 4
%add2 = add nsw i32 %4, -2
%Stack3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 29
%5 = load [256 x i32]*, [256 x i32]** %Stack3, align 4
%arrayidx4 = getelementptr inbounds [256 x i32], [256 x i32]* %5, i32 0, i32 %add2
store i32 %3, i32* %arrayidx4, align 4
%StackOffset5 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%6 = load i32, i32* %StackOffset5, align 4
%sub = sub nsw i32 %6, 2
%sub6 = sub nsw i32 %sub, %attrSize
%CommittedAttrOffset7 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 26
store i32 %sub6, i32* %CommittedAttrOffset7, align 4
%StackOffset8 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%7 = load i32, i32* %StackOffset8, align 4
%sub9 = sub nsw i32 %7, 2
%mul = mul nsw i32 2, %attrSize
%sub10 = sub nsw i32 %sub9, %mul
%PendingAttrOffset11 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 27
store i32 %sub10, i32* %PendingAttrOffset11, align 4
ret void
}
; Function Attrs: nounwind
define void @traceFramePop(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%StackOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%0 = load i32, i32* %StackOffset, align 4
%add = add nsw i32 %0, -1
%Stack = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 29
%1 = load [256 x i32]*, [256 x i32]** %Stack, align 4
%arrayidx = getelementptr inbounds [256 x i32], [256 x i32]* %1, i32 0, i32 %add
%2 = load i32, i32* %arrayidx, align 4
%CommittedAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 26
store i32 %2, i32* %CommittedAttrOffset, align 4
%StackOffset1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 28
%3 = load i32, i32* %StackOffset1, align 4
%add2 = add nsw i32 %3, -2
%Stack3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 29
%4 = load [256 x i32]*, [256 x i32]** %Stack3, align 4
%arrayidx4 = getelementptr inbounds [256 x i32], [256 x i32]* %4, i32 0, i32 %add2
%5 = load i32, i32* %arrayidx4, align 4
%PendingAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 27
store i32 %5, i32* %PendingAttrOffset, align 4
ret void
}
; Function Attrs: nounwind
define void @traceRaySave_ClosestHit(%struct.RuntimeDataStruct* %runtimeData, %struct.TraceRaySpills_ClosestHit* %spills) #0 {
entry:
%RayFlags = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 4
%0 = load i32, i32* %RayFlags, align 4
%RayFlags1 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 2
store i32 %0, i32* %RayFlags1, align 4
%RayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
%1 = load float, float* %RayTCurrent, align 4
%RayTCurrent2 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 1
store float %1, float* %RayTCurrent2, align 4
%RayTMin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 2
%2 = load float, float* %RayTMin, align 4
%RayTMin3 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 0
store float %2, float* %RayTMin3, align 4
%WorldRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin, i32 0, i32 0
%3 = load float, float* %arrayidx, align 4
%WorldRayOrigin4 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 3
%arrayidx5 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin4, i32 0, i32 0
store float %3, float* %arrayidx5, align 4
%WorldRayOrigin6 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx7 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin6, i32 0, i32 1
%4 = load float, float* %arrayidx7, align 4
%WorldRayOrigin8 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 3
%arrayidx9 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin8, i32 0, i32 1
store float %4, float* %arrayidx9, align 4
%WorldRayOrigin10 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
)AAA",
R"AAA(
%arrayidx11 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin10, i32 0, i32 2
%5 = load float, float* %arrayidx11, align 4
%WorldRayOrigin12 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 3
%arrayidx13 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin12, i32 0, i32 2
store float %5, float* %arrayidx13, align 4
%WorldRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx14 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection, i32 0, i32 0
%6 = load float, float* %arrayidx14, align 4
%WorldRayDirection15 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 4
%arrayidx16 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection15, i32 0, i32 0
store float %6, float* %arrayidx16, align 4
%WorldRayDirection17 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx18 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection17, i32 0, i32 1
%7 = load float, float* %arrayidx18, align 4
%WorldRayDirection19 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 4
%arrayidx20 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection19, i32 0, i32 1
store float %7, float* %arrayidx20, align 4
%WorldRayDirection21 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx22 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection21, i32 0, i32 2
%8 = load float, float* %arrayidx22, align 4
%WorldRayDirection23 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 4
%arrayidx24 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection23, i32 0, i32 2
store float %8, float* %arrayidx24, align 4
%ObjectRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx25 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin, i32 0, i32 0
%9 = load float, float* %arrayidx25, align 4
%ObjectRayOrigin26 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 5
%arrayidx27 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin26, i32 0, i32 0
store float %9, float* %arrayidx27, align 4
%ObjectRayOrigin28 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx29 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin28, i32 0, i32 1
%10 = load float, float* %arrayidx29, align 4
%ObjectRayOrigin30 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 5
%arrayidx31 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin30, i32 0, i32 1
store float %10, float* %arrayidx31, align 4
%ObjectRayOrigin32 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx33 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin32, i32 0, i32 2
%11 = load float, float* %arrayidx33, align 4
%ObjectRayOrigin34 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 5
%arrayidx35 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin34, i32 0, i32 2
store float %11, float* %arrayidx35, align 4
%ObjectRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx36 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection, i32 0, i32 0
%12 = load float, float* %arrayidx36, align 4
%ObjectRayDirection37 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 6
%arrayidx38 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection37, i32 0, i32 0
store float %12, float* %arrayidx38, align 4
%ObjectRayDirection39 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx40 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection39, i32 0, i32 1
%13 = load float, float* %arrayidx40, align 4
%ObjectRayDirection41 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 6
%arrayidx42 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection41, i32 0, i32 1
store float %13, float* %arrayidx42, align 4
%ObjectRayDirection43 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx44 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection43, i32 0, i32 2
%14 = load float, float* %arrayidx44, align 4
%ObjectRayDirection45 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 6
%arrayidx46 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection45, i32 0, i32 2
store float %14, float* %arrayidx46, align 4
%PrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 11
%15 = load i32, i32* %PrimitiveIndex, align 4
%PrimitiveIndex47 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 7
store i32 %15, i32* %PrimitiveIndex47, align 4
%InstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 12
%16 = load i32, i32* %InstanceIndex, align 4
%InstanceIndex48 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 8
store i32 %16, i32* %InstanceIndex48, align 4
%InstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 13
%17 = load i32, i32* %InstanceID, align 4
%InstanceID49 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 9
store i32 %17, i32* %InstanceID49, align 4
%HitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 14
%18 = load i32, i32* %HitKind, align 4
%HitKind50 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 10
store i32 %18, i32* %HitKind50, align 4
%ShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 15
%19 = load i32, i32* %ShaderRecordOffset, align 4
%ShaderRecordOffset51 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 11
store i32 %19, i32* %ShaderRecordOffset51, align 4
ret void
}
; Function Attrs: nounwind
define void @traceRayRestore_ClosestHit(%struct.RuntimeDataStruct* %runtimeData, %struct.TraceRaySpills_ClosestHit* %spills) #0 {
entry:
%RayFlags = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 2
%0 = load i32, i32* %RayFlags, align 4
%RayFlags1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 4
store i32 %0, i32* %RayFlags1, align 4
%RayTCurrent = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 1
%1 = load float, float* %RayTCurrent, align 4
%RayTCurrent2 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
store float %1, float* %RayTCurrent2, align 4
%RayTMin = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 0
%2 = load float, float* %RayTMin, align 4
%RayTMin3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 2
store float %2, float* %RayTMin3, align 4
%WorldRayOrigin = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 3
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin, i32 0, i32 0
%3 = load float, float* %arrayidx, align 4
%WorldRayOrigin4 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx5 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin4, i32 0, i32 0
store float %3, float* %arrayidx5, align 4
%WorldRayOrigin6 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 3
%arrayidx7 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin6, i32 0, i32 1
%4 = load float, float* %arrayidx7, align 4
%WorldRayOrigin8 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx9 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin8, i32 0, i32 1
store float %4, float* %arrayidx9, align 4
%WorldRayOrigin10 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 3
%arrayidx11 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin10, i32 0, i32 2
%5 = load float, float* %arrayidx11, align 4
%WorldRayOrigin12 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx13 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin12, i32 0, i32 2
store float %5, float* %arrayidx13, align 4
%WorldRayDirection = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 4
)AAA",
R"AAA(
%arrayidx14 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection, i32 0, i32 0
%6 = load float, float* %arrayidx14, align 4
%WorldRayDirection15 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx16 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection15, i32 0, i32 0
store float %6, float* %arrayidx16, align 4
%WorldRayDirection17 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 4
%arrayidx18 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection17, i32 0, i32 1
%7 = load float, float* %arrayidx18, align 4
%WorldRayDirection19 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx20 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection19, i32 0, i32 1
store float %7, float* %arrayidx20, align 4
%WorldRayDirection21 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 4
%arrayidx22 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection21, i32 0, i32 2
%8 = load float, float* %arrayidx22, align 4
%WorldRayDirection23 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx24 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection23, i32 0, i32 2
store float %8, float* %arrayidx24, align 4
%ObjectRayOrigin = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 5
%arrayidx25 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin, i32 0, i32 0
%9 = load float, float* %arrayidx25, align 4
%ObjectRayOrigin26 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx27 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin26, i32 0, i32 0
store float %9, float* %arrayidx27, align 4
%ObjectRayOrigin28 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 5
%arrayidx29 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin28, i32 0, i32 1
%10 = load float, float* %arrayidx29, align 4
%ObjectRayOrigin30 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx31 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin30, i32 0, i32 1
store float %10, float* %arrayidx31, align 4
%ObjectRayOrigin32 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 5
%arrayidx33 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin32, i32 0, i32 2
%11 = load float, float* %arrayidx33, align 4
%ObjectRayOrigin34 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx35 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin34, i32 0, i32 2
store float %11, float* %arrayidx35, align 4
%ObjectRayDirection = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 6
%arrayidx36 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection, i32 0, i32 0
%12 = load float, float* %arrayidx36, align 4
%ObjectRayDirection37 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx38 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection37, i32 0, i32 0
store float %12, float* %arrayidx38, align 4
%ObjectRayDirection39 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 6
%arrayidx40 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection39, i32 0, i32 1
%13 = load float, float* %arrayidx40, align 4
%ObjectRayDirection41 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx42 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection41, i32 0, i32 1
store float %13, float* %arrayidx42, align 4
%ObjectRayDirection43 = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 6
%arrayidx44 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection43, i32 0, i32 2
%14 = load float, float* %arrayidx44, align 4
%ObjectRayDirection45 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx46 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection45, i32 0, i32 2
store float %14, float* %arrayidx46, align 4
%PrimitiveIndex = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 7
%15 = load i32, i32* %PrimitiveIndex, align 4
%PrimitiveIndex47 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 11
store i32 %15, i32* %PrimitiveIndex47, align 4
%InstanceIndex = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 8
%16 = load i32, i32* %InstanceIndex, align 4
%InstanceIndex48 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 12
store i32 %16, i32* %InstanceIndex48, align 4
%InstanceID = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 9
%17 = load i32, i32* %InstanceID, align 4
%InstanceID49 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 13
store i32 %17, i32* %InstanceID49, align 4
%HitKind = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 10
%18 = load i32, i32* %HitKind, align 4
%HitKind50 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 14
store i32 %18, i32* %HitKind50, align 4
%ShaderRecordOffset = getelementptr inbounds %struct.TraceRaySpills_ClosestHit, %struct.TraceRaySpills_ClosestHit* %spills, i32 0, i32 11
%19 = load i32, i32* %ShaderRecordOffset, align 4
%ShaderRecordOffset51 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 15
store i32 %19, i32* %ShaderRecordOffset51, align 4
ret void
}
; Function Attrs: nounwind
define void @traceRaySave_Miss(%struct.RuntimeDataStruct* %runtimeData, %struct.TraceRaySpills_Miss* %spills) #0 {
entry:
%RayFlags = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 4
%0 = load i32, i32* %RayFlags, align 4
%RayFlags1 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 2
store i32 %0, i32* %RayFlags1, align 4
%RayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
%1 = load float, float* %RayTCurrent, align 4
%RayTCurrent2 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 1
store float %1, float* %RayTCurrent2, align 4
%RayTMin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 2
%2 = load float, float* %RayTMin, align 4
%RayTMin3 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 0
store float %2, float* %RayTMin3, align 4
%WorldRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin, i32 0, i32 0
%3 = load float, float* %arrayidx, align 4
%WorldRayOrigin4 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 3
%arrayidx5 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin4, i32 0, i32 0
store float %3, float* %arrayidx5, align 4
%WorldRayOrigin6 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx7 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin6, i32 0, i32 1
%4 = load float, float* %arrayidx7, align 4
%WorldRayOrigin8 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 3
%arrayidx9 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin8, i32 0, i32 1
store float %4, float* %arrayidx9, align 4
%WorldRayOrigin10 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx11 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin10, i32 0, i32 2
%5 = load float, float* %arrayidx11, align 4
%WorldRayOrigin12 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 3
%arrayidx13 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin12, i32 0, i32 2
store float %5, float* %arrayidx13, align 4
%WorldRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx14 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection, i32 0, i32 0
%6 = load float, float* %arrayidx14, align 4
%WorldRayDirection15 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 4
%arrayidx16 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection15, i32 0, i32 0
store float %6, float* %arrayidx16, align 4
%WorldRayDirection17 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx18 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection17, i32 0, i32 1
)AAA",
R"AAA(
%7 = load float, float* %arrayidx18, align 4
%WorldRayDirection19 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 4
%arrayidx20 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection19, i32 0, i32 1
store float %7, float* %arrayidx20, align 4
%WorldRayDirection21 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx22 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection21, i32 0, i32 2
%8 = load float, float* %arrayidx22, align 4
%WorldRayDirection23 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 4
%arrayidx24 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection23, i32 0, i32 2
store float %8, float* %arrayidx24, align 4
%ShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 15
%9 = load i32, i32* %ShaderRecordOffset, align 4
%ShaderRecordOffset25 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 5
store i32 %9, i32* %ShaderRecordOffset25, align 4
ret void
}
; Function Attrs: nounwind
define void @traceRayRestore_Miss(%struct.RuntimeDataStruct* %runtimeData, %struct.TraceRaySpills_Miss* %spills) #0 {
entry:
%RayFlags = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 2
%0 = load i32, i32* %RayFlags, align 4
%RayFlags1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 4
store i32 %0, i32* %RayFlags1, align 4
%RayTCurrent = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 1
%1 = load float, float* %RayTCurrent, align 4
%RayTCurrent2 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
store float %1, float* %RayTCurrent2, align 4
%RayTMin = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 0
%2 = load float, float* %RayTMin, align 4
%RayTMin3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 2
store float %2, float* %RayTMin3, align 4
%WorldRayOrigin = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 3
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin, i32 0, i32 0
%3 = load float, float* %arrayidx, align 4
%WorldRayOrigin4 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx5 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin4, i32 0, i32 0
store float %3, float* %arrayidx5, align 4
%WorldRayOrigin6 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 3
%arrayidx7 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin6, i32 0, i32 1
%4 = load float, float* %arrayidx7, align 4
%WorldRayOrigin8 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx9 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin8, i32 0, i32 1
store float %4, float* %arrayidx9, align 4
%WorldRayOrigin10 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 3
%arrayidx11 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin10, i32 0, i32 2
%5 = load float, float* %arrayidx11, align 4
%WorldRayOrigin12 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx13 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin12, i32 0, i32 2
store float %5, float* %arrayidx13, align 4
%WorldRayDirection = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 4
%arrayidx14 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection, i32 0, i32 0
%6 = load float, float* %arrayidx14, align 4
%WorldRayDirection15 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx16 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection15, i32 0, i32 0
store float %6, float* %arrayidx16, align 4
%WorldRayDirection17 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 4
%arrayidx18 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection17, i32 0, i32 1
%7 = load float, float* %arrayidx18, align 4
%WorldRayDirection19 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx20 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection19, i32 0, i32 1
store float %7, float* %arrayidx20, align 4
%WorldRayDirection21 = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 4
%arrayidx22 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection21, i32 0, i32 2
%8 = load float, float* %arrayidx22, align 4
%WorldRayDirection23 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx24 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection23, i32 0, i32 2
store float %8, float* %arrayidx24, align 4
%ShaderRecordOffset = getelementptr inbounds %struct.TraceRaySpills_Miss, %struct.TraceRaySpills_Miss* %spills, i32 0, i32 5
%9 = load i32, i32* %ShaderRecordOffset, align 4
%ShaderRecordOffset25 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 15
store i32 %9, i32* %ShaderRecordOffset25, align 4
ret void
}
; Function Attrs: nounwind
define void @fb_Fallback_Scheduler(i32 %initialStateId, i32 %dimx, i32 %dimy) #0 {
entry:
%theRuntimeData = alloca %struct.RuntimeDataStruct, align 4
%call = call [256 x i32]* @rewrite_createStack()
%call1 = call i8* @rewrite_setLaunchParams(%struct.RuntimeDataStruct* %theRuntimeData, i32 %dimx, i32 %dimy)
%DispatchRaysIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %theRuntimeData, i32 0, i32 0
%arrayidx = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysIndex, i32 0, i32 0
%0 = load i32, i32* %arrayidx, align 4
%DispatchRaysDimensions = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %theRuntimeData, i32 0, i32 1
%arrayidx2 = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysDimensions, i32 0, i32 0
%1 = load i32, i32* %arrayidx2, align 4
%cmp = icmp sge i32 %0, %1
br i1 %cmp, label %if.then, label %lor.lhs.false
lor.lhs.false: ; preds = %entry
%DispatchRaysIndex3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %theRuntimeData, i32 0, i32 0
%arrayidx4 = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysIndex3, i32 0, i32 1
%2 = load i32, i32* %arrayidx4, align 4
%DispatchRaysDimensions5 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %theRuntimeData, i32 0, i32 1
%arrayidx6 = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysDimensions5, i32 0, i32 1
%3 = load i32, i32* %arrayidx6, align 4
%cmp7 = icmp sge i32 %2, %3
br i1 %cmp7, label %if.then, label %if.end
if.then: ; preds = %lor.lhs.false, %entry
br label %while.end
if.end: ; preds = %lor.lhs.false
%call8 = call i32 @rewrite_getStackSize()
call void @stackInit(%struct.RuntimeDataStruct* %theRuntimeData, [256 x i32]* %call, i32 %call8)
%call9 = call i32 @stackFrameOffset(%struct.RuntimeDataStruct* %theRuntimeData)
%call10 = call i32* @stackIntPtr(%struct.RuntimeDataStruct* %theRuntimeData, i32 %call9, i32 0)
store i32 -1, i32* %call10, align 4
br label %while.cond
while.cond: ; preds = %while.body, %if.end
%stateId.0 = phi i32 [ %initialStateId, %if.end ], [ %call12, %while.body ]
%cmp11 = icmp sge i32 %stateId.0, 0
br i1 %cmp11, label %while.body, label %while.end
while.body: ; preds = %while.cond
%call12 = call i32 @rewrite_dispatch(%struct.RuntimeDataStruct* %theRuntimeData, i32 %stateId.0)
br label %while.cond
while.end: ; preds = %while.cond, %if.then
ret void
}
declare [256 x i32]* @rewrite_createStack() #1
declare i8* @rewrite_setLaunchParams(%struct.RuntimeDataStruct*, i32, i32) #1
declare i32 @rewrite_getStackSize() #1
declare i32 @rewrite_dispatch(%struct.RuntimeDataStruct*, i32) #1
; Function Attrs: nounwind
define void @fb_Fallback_SetLaunchParams(%struct.RuntimeDataStruct* %runtimeData, i32 %DTidx, i32 %DTidy, i32 %dimx, i32 %dimy, i32 %groupIndex) #0 {
entry:
%DispatchRaysIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 0
%arrayidx = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysIndex, i32 0, i32 0
store i32 %DTidx, i32* %arrayidx, align 4
%DispatchRaysIndex1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 0
%arrayidx2 = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysIndex1, i32 0, i32 1
store i32 %DTidy, i32* %arrayidx2, align 4
%DispatchRaysDimensions = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 1
%arrayidx3 = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysDimensions, i32 0, i32 0
store i32 %dimx, i32* %arrayidx3, align 4
%DispatchRaysDimensions4 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 1
%arrayidx5 = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysDimensions4, i32 0, i32 1
)AAA",
R"AAA(
store i32 %dimy, i32* %arrayidx5, align 4
%GroupIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 22
store i32 %groupIndex, i32* %GroupIndex, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_Fallback_TraceRayBegin(%struct.RuntimeDataStruct* %runtimeData, i32 %rayFlags, float %ox, float %oy, float %oz, float %tmin, float %dx, float %dy, float %dz, float %tmax, i32 %newPayloadOffset) #0 {
entry:
%RayFlags = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 4
store i32 %rayFlags, i32* %RayFlags, align 4
%WorldRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin, i32 0, i32 0
store float %ox, float* %arrayidx, align 4
%WorldRayOrigin1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx2 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin1, i32 0, i32 1
store float %oy, float* %arrayidx2, align 4
%WorldRayOrigin3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx4 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin3, i32 0, i32 2
store float %oz, float* %arrayidx4, align 4
%WorldRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx5 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection, i32 0, i32 0
store float %dx, float* %arrayidx5, align 4
%WorldRayDirection6 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx7 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection6, i32 0, i32 1
store float %dy, float* %arrayidx7, align 4
%WorldRayDirection8 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx9 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection8, i32 0, i32 2
store float %dz, float* %arrayidx9, align 4
%RayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
store float %tmax, float* %RayTCurrent, align 4
%RayTMin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 2
store float %tmin, float* %RayTMin, align 4
%PayloadOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 25
%0 = load i32, i32* %PayloadOffset, align 4
%PayloadOffset10 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 25
store i32 %newPayloadOffset, i32* %PayloadOffset10, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_TraceRayEnd(%struct.RuntimeDataStruct* %runtimeData, i32 %oldPayloadOffset) #0 {
entry:
%PayloadOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 25
store i32 %oldPayloadOffset, i32* %PayloadOffset, align 4
ret void
}
; Function Attrs: nounwind
define void @fb_Fallback_SetPendingTriVals(%struct.RuntimeDataStruct* %runtimeData, i32 %shaderRecordOffset, i32 %primitiveIndex, i32 %instanceIndex, i32 %instanceID, float %t, i32 %hitKind) #0 {
entry:
%PendingShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 21
store i32 %shaderRecordOffset, i32* %PendingShaderRecordOffset, align 4
%PendingPrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 17
store i32 %primitiveIndex, i32* %PendingPrimitiveIndex, align 4
%PendingInstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 18
store i32 %instanceIndex, i32* %PendingInstanceIndex, align 4
%PendingInstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 19
store i32 %instanceID, i32* %PendingInstanceID, align 4
%PendingRayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 16
store float %t, float* %PendingRayTCurrent, align 4
%PendingHitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 20
store i32 %hitKind, i32* %PendingHitKind, align 4
ret void
}
; Function Attrs: nounwind
define void @fb_Fallback_SetPendingCustomVals(%struct.RuntimeDataStruct* %runtimeData, i32 %shaderRecordOffset, i32 %primitiveIndex, i32 %instanceIndex, i32 %instanceID) #0 {
entry:
%PendingShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 21
store i32 %shaderRecordOffset, i32* %PendingShaderRecordOffset, align 4
%PendingPrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 17
store i32 %primitiveIndex, i32* %PendingPrimitiveIndex, align 4
%PendingInstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 18
store i32 %instanceIndex, i32* %PendingInstanceIndex, align 4
%PendingInstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 19
store i32 %instanceID, i32* %PendingInstanceID, align 4
ret void
}
; Function Attrs: nounwind
define void @fb_Fallback_CommitHit(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PendingRayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 16
%0 = load float, float* %PendingRayTCurrent, align 4
%RayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
store float %0, float* %RayTCurrent, align 4
%PendingShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 21
%1 = load i32, i32* %PendingShaderRecordOffset, align 4
%ShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 15
store i32 %1, i32* %ShaderRecordOffset, align 4
%PendingPrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 17
%2 = load i32, i32* %PendingPrimitiveIndex, align 4
%PrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 11
store i32 %2, i32* %PrimitiveIndex, align 4
%PendingInstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 18
%3 = load i32, i32* %PendingInstanceIndex, align 4
%InstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 12
store i32 %3, i32* %InstanceIndex, align 4
%PendingInstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 19
%4 = load i32, i32* %PendingInstanceID, align 4
%InstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 13
store i32 %4, i32* %InstanceID, align 4
%PendingHitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 20
%5 = load i32, i32* %PendingHitKind, align 4
%HitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 14
store i32 %5, i32* %HitKind, align 4
%PendingAttrOffset1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 27
%6 = load i32, i32* %PendingAttrOffset1, align 4
%CommittedAttrOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 26
%7 = load i32, i32* %CommittedAttrOffset, align 4
%PendingAttrOffset2 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 27
store i32 %7, i32* %PendingAttrOffset2, align 4
%CommittedAttrOffset3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 26
store i32 %6, i32* %CommittedAttrOffset3, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_Fallback_RuntimeDataLoadInt(%struct.RuntimeDataStruct* %runtimeData, i32 %offset) #0 {
entry:
%Stack = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 29
%0 = load [256 x i32]*, [256 x i32]** %Stack, align 4
%arrayidx = getelementptr inbounds [256 x i32], [256 x i32]* %0, i32 0, i32 %offset
%1 = load i32, i32* %arrayidx, align 4
ret i32 %1
}
; Function Attrs: nounwind
define void @fb_Fallback_RuntimeDataStoreInt(%struct.RuntimeDataStruct* %runtimeData, i32 %offset, i32 %val) #0 {
entry:
%Stack = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 29
%0 = load [256 x i32]*, [256 x i32]** %Stack, align 4
%arrayidx = getelementptr inbounds [256 x i32], [256 x i32]* %0, i32 0, i32 %offset
store i32 %val, i32* %arrayidx, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_dxop_dispatchRaysIndex(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%DispatchRaysIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 0
%arrayidx = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysIndex, i32 0, i32 %idxprom
%0 = load i32, i32* %arrayidx, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_dxop_dispatchRaysDimensions(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
)AAA",
R"AAA(
entry:
%idxprom = zext i8 %i to i32
%DispatchRaysDimensions = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 1
%arrayidx = getelementptr inbounds [2 x i32], [2 x i32]* %DispatchRaysDimensions, i32 0, i32 %idxprom
%0 = load i32, i32* %arrayidx, align 4
ret i32 %0
}
; Function Attrs: nounwind
define float @fb_dxop_rayTMin(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%RayTMin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 2
%0 = load float, float* %RayTMin, align 4
ret float %0
}
; Function Attrs: nounwind
define float @fb_Fallback_RayTMin(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%RayTMin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 2
%0 = load float, float* %RayTMin, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetRayTMin(%struct.RuntimeDataStruct* %runtimeData, float %t) #0 {
entry:
%RayTMin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 2
store float %t, float* %RayTMin, align 4
ret void
}
; Function Attrs: nounwind
define float @fb_dxop_rayTCurrent(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%RayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
%0 = load float, float* %RayTCurrent, align 4
ret float %0
}
; Function Attrs: nounwind
define float @fb_Fallback_RayTCurrent(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%RayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
%0 = load float, float* %RayTCurrent, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetRayTCurrent(%struct.RuntimeDataStruct* %runtimeData, float %t) #0 {
entry:
%RayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 3
store float %t, float* %RayTCurrent, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_dxop_rayFlags(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%RayFlags = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 4
%0 = load i32, i32* %RayFlags, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_Fallback_RayFlags(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%RayFlags = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 4
%0 = load i32, i32* %RayFlags, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetRayFlags(%struct.RuntimeDataStruct* %runtimeData, i32 %flags) #0 {
entry:
%RayFlags = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 4
store i32 %flags, i32* %RayFlags, align 4
ret void
}
; Function Attrs: nounwind
define float @fb_dxop_worldRayOrigin(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%WorldRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin, i32 0, i32 %idxprom
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define float @fb_Fallback_WorldRayOrigin(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%WorldRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin, i32 0, i32 %idxprom
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetWorldRayOrigin(%struct.RuntimeDataStruct* %runtimeData, float %x, float %y, float %z) #0 {
entry:
%WorldRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin, i32 0, i32 0
store float %x, float* %arrayidx, align 4
%WorldRayOrigin1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx2 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin1, i32 0, i32 1
store float %y, float* %arrayidx2, align 4
%WorldRayOrigin3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 5
%arrayidx4 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayOrigin3, i32 0, i32 2
store float %z, float* %arrayidx4, align 4
ret void
}
; Function Attrs: nounwind
define float @fb_dxop_worldRayDirection(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%WorldRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection, i32 0, i32 %idxprom
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define float @fb_Fallback_WorldRayDirection(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%WorldRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection, i32 0, i32 %idxprom
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetWorldRayDirection(%struct.RuntimeDataStruct* %runtimeData, float %x, float %y, float %z) #0 {
entry:
%WorldRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection, i32 0, i32 0
store float %x, float* %arrayidx, align 4
%WorldRayDirection1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx2 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection1, i32 0, i32 1
store float %y, float* %arrayidx2, align 4
%WorldRayDirection3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 6
%arrayidx4 = getelementptr inbounds [3 x float], [3 x float]* %WorldRayDirection3, i32 0, i32 2
store float %z, float* %arrayidx4, align 4
ret void
}
; Function Attrs: nounwind
define float @fb_dxop_objectRayOrigin(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%ObjectRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin, i32 0, i32 %idxprom
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define float @fb_Fallback_ObjectRayOrigin(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%ObjectRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin, i32 0, i32 %idxprom
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetObjectRayOrigin(%struct.RuntimeDataStruct* %runtimeData, float %x, float %y, float %z) #0 {
entry:
%ObjectRayOrigin = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin, i32 0, i32 0
store float %x, float* %arrayidx, align 4
%ObjectRayOrigin1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx2 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin1, i32 0, i32 1
store float %y, float* %arrayidx2, align 4
%ObjectRayOrigin3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 7
%arrayidx4 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayOrigin3, i32 0, i32 2
store float %z, float* %arrayidx4, align 4
ret void
}
; Function Attrs: nounwind
define float @fb_dxop_objectRayDirection(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%ObjectRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection, i32 0, i32 %idxprom
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define float @fb_Fallback_ObjectRayDirection(%struct.RuntimeDataStruct* %runtimeData, i8 zeroext %i) #0 {
entry:
%idxprom = zext i8 %i to i32
%ObjectRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection, i32 0, i32 %idxprom
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetObjectRayDirection(%struct.RuntimeDataStruct* %runtimeData, float %x, float %y, float %z) #0 {
entry:
%ObjectRayDirection = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection, i32 0, i32 0
store float %x, float* %arrayidx, align 4
%ObjectRayDirection1 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx2 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection1, i32 0, i32 1
)AAA",
R"AAA(
store float %y, float* %arrayidx2, align 4
%ObjectRayDirection3 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 8
%arrayidx4 = getelementptr inbounds [3 x float], [3 x float]* %ObjectRayDirection3, i32 0, i32 2
store float %z, float* %arrayidx4, align 4
ret void
}
; Function Attrs: nounwind
define float @fb_dxop_objectToWorld(%struct.RuntimeDataStruct* %runtimeData, i32 %r, i8 zeroext %c) #0 {
entry:
%mul = mul nsw i32 %r, 4
%conv = zext i8 %c to i32
%add = add nsw i32 %mul, %conv
%ObjectToWorld = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld, i32 0, i32 %add
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetObjectToWorld(%struct.RuntimeDataStruct* %runtimeData, <12 x float> %M) #0 {
entry:
%vecext = extractelement <12 x float> %M, i32 0
%ObjectToWorld = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld, i32 0, i32 0
store float %vecext, float* %arrayidx, align 4
%vecext1 = extractelement <12 x float> %M, i32 1
%ObjectToWorld2 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx3 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld2, i32 0, i32 1
store float %vecext1, float* %arrayidx3, align 4
%vecext4 = extractelement <12 x float> %M, i32 2
%ObjectToWorld5 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx6 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld5, i32 0, i32 2
store float %vecext4, float* %arrayidx6, align 4
%vecext7 = extractelement <12 x float> %M, i32 3
%ObjectToWorld8 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx9 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld8, i32 0, i32 3
store float %vecext7, float* %arrayidx9, align 4
%vecext10 = extractelement <12 x float> %M, i32 4
%ObjectToWorld11 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx12 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld11, i32 0, i32 4
store float %vecext10, float* %arrayidx12, align 4
%vecext13 = extractelement <12 x float> %M, i32 5
%ObjectToWorld14 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx15 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld14, i32 0, i32 5
store float %vecext13, float* %arrayidx15, align 4
%vecext16 = extractelement <12 x float> %M, i32 6
%ObjectToWorld17 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx18 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld17, i32 0, i32 6
store float %vecext16, float* %arrayidx18, align 4
%vecext19 = extractelement <12 x float> %M, i32 7
%ObjectToWorld20 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx21 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld20, i32 0, i32 7
store float %vecext19, float* %arrayidx21, align 4
%vecext22 = extractelement <12 x float> %M, i32 8
%ObjectToWorld23 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx24 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld23, i32 0, i32 8
store float %vecext22, float* %arrayidx24, align 4
%vecext25 = extractelement <12 x float> %M, i32 9
%ObjectToWorld26 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx27 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld26, i32 0, i32 9
store float %vecext25, float* %arrayidx27, align 4
%vecext28 = extractelement <12 x float> %M, i32 10
%ObjectToWorld29 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx30 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld29, i32 0, i32 10
store float %vecext28, float* %arrayidx30, align 4
%vecext31 = extractelement <12 x float> %M, i32 11
%ObjectToWorld32 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 9
%arrayidx33 = getelementptr inbounds [12 x float], [12 x float]* %ObjectToWorld32, i32 0, i32 11
store float %vecext31, float* %arrayidx33, align 4
ret void
}
; Function Attrs: nounwind
define float @fb_dxop_worldToObject(%struct.RuntimeDataStruct* %runtimeData, i32 %r, i8 zeroext %c) #0 {
entry:
%mul = mul nsw i32 %r, 4
%conv = zext i8 %c to i32
%add = add nsw i32 %mul, %conv
%WorldToObject = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject, i32 0, i32 %add
%0 = load float, float* %arrayidx, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetWorldToObject(%struct.RuntimeDataStruct* %runtimeData, <12 x float> %M) #0 {
entry:
%vecext = extractelement <12 x float> %M, i32 0
%WorldToObject = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject, i32 0, i32 0
store float %vecext, float* %arrayidx, align 4
%vecext1 = extractelement <12 x float> %M, i32 1
%WorldToObject2 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx3 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject2, i32 0, i32 1
store float %vecext1, float* %arrayidx3, align 4
%vecext4 = extractelement <12 x float> %M, i32 2
%WorldToObject5 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx6 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject5, i32 0, i32 2
store float %vecext4, float* %arrayidx6, align 4
%vecext7 = extractelement <12 x float> %M, i32 3
%WorldToObject8 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx9 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject8, i32 0, i32 3
store float %vecext7, float* %arrayidx9, align 4
%vecext10 = extractelement <12 x float> %M, i32 4
%WorldToObject11 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx12 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject11, i32 0, i32 4
store float %vecext10, float* %arrayidx12, align 4
%vecext13 = extractelement <12 x float> %M, i32 5
%WorldToObject14 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx15 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject14, i32 0, i32 5
store float %vecext13, float* %arrayidx15, align 4
%vecext16 = extractelement <12 x float> %M, i32 6
%WorldToObject17 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx18 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject17, i32 0, i32 6
store float %vecext16, float* %arrayidx18, align 4
%vecext19 = extractelement <12 x float> %M, i32 7
%WorldToObject20 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx21 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject20, i32 0, i32 7
store float %vecext19, float* %arrayidx21, align 4
%vecext22 = extractelement <12 x float> %M, i32 8
%WorldToObject23 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx24 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject23, i32 0, i32 8
store float %vecext22, float* %arrayidx24, align 4
%vecext25 = extractelement <12 x float> %M, i32 9
%WorldToObject26 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx27 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject26, i32 0, i32 9
store float %vecext25, float* %arrayidx27, align 4
%vecext28 = extractelement <12 x float> %M, i32 10
%WorldToObject29 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx30 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject29, i32 0, i32 10
store float %vecext28, float* %arrayidx30, align 4
%vecext31 = extractelement <12 x float> %M, i32 11
%WorldToObject32 = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 10
%arrayidx33 = getelementptr inbounds [12 x float], [12 x float]* %WorldToObject32, i32 0, i32 11
store float %vecext31, float* %arrayidx33, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_dxop_primitiveIndex(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 11
%0 = load i32, i32* %PrimitiveIndex, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_Fallback_PrimitiveIndex(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 11
%0 = load i32, i32* %PrimitiveIndex, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetPrimitiveIndex(%struct.RuntimeDataStruct* %runtimeData, i32 %i) #0 {
)AAA",
R"AAA(
entry:
%PrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 11
store i32 %i, i32* %PrimitiveIndex, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_Fallback_ShaderRecordOffset(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%ShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 15
%0 = load i32, i32* %ShaderRecordOffset, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetShaderRecordOffset(%struct.RuntimeDataStruct* %runtimeData, i32 %shaderRecordOffset) #0 {
entry:
%ShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 15
store i32 %shaderRecordOffset, i32* %ShaderRecordOffset, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_dxop_instanceIndex(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%InstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 12
%0 = load i32, i32* %InstanceIndex, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_Fallback_InstanceIndex(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%InstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 12
%0 = load i32, i32* %InstanceIndex, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetInstanceIndex(%struct.RuntimeDataStruct* %runtimeData, i32 %i) #0 {
entry:
%InstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 12
store i32 %i, i32* %InstanceIndex, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_dxop_instanceID(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%InstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 13
%0 = load i32, i32* %InstanceID, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_Fallback_InstanceID(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%InstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 13
%0 = load i32, i32* %InstanceID, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetInstanceID(%struct.RuntimeDataStruct* %runtimeData, i32 %i) #0 {
entry:
%InstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 13
store i32 %i, i32* %InstanceID, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_dxop_hitKind(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%HitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 14
%0 = load i32, i32* %HitKind, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_Fallback_HitKind(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%HitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 14
%0 = load i32, i32* %HitKind, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetHitKind(%struct.RuntimeDataStruct* %runtimeData, i32 %i) #0 {
entry:
%HitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 14
store i32 %i, i32* %HitKind, align 4
ret void
}
; Function Attrs: nounwind
define float @fb_dxop_pending_rayTCurrent(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PendingRayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 16
%0 = load float, float* %PendingRayTCurrent, align 4
ret float %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetPendingRayTCurrent(%struct.RuntimeDataStruct* %runtimeData, float %t) #0 {
entry:
%PendingRayTCurrent = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 16
store float %t, float* %PendingRayTCurrent, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_dxop_pending_primitiveID(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PendingPrimitiveIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 17
%0 = load i32, i32* %PendingPrimitiveIndex, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_Fallback_PendingShaderRecordOffset(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PendingShaderRecordOffset = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 21
%0 = load i32, i32* %PendingShaderRecordOffset, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_dxop_pending_instanceIndex(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PendingInstanceIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 18
%0 = load i32, i32* %PendingInstanceIndex, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_dxop_pending_instanceID(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PendingInstanceID = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 19
%0 = load i32, i32* %PendingInstanceID, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_dxop_pending_hitKind(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%PendingHitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 20
%0 = load i32, i32* %PendingHitKind, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetPendingHitKind(%struct.RuntimeDataStruct* %runtimeData, i32 %i) #0 {
entry:
%PendingHitKind = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 20
store i32 %i, i32* %PendingHitKind, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_Fallback_GroupIndex(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%GroupIndex = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 22
%0 = load i32, i32* %GroupIndex, align 4
ret i32 %0
}
; Function Attrs: nounwind
define i32 @fb_Fallback_AnyHitResult(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%AnyHitResult = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 23
%0 = load i32, i32* %AnyHitResult, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetAnyHitResult(%struct.RuntimeDataStruct* %runtimeData, i32 %result) #0 {
entry:
%AnyHitResult = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 23
store i32 %result, i32* %AnyHitResult, align 4
ret void
}
; Function Attrs: nounwind
define i32 @fb_Fallback_AnyHitStateId(%struct.RuntimeDataStruct* %runtimeData) #0 {
entry:
%AnyHitStateId = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 24
%0 = load i32, i32* %AnyHitStateId, align 4
ret i32 %0
}
; Function Attrs: nounwind
define void @fb_Fallback_SetAnyHitStateId(%struct.RuntimeDataStruct* %runtimeData, i32 %id) #0 {
entry:
%AnyHitStateId = getelementptr inbounds %struct.RuntimeDataStruct, %struct.RuntimeDataStruct* %runtimeData, i32 0, i32 24
store i32 %id, i32* %AnyHitStateId, align 4
ret void
}
attributes #0 = { nounwind }
attributes #1 = { nounwind }
)AAA"};
#include <sstream>
static std::string getRuntimeString() {
std::ostringstream out;
for (size_t i = 0; i < _countof(runtimeString); ++i)
out << runtimeString[i];
return out.str();
}