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