Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Note: shader requires additional functionality:
- ; 64 UAV slots
- ;
- ; shader hash: 4d2c2162c55b28f9b0d19035ae7f5503
- ; Compute Shader, compiled under SM6.5
- target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
- target triple = "dxil-ms-dx"
- %dx.types.Handle = type { i8* }
- %dx.types.CBufRet.f32 = type { float, float, float, float }
- %dx.types.ResRet.f32 = type { float, float, float, float, i32 }
- %dx.types.ResRet.i32 = type { i32, i32, i32, i32, i32 }
- %"class.RWStructuredBuffer<Ray>" = type { %struct.Ray }
- %struct.Ray = type { <4 x float>, <4 x float>, <4 x float> }
- %"class.RWTexture2D<vector<float, 4> >" = type { <4 x float> }
- %"class.RWStructuredBuffer<GeometryNode>" = type { %struct.GeometryNode }
- %struct.GeometryNode = type { <4 x float>, <4 x float>, i32, i32, i32, i32, i32, i32, i32, i32 }
- %"hostlayout.class.RWStructuredBuffer<InstanceNode>" = type { %hostlayout.struct.InstanceNode }
- %hostlayout.struct.InstanceNode = type { [4 x <4 x float>], [4 x <4 x float>], i32, i32, i32, i32 }
- %"class.RWStructuredBuffer<BVHNode>" = type { %struct.BVHNode }
- %struct.BVHNode = type { <4 x float>, <4 x float>, <4 x float>, i32, i32, i32, i32 }
- %"class.RWStructuredBuffer<MemoryNode>" = type { %struct.MemoryNode }
- %struct.MemoryNode = type { i32, i32, i32, i32 }
- %"class.RWStructuredBuffer<unsigned int>" = type { i32 }
- %"class.RWStructuredBuffer<vector<float, 4> >" = type { <4 x float> }
- %Params = type { <4 x float>, <4 x float>, <4 x float> }
- define void @RenderPass() {
- %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 8, i32 13, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 7, i32 12, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %3 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 6, i32 10, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %4 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 5, i32 9, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %5 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 4, i32 8, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %6 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 3, i32 7, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %7 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 2, i32 6, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %8 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 1, i32 1, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %9 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 0, i32 0, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %10 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false) ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
- %11 = call i32 @dx.op.threadId.i32(i32 93, i32 0) ; ThreadId(component)
- %12 = call i32 @dx.op.threadId.i32(i32 93, i32 1) ; ThreadId(component)
- %13 = alloca [64 x i32], align 4
- %14 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %10, i32 0) ; CBufferLoadLegacy(handle,regIndex)
- %15 = extractvalue %dx.types.CBufRet.f32 %14, 0
- %16 = bitcast float %15 to i32
- %17 = mul i32 %16, %12
- %18 = add i32 %17, %11
- %19 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %9, i32 %18, i32 0, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %20 = extractvalue %dx.types.ResRet.f32 %19, 0
- %21 = extractvalue %dx.types.ResRet.f32 %19, 1
- %22 = extractvalue %dx.types.ResRet.f32 %19, 2
- %23 = extractvalue %dx.types.ResRet.f32 %19, 3
- %24 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %9, i32 %18, i32 16, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %25 = extractvalue %dx.types.ResRet.f32 %24, 0
- %26 = extractvalue %dx.types.ResRet.f32 %24, 1
- %27 = extractvalue %dx.types.ResRet.f32 %24, 2
- %28 = extractvalue %dx.types.ResRet.f32 %24, 3
- %29 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %9, i32 %18, i32 32, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %30 = extractvalue %dx.types.ResRet.f32 %29, 0
- %31 = extractvalue %dx.types.ResRet.f32 %29, 1
- %32 = extractvalue %dx.types.ResRet.f32 %29, 2
- %33 = fmul fast float %30, %20
- %34 = fmul fast float %31, %21
- %35 = fmul fast float %32, %22
- %36 = getelementptr inbounds [64 x i32], [64 x i32]* %13, i32 0, i32 0
- store i32 -1, i32* %36, align 4, !tbaa !26
- %37 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %6, i32 0, i32 128, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %38 = extractvalue %dx.types.ResRet.i32 %37, 0
- br label %39
- ; <label>:39 ; preds = %221, %0
- %40 = phi float [ %33, %0 ], [ %222, %221 ]
- %41 = phi float [ %34, %0 ], [ %223, %221 ]
- %42 = phi float [ %35, %0 ], [ %224, %221 ]
- %43 = phi float [ %30, %0 ], [ %225, %221 ]
- %44 = phi float [ %31, %0 ], [ %226, %221 ]
- %45 = phi float [ %32, %0 ], [ %227, %221 ]
- %46 = phi float [ %25, %0 ], [ %228, %221 ]
- %47 = phi float [ %26, %0 ], [ %229, %221 ]
- %48 = phi float [ %27, %0 ], [ %230, %221 ]
- %49 = phi float [ %20, %0 ], [ %231, %221 ]
- %50 = phi float [ %21, %0 ], [ %232, %221 ]
- %51 = phi float [ %22, %0 ], [ %233, %221 ]
- %52 = phi i32 [ 0, %0 ], [ %234, %221 ]
- %53 = phi i32 [ 0, %0 ], [ %235, %221 ]
- %54 = phi i32 [ -1, %0 ], [ %236, %221 ]
- %55 = phi i32 [ %38, %0 ], [ %237, %221 ]
- %56 = phi float [ 1.000000e+040x40C3880000000000, %0 ], [ %238, %221 ]
- %57 = phi float [ 0.000000e+000x0, %0 ], [ %239, %221 ]
- %58 = phi float [ 0.000000e+000x0, %0 ], [ %240, %221 ]
- %59 = phi float [ 0.000000e+000x0, %0 ], [ %60, %221 ]
- %60 = fadd fast float %59, 1.000000e-030x3F50624DE0000000
- %61 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %5, i32 %52, i32 52, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %62 = extractvalue %dx.types.ResRet.i32 %61, 0
- %63 = icmp eq i32 %62, 0
- br i1 %63, label %64, label %161, !dx.controlflow.hints !30
- ; <label>:64 ; preds = %39
- %65 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %5, i32 %52, i32 0, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %66 = extractvalue %dx.types.ResRet.f32 %65, 0
- %67 = extractvalue %dx.types.ResRet.f32 %65, 1
- %68 = extractvalue %dx.types.ResRet.f32 %65, 2
- %69 = extractvalue %dx.types.ResRet.f32 %65, 3
- %70 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %5, i32 %52, i32 16, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %71 = extractvalue %dx.types.ResRet.f32 %70, 0
- %72 = extractvalue %dx.types.ResRet.f32 %70, 1
- %73 = extractvalue %dx.types.ResRet.f32 %70, 2
- %74 = extractvalue %dx.types.ResRet.f32 %70, 3
- %75 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %5, i32 %52, i32 32, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %76 = extractvalue %dx.types.ResRet.f32 %75, 0
- %77 = extractvalue %dx.types.ResRet.f32 %75, 1
- %78 = extractvalue %dx.types.ResRet.f32 %75, 2
- %79 = extractvalue %dx.types.ResRet.f32 %75, 3
- %80 = fmul fast float %66, %43
- %81 = fsub fast float %80, %40
- %82 = fmul fast float %67, %43
- %83 = fsub fast float %82, %40
- %84 = fmul fast float %68, %44
- %85 = fsub fast float %84, %41
- %86 = fmul fast float %69, %44
- %87 = fsub fast float %86, %41
- %88 = fmul fast float %76, %45
- %89 = fsub fast float %88, %42
- %90 = fmul fast float %77, %45
- %91 = fsub fast float %90, %42
- %92 = fmul fast float %78, %45
- %93 = fsub fast float %92, %42
- %94 = fmul fast float %79, %45
- %95 = fsub fast float %94, %42
- %96 = call float @dx.op.binary.f32(i32 36, float %89, float %91) ; FMin(a,b)
- %97 = call float @dx.op.binary.f32(i32 35, float %96, float 0.000000e+000x0) ; FMax(a,b)
- %98 = call float @dx.op.binary.f32(i32 36, float %85, float %87) ; FMin(a,b)
- %99 = call float @dx.op.binary.f32(i32 36, float %81, float %83) ; FMin(a,b)
- %100 = call float @dx.op.binary.f32(i32 35, float %99, float %98) ; FMax(a,b)
- %101 = call float @dx.op.binary.f32(i32 35, float %100, float %97) ; FMax(a,b)
- %102 = call float @dx.op.binary.f32(i32 35, float %89, float %91) ; FMax(a,b)
- %103 = call float @dx.op.binary.f32(i32 36, float %102, float %56) ; FMin(a,b)
- %104 = call float @dx.op.binary.f32(i32 35, float %85, float %87) ; FMax(a,b)
- %105 = call float @dx.op.binary.f32(i32 35, float %81, float %83) ; FMax(a,b)
- %106 = call float @dx.op.binary.f32(i32 36, float %105, float %104) ; FMin(a,b)
- %107 = call float @dx.op.binary.f32(i32 36, float %106, float %103) ; FMin(a,b)
- %108 = fmul fast float %71, %43
- %109 = fsub fast float %108, %40
- %110 = fmul fast float %72, %43
- %111 = fsub fast float %110, %40
- %112 = fmul fast float %73, %44
- %113 = fsub fast float %112, %41
- %114 = fmul fast float %74, %44
- %115 = fsub fast float %114, %41
- %116 = call float @dx.op.binary.f32(i32 36, float %93, float %95) ; FMin(a,b)
- %117 = call float @dx.op.binary.f32(i32 35, float %116, float 0.000000e+000x0) ; FMax(a,b)
- %118 = call float @dx.op.binary.f32(i32 36, float %113, float %115) ; FMin(a,b)
- %119 = call float @dx.op.binary.f32(i32 36, float %109, float %111) ; FMin(a,b)
- %120 = call float @dx.op.binary.f32(i32 35, float %119, float %118) ; FMax(a,b)
- %121 = call float @dx.op.binary.f32(i32 35, float %120, float %117) ; FMax(a,b)
- %122 = call float @dx.op.binary.f32(i32 35, float %93, float %95) ; FMax(a,b)
- %123 = call float @dx.op.binary.f32(i32 36, float %122, float %56) ; FMin(a,b)
- %124 = call float @dx.op.binary.f32(i32 35, float %113, float %115) ; FMax(a,b)
- %125 = call float @dx.op.binary.f32(i32 35, float %109, float %111) ; FMax(a,b)
- %126 = call float @dx.op.binary.f32(i32 36, float %125, float %124) ; FMin(a,b)
- %127 = call float @dx.op.binary.f32(i32 36, float %126, float %123) ; FMin(a,b)
- %128 = fcmp fast oge float %107, %101
- %129 = fcmp fast oge float %127, %121
- %130 = or i1 %128, %129
- br i1 %130, label %149, label %131
- ; <label>:131 ; preds = %64
- %132 = icmp eq i32 %53, %54
- %133 = select i1 %132, float %33, float %40
- %134 = select i1 %132, float %34, float %41
- %135 = select i1 %132, float %35, float %42
- %136 = select i1 %132, float %30, float %43
- %137 = select i1 %132, float %31, float %44
- %138 = select i1 %132, float %32, float %45
- %139 = select i1 %132, float %25, float %46
- %140 = select i1 %132, float %26, float %47
- %141 = select i1 %132, float %27, float %48
- %142 = select i1 %132, float %20, float %49
- %143 = select i1 %132, float %21, float %50
- %144 = select i1 %132, float %22, float %51
- %145 = select i1 %132, i32 -1, i32 %54
- %146 = getelementptr inbounds [64 x i32], [64 x i32]* %13, i32 0, i32 %53
- %147 = load i32, i32* %146, align 4, !tbaa !26
- %148 = add i32 %53, -1
- br label %221
- ; <label>:149 ; preds = %64
- %150 = add i32 %52, 1
- %151 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %5, i32 %52, i32 48, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %152 = extractvalue %dx.types.ResRet.i32 %151, 0
- %153 = select i1 %128, i32 %150, i32 %152
- %154 = and i1 %128, %129
- br i1 %154, label %155, label %221
- ; <label>:155 ; preds = %149
- %156 = fcmp fast olt float %121, %101
- %157 = add i32 %53, 1
- %158 = getelementptr inbounds [64 x i32], [64 x i32]* %13, i32 0, i32 %157
- br i1 %156, label %159, label %160
- ; <label>:159 ; preds = %155
- store i32 %150, i32* %158, align 4, !tbaa !26
- br label %221
- ; <label>:160 ; preds = %155
- store i32 %152, i32* %158, align 4, !tbaa !26
- br label %221
- ; <label>:161 ; preds = %39
- %162 = icmp eq i32 %62, -1
- br i1 %162, label %163, label %242
- ; <label>:163 ; preds = %161
- %164 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %5, i32 %52, i32 48, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %165 = extractvalue %dx.types.ResRet.i32 %164, 0
- %166 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %3, i32 %165, i32 0, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %167 = extractvalue %dx.types.ResRet.i32 %166, 0
- %168 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %6, i32 %167, i32 64, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %169 = extractvalue %dx.types.ResRet.f32 %168, 0
- %170 = extractvalue %dx.types.ResRet.f32 %168, 1
- %171 = extractvalue %dx.types.ResRet.f32 %168, 2
- %172 = extractvalue %dx.types.ResRet.f32 %168, 3
- %173 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %6, i32 %167, i32 80, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %174 = extractvalue %dx.types.ResRet.f32 %173, 0
- %175 = extractvalue %dx.types.ResRet.f32 %173, 1
- %176 = extractvalue %dx.types.ResRet.f32 %173, 2
- %177 = extractvalue %dx.types.ResRet.f32 %173, 3
- %178 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %6, i32 %167, i32 96, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %179 = extractvalue %dx.types.ResRet.f32 %178, 0
- %180 = extractvalue %dx.types.ResRet.f32 %178, 1
- %181 = extractvalue %dx.types.ResRet.f32 %178, 2
- %182 = extractvalue %dx.types.ResRet.f32 %178, 3
- %183 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %6, i32 %167, i32 128, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %184 = extractvalue %dx.types.ResRet.i32 %183, 0
- %185 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %7, i32 %184, i32 40, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %186 = extractvalue %dx.types.ResRet.i32 %185, 0
- %187 = add i32 %186, 1
- %188 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %4, i32 %187, i32 8, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %189 = extractvalue %dx.types.ResRet.i32 %188, 0
- %190 = lshr i32 %189, 6
- %191 = fmul fast float %169, %20
- %192 = call float @dx.op.tertiary.f32(i32 46, float %21, float %170, float %191) ; FMad(a,b,c)
- %193 = call float @dx.op.tertiary.f32(i32 46, float %22, float %171, float %192) ; FMad(a,b,c)
- %194 = call float @dx.op.tertiary.f32(i32 46, float %23, float %172, float %193) ; FMad(a,b,c)
- %195 = fmul fast float %174, %20
- %196 = call float @dx.op.tertiary.f32(i32 46, float %21, float %175, float %195) ; FMad(a,b,c)
- %197 = call float @dx.op.tertiary.f32(i32 46, float %22, float %176, float %196) ; FMad(a,b,c)
- %198 = call float @dx.op.tertiary.f32(i32 46, float %23, float %177, float %197) ; FMad(a,b,c)
- %199 = fmul fast float %179, %20
- %200 = call float @dx.op.tertiary.f32(i32 46, float %21, float %180, float %199) ; FMad(a,b,c)
- %201 = call float @dx.op.tertiary.f32(i32 46, float %22, float %181, float %200) ; FMad(a,b,c)
- %202 = call float @dx.op.tertiary.f32(i32 46, float %23, float %182, float %201) ; FMad(a,b,c)
- %203 = fmul fast float %169, %25
- %204 = call float @dx.op.tertiary.f32(i32 46, float %26, float %170, float %203) ; FMad(a,b,c)
- %205 = call float @dx.op.tertiary.f32(i32 46, float %27, float %171, float %204) ; FMad(a,b,c)
- %206 = call float @dx.op.tertiary.f32(i32 46, float %28, float %172, float %205) ; FMad(a,b,c)
- %207 = fmul fast float %174, %25
- %208 = call float @dx.op.tertiary.f32(i32 46, float %26, float %175, float %207) ; FMad(a,b,c)
- %209 = call float @dx.op.tertiary.f32(i32 46, float %27, float %176, float %208) ; FMad(a,b,c)
- %210 = call float @dx.op.tertiary.f32(i32 46, float %28, float %177, float %209) ; FMad(a,b,c)
- %211 = fmul fast float %179, %25
- %212 = call float @dx.op.tertiary.f32(i32 46, float %26, float %180, float %211) ; FMad(a,b,c)
- %213 = call float @dx.op.tertiary.f32(i32 46, float %27, float %181, float %212) ; FMad(a,b,c)
- %214 = call float @dx.op.tertiary.f32(i32 46, float %28, float %182, float %213) ; FMad(a,b,c)
- %215 = fdiv fast float 1.000000e+000x3FF0000000000000, %206
- %216 = fdiv fast float 1.000000e+000x3FF0000000000000, %210
- %217 = fdiv fast float 1.000000e+000x3FF0000000000000, %214
- %218 = fmul fast float %215, %194
- %219 = fmul fast float %216, %198
- %220 = fmul fast float %217, %202
- br label %221
- ; <label>:221 ; preds = %345, %163, %160, %159, %149, %131
- %222 = phi float [ %40, %159 ], [ %40, %160 ], [ %40, %149 ], [ %133, %131 ], [ %218, %163 ], [ %350, %345 ]
- %223 = phi float [ %41, %159 ], [ %41, %160 ], [ %41, %149 ], [ %134, %131 ], [ %219, %163 ], [ %351, %345 ]
- %224 = phi float [ %42, %159 ], [ %42, %160 ], [ %42, %149 ], [ %135, %131 ], [ %220, %163 ], [ %352, %345 ]
- %225 = phi float [ %43, %159 ], [ %43, %160 ], [ %43, %149 ], [ %136, %131 ], [ %215, %163 ], [ %353, %345 ]
- %226 = phi float [ %44, %159 ], [ %44, %160 ], [ %44, %149 ], [ %137, %131 ], [ %216, %163 ], [ %354, %345 ]
- %227 = phi float [ %45, %159 ], [ %45, %160 ], [ %45, %149 ], [ %138, %131 ], [ %217, %163 ], [ %355, %345 ]
- %228 = phi float [ %46, %159 ], [ %46, %160 ], [ %46, %149 ], [ %139, %131 ], [ %206, %163 ], [ %356, %345 ]
- %229 = phi float [ %47, %159 ], [ %47, %160 ], [ %47, %149 ], [ %140, %131 ], [ %210, %163 ], [ %357, %345 ]
- %230 = phi float [ %48, %159 ], [ %48, %160 ], [ %48, %149 ], [ %141, %131 ], [ %214, %163 ], [ %358, %345 ]
- %231 = phi float [ %49, %159 ], [ %49, %160 ], [ %49, %149 ], [ %142, %131 ], [ %194, %163 ], [ %359, %345 ]
- %232 = phi float [ %50, %159 ], [ %50, %160 ], [ %50, %149 ], [ %143, %131 ], [ %198, %163 ], [ %360, %345 ]
- %233 = phi float [ %51, %159 ], [ %51, %160 ], [ %51, %149 ], [ %144, %131 ], [ %202, %163 ], [ %361, %345 ]
- %234 = phi i32 [ %152, %159 ], [ %153, %160 ], [ %153, %149 ], [ %147, %131 ], [ %190, %163 ], [ %364, %345 ]
- %235 = phi i32 [ %157, %159 ], [ %157, %160 ], [ %53, %149 ], [ %148, %131 ], [ %53, %163 ], [ %365, %345 ]
- %236 = phi i32 [ %54, %159 ], [ %54, %160 ], [ %54, %149 ], [ %145, %131 ], [ %53, %163 ], [ %362, %345 ]
- %237 = phi i32 [ %55, %159 ], [ %55, %160 ], [ %55, %149 ], [ %55, %131 ], [ %184, %163 ], [ %55, %345 ]
- %238 = phi float [ %56, %159 ], [ %56, %160 ], [ %56, %149 ], [ %56, %131 ], [ %56, %163 ], [ %346, %345 ]
- %239 = phi float [ %57, %159 ], [ %57, %160 ], [ %57, %149 ], [ %57, %131 ], [ %57, %163 ], [ %347, %345 ]
- %240 = phi float [ %58, %159 ], [ %58, %160 ], [ %58, %149 ], [ %58, %131 ], [ %58, %163 ], [ %348, %345 ]
- %241 = icmp eq i32 %234, -1
- br i1 %241, label %366, label %39
- ; <label>:242 ; preds = %161
- %243 = icmp sgt i32 %62, 0
- br i1 %243, label %244, label %345
- ; <label>:244 ; preds = %242
- %245 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %7, i32 %55, i32 48, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %246 = extractvalue %dx.types.ResRet.i32 %245, 0
- %247 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %1, i32 %246, i32 8, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %248 = extractvalue %dx.types.ResRet.i32 %247, 0
- br label %249
- ; <label>:249 ; preds = %339, %244
- %250 = phi float [ %56, %244 ], [ %340, %339 ]
- %251 = phi float [ %57, %244 ], [ %341, %339 ]
- %252 = phi float [ %58, %244 ], [ %342, %339 ]
- %253 = phi i32 [ 0, %244 ], [ %343, %339 ]
- %254 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %5, i32 %52, i32 52, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %255 = extractvalue %dx.types.ResRet.i32 %254, 0
- %256 = icmp ult i32 %253, %255
- br i1 %256, label %257, label %344
- ; <label>:257 ; preds = %249
- %258 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %5, i32 %52, i32 48, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %259 = extractvalue %dx.types.ResRet.i32 %258, 0
- %260 = add i32 %259, %253
- %261 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %3, i32 %260, i32 0, i8 1, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %262 = extractvalue %dx.types.ResRet.i32 %261, 0
- %263 = mul i32 %262, 3
- %264 = lshr i32 %248, 4
- %265 = add i32 %263, %264
- %266 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %2, i32 %265, i32 0, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %267 = extractvalue %dx.types.ResRet.f32 %266, 0
- %268 = extractvalue %dx.types.ResRet.f32 %266, 1
- %269 = extractvalue %dx.types.ResRet.f32 %266, 2
- %270 = extractvalue %dx.types.ResRet.f32 %266, 3
- %271 = add nuw nsw i32 %264, 1
- %272 = add i32 %271, %263
- %273 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %2, i32 %272, i32 0, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %274 = extractvalue %dx.types.ResRet.f32 %273, 0
- %275 = extractvalue %dx.types.ResRet.f32 %273, 1
- %276 = extractvalue %dx.types.ResRet.f32 %273, 2
- %277 = add nuw nsw i32 %264, 2
- %278 = add i32 %277, %263
- %279 = call %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32 139, %dx.types.Handle %2, i32 %278, i32 0, i8 15, i32 4) ; RawBufferLoad(srv,index,elementOffset,mask,alignment)
- %280 = extractvalue %dx.types.ResRet.f32 %279, 0
- %281 = extractvalue %dx.types.ResRet.f32 %279, 1
- %282 = extractvalue %dx.types.ResRet.f32 %279, 2
- %283 = extractvalue %dx.types.ResRet.f32 %279, 3
- %284 = fmul fast float %267, %49
- %285 = fsub fast float %270, %284
- %286 = fmul fast float %268, %50
- %287 = fsub fast float %285, %286
- %288 = fmul fast float %269, %51
- %289 = fsub fast float %287, %288
- %290 = fmul fast float %267, %46
- %291 = fmul fast float %268, %47
- %292 = fadd fast float %290, %291
- %293 = fmul fast float %269, %48
- %294 = fadd fast float %292, %293
- %295 = fdiv fast float 1.000000e+000x3FF0000000000000, %294
- %296 = fmul fast float %295, %289
- %297 = fcmp fast ogt float %296, 0.000000e+000x0
- %298 = fcmp fast olt float %296, %250
- %299 = and i1 %297, %298
- br i1 %299, label %300, label %339
- ; <label>:300 ; preds = %257
- %301 = extractvalue %dx.types.ResRet.f32 %273, 3
- %302 = fmul fast float %274, %49
- %303 = fadd fast float %302, %301
- %304 = fmul fast float %275, %50
- %305 = fadd fast float %303, %304
- %306 = fmul fast float %276, %51
- %307 = fadd fast float %305, %306
- %308 = fmul fast float %274, %46
- %309 = fmul fast float %275, %47
- %310 = fadd fast float %308, %309
- %311 = fmul fast float %276, %48
- %312 = fadd fast float %310, %311
- %313 = fmul fast float %296, %312
- %314 = fadd fast float %307, %313
- %315 = fcmp fast oge float %314, 0.000000e+000x0
- %316 = fcmp fast ole float %314, 1.000000e+000x3FF0000000000000
- %317 = and i1 %315, %316
- br i1 %317, label %318, label %339
- ; <label>:318 ; preds = %300
- %319 = fmul fast float %280, %49
- %320 = fadd fast float %319, %283
- %321 = fmul fast float %281, %50
- %322 = fadd fast float %320, %321
- %323 = fmul fast float %282, %51
- %324 = fadd fast float %322, %323
- %325 = fmul fast float %280, %46
- %326 = fmul fast float %281, %47
- %327 = fadd fast float %325, %326
- %328 = fmul fast float %282, %48
- %329 = fadd fast float %327, %328
- %330 = fmul fast float %329, %296
- %331 = fadd fast float %324, %330
- %332 = fcmp fast oge float %331, 0.000000e+000x0
- %333 = fadd fast float %331, %314
- %334 = fcmp fast ole float %333, 1.000000e+000x3FF0000000000000
- %335 = and i1 %332, %334
- %336 = select i1 %335, float %296, float %250
- %337 = select i1 %335, float %314, float %251
- %338 = select i1 %335, float %331, float %252
- br label %339
- ; <label>:339 ; preds = %318, %300, %257
- %340 = phi float [ %250, %300 ], [ %250, %257 ], [ %336, %318 ]
- %341 = phi float [ %251, %300 ], [ %251, %257 ], [ %337, %318 ]
- %342 = phi float [ %252, %300 ], [ %252, %257 ], [ %338, %318 ]
- %343 = add i32 %253, 1
- br label %249
- ; <label>:344 ; preds = %249
- br label %345
- ; <label>:345 ; preds = %344, %242
- %346 = phi float [ %56, %242 ], [ %250, %344 ]
- %347 = phi float [ %57, %242 ], [ %251, %344 ]
- %348 = phi float [ %58, %242 ], [ %252, %344 ]
- %349 = icmp eq i32 %53, %54
- %350 = select i1 %349, float %33, float %40
- %351 = select i1 %349, float %34, float %41
- %352 = select i1 %349, float %35, float %42
- %353 = select i1 %349, float %30, float %43
- %354 = select i1 %349, float %31, float %44
- %355 = select i1 %349, float %32, float %45
- %356 = select i1 %349, float %25, float %46
- %357 = select i1 %349, float %26, float %47
- %358 = select i1 %349, float %27, float %48
- %359 = select i1 %349, float %20, float %49
- %360 = select i1 %349, float %21, float %50
- %361 = select i1 %349, float %22, float %51
- %362 = select i1 %349, i32 -1, i32 %54
- %363 = getelementptr inbounds [64 x i32], [64 x i32]* %13, i32 0, i32 %53
- %364 = load i32, i32* %363, align 4, !tbaa !26
- %365 = add i32 %53, -1
- br label %221
- ; <label>:366 ; preds = %221
- call void @dx.op.textureStore.f32(i32 67, %dx.types.Handle %8, i32 %11, i32 %12, i32 undef, float %239, float %240, float %60, float 1.000000e+000x3FF0000000000000, i8 15) ; TextureStore(srv,coord0,coord1,coord2,value0,value1,value2,value3,mask)
- ret void
- }
- ; Function Attrs: nounwind readnone
- declare i32 @dx.op.threadId.i32(i32, i32) #0
- ; Function Attrs: nounwind readonly
- declare %dx.types.ResRet.f32 @dx.op.rawBufferLoad.f32(i32, %dx.types.Handle, i32, i32, i8, i32) #1
- ; Function Attrs: nounwind readonly
- declare %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32, %dx.types.Handle, i32, i32, i8, i32) #1
- ; Function Attrs: nounwind readnone
- declare float @dx.op.binary.f32(i32, float, float) #0
- ; Function Attrs: nounwind
- declare void @dx.op.textureStore.f32(i32, %dx.types.Handle, i32, i32, i32, float, float, float, float, i8) #2
- ; Function Attrs: nounwind readonly
- declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #1
- ; Function Attrs: nounwind readnone
- declare float @dx.op.tertiary.f32(i32, float, float, float) #0
- ; Function Attrs: nounwind readonly
- declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #1
- attributes #0 = { nounwind readnone }
- attributes #1 = { nounwind readonly }
- attributes #2 = { nounwind }
- !llvm.ident = !{!0}
- !dx.version = !{!1}
- !dx.valver = !{!2}
- !dx.shaderModel = !{!3}
- !dx.resources = !{!4}
- !dx.entryPoints = !{!23}
- !0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"}
- !1 = !{i32 1, i32 5}
- !2 = !{i32 1, i32 7}
- !3 = !{!"cs", i32 6, i32 5}
- !4 = !{null, !5, !21, null}
- !5 = !{!6, !8, !10, !12, !14, !15, !17, !19, !20}
- !6 = !{i32 0, %"class.RWStructuredBuffer<Ray>"* undef, !"", i32 0, i32 0, i32 1, i32 12, i1 false, i1 false, i1 false, !7}
- !7 = !{i32 1, i32 48}
- !8 = !{i32 1, %"class.RWTexture2D<vector<float, 4> >"* undef, !"", i32 0, i32 1, i32 1, i32 2, i1 false, i1 false, i1 false, !9}
- !9 = !{i32 0, i32 9}
- !10 = !{i32 2, %"class.RWStructuredBuffer<GeometryNode>"* undef, !"", i32 0, i32 6, i32 1, i32 12, i1 false, i1 false, i1 false, !11}
- !11 = !{i32 1, i32 64}
- !12 = !{i32 3, %"hostlayout.class.RWStructuredBuffer<InstanceNode>"* undef, !"", i32 0, i32 7, i32 1, i32 12, i1 false, i1 false, i1 false, !13}
- !13 = !{i32 1, i32 144}
- !14 = !{i32 4, %"class.RWStructuredBuffer<BVHNode>"* undef, !"", i32 0, i32 8, i32 1, i32 12, i1 false, i1 false, i1 false, !11}
- !15 = !{i32 5, %"class.RWStructuredBuffer<MemoryNode>"* undef, !"", i32 0, i32 9, i32 1, i32 12, i1 false, i1 false, i1 false, !16}
- !16 = !{i32 1, i32 16}
- !17 = !{i32 6, %"class.RWStructuredBuffer<unsigned int>"* undef, !"", i32 0, i32 10, i32 1, i32 12, i1 false, i1 false, i1 false, !18}
- !18 = !{i32 1, i32 4}
- !19 = !{i32 7, %"class.RWStructuredBuffer<vector<float, 4> >"* undef, !"", i32 0, i32 12, i32 1, i32 12, i1 false, i1 false, i1 false, !16}
- !20 = !{i32 8, %"class.RWStructuredBuffer<MemoryNode>"* undef, !"", i32 0, i32 13, i32 1, i32 12, i1 false, i1 false, i1 false, !16}
- !21 = !{!22}
- !22 = !{i32 0, %Params* undef, !"", i32 0, i32 0, i32 1, i32 48, null}
- !23 = !{void ()* @RenderPass, !"RenderPass", null, !4, !24}
- !24 = !{i32 0, i64 32784, i32 4, !25}
- !25 = !{i32 32, i32 32, i32 1}
- !26 = !{!27, !27, i64 0}
- !27 = !{!"int", !28, i64 0}
- !28 = !{!"omnipotent char", !29, i64 0}
- !29 = !{!"Simple C/C++ TBAA"}
- !30 = distinct !{!30, !"dx.controlflow.hints", i32 1}
Add Comment
Please, Sign In to add comment