Revision: 1109
Author:
jo...@lunarg.com
Date: Thu Aug 20 01:05:24 2015 UTC
Log: Full stack: add and turn on many new GLSL built-ins, including
bit*/fma/imageatomic*/*exp/others, and adding imageSize to the LLVM
intrinsics.
https://code.google.com/p/lunarglass/source/detail?r=1109
Modified:
/trunk/Backends/GLSL/BottomToGLSL.cpp
/trunk/Core/LLVM/llvm-3.4/include/llvm/IR/IntrinsicsLunarGLASSTop.td
/trunk/Core/LunarGLASSTopIR.h
/trunk/Core/TopBuilder.cpp
/trunk/Core/TopBuilder.h
/trunk/Frontends/glslang/GlslangToTopVisitor.cpp
/trunk/test/aep.vert
/trunk/test/baseResults/aep.vert.out
=======================================
--- /trunk/Backends/GLSL/BottomToGLSL.cpp Wed Aug 5 20:31:54 2015 UTC
+++ /trunk/Backends/GLSL/BottomToGLSL.cpp Thu Aug 20 01:05:24 2015 UTC
@@ -3008,6 +3008,14 @@
out << ");";
return;
+ case llvm::Intrinsic::gla_queryImageSize:
+ newLine();
+ emitGlaValue(out, llvmInstruction, 0);
+ out << " = imageSize(";
+ emitGlaOperand(out,
llvmInstruction->getOperand(GetTextureOpIndex(ETOSamplerLoc)));
+ out << ");";
+ return;
+
case llvm::Intrinsic::gla_fQueryTextureLod:
newLine();
@@ -3039,9 +3047,9 @@
assignment << ", ";
emitGlaOperand(assignment,
llvmInstruction->getOperand(GetTextureOpIndex(ETOCoord)));
- if (! load) {
+ for (int op = GetTextureOpIndex(ETOCoord) + 1; op <
(int)llvmInstruction->getNumOperands() - 1; ++op) {
assignment << ", ";
- emitGlaOperand(assignment,
llvmInstruction->getOperand(GetTextureOpIndex(ETOImageData)));
+ emitGlaOperand(assignment, llvmInstruction->getOperand(op));
}
if (needConversion)
@@ -3480,8 +3488,8 @@
case llvm::Intrinsic::gla_uFindMSB: callString
= "findMSB"; break;
// Pack and Unpack
- //case llvm::Intrinsic::gla_fFrexp: callString
= "frexp"; break;
- //case llvm::Intrinsic::gla_fLdexp: callString
= "ldexp"; break;
+ case llvm::Intrinsic::gla_fFrexp: callString
= "frexp"; break;
+ case llvm::Intrinsic::gla_fLdexp: callString
= "ldexp"; break;
case llvm::Intrinsic::gla_fPackUnorm2x16: callString
= "packUnorm2x16"; break;
case llvm::Intrinsic::gla_fUnpackUnorm2x16: callString
= "unpackUnorm2x16"; break;
=======================================
--- /trunk/Core/LLVM/llvm-3.4/include/llvm/IR/IntrinsicsLunarGLASSTop.td
Fri Jul 24 20:27:07 2015 UTC
+++ /trunk/Core/LLVM/llvm-3.4/include/llvm/IR/IntrinsicsLunarGLASSTop.td
Thu Aug 20 01:05:24 2015 UTC
@@ -215,11 +215,12 @@
// Images
let TargetPrefix = "gla" in {
- def int_gla_imageLoad : Intrinsic<[llvm_anyint_ty], [llvm_i32_ty,
llvm_i32_ty, llvm_i32_ty, llvm_anyint_ty], [IntrReadArgMem]>;
- def int_gla_fImageLoad: Intrinsic<[llvm_anyfloat_ty], [llvm_i32_ty,
llvm_i32_ty, llvm_i32_ty, llvm_anyint_ty], [IntrReadArgMem]>;
- def int_gla_imageStoreI: Intrinsic<[], [llvm_i32_ty, llvm_i32_ty,
llvm_i32_ty, llvm_anyint_ty, llvm_v4i32_ty], [IntrReadWriteArgMem]>;
- def int_gla_imageStoreF: Intrinsic<[], [llvm_i32_ty, llvm_i32_ty,
llvm_i32_ty, llvm_anyint_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
- def int_gla_imageOp: Intrinsic<[llvm_i32_ty], [llvm_i32_ty,
llvm_i32_ty, llvm_i32_ty, llvm_anyint_ty, llvm_i32_ty],
[IntrReadWriteArgMem]>;
+ def int_gla_imageLoad : Intrinsic<[llvm_anyint_ty], [llvm_i32_ty,
llvm_i32_ty, llvm_i32_ty, llvm_anyint_ty], [IntrReadArgMem]>;
+ def int_gla_fImageLoad: Intrinsic<[llvm_anyfloat_ty], [llvm_i32_ty,
llvm_i32_ty, llvm_i32_ty, llvm_anyint_ty], [IntrReadArgMem]>;
+ def int_gla_imageStoreI: Intrinsic<[], [llvm_i32_ty, llvm_i32_ty,
llvm_i32_ty, llvm_anyint_ty, llvm_v4i32_ty], [IntrReadWriteArgMem]>;
+ def int_gla_imageStoreF: Intrinsic<[], [llvm_i32_ty, llvm_i32_ty,
llvm_i32_ty, llvm_anyint_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
+ def int_gla_imageOp: Intrinsic<[llvm_i32_ty], [llvm_i32_ty,
llvm_i32_ty, llvm_i32_ty, llvm_anyint_ty, llvm_i32_ty],
[IntrReadWriteArgMem]>;
+ def int_gla_queryImageSize: Intrinsic<[llvm_anyint_ty], [llvm_i32_ty,
llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
}
// Geometry
=======================================
--- /trunk/Core/LunarGLASSTopIR.h Mon May 25 23:01:59 2015 UTC
+++ /trunk/Core/LunarGLASSTopIR.h Thu Aug 20 01:05:24 2015 UTC
@@ -106,7 +106,6 @@
ETODPdx = 7,
ETODPdy = 8,
};
- static const ETextureOperand ETOImageData = (ETextureOperand)4;
inline int GetTextureOpIndex(ETextureOperand operand, bool SoA =
false, int numComps = 0, int comp = 0)
{
=======================================
--- /trunk/Core/TopBuilder.cpp Wed Aug 5 20:31:54 2015 UTC
+++ /trunk/Core/TopBuilder.cpp Thu Aug 20 01:05:24 2015 UTC
@@ -1936,12 +1936,11 @@
name = name ? name : "image";
// Max args based on LunarGLASS TopIR, no SOA
- static const int maxArgs = 5;
+ static const int maxArgs = 6;
llvm::Value* imageArgs[maxArgs] = {};
// Base case: First arguments are fixed
int numArgs = 4;
- const int dataArg = 4;
imageArgs[GetTextureOpIndex(ETOSamplerType)] =
MakeIntConstant(context, samplerType);
imageArgs[GetTextureOpIndex(ETOSamplerLoc)] = parameters.ETPSampler;
imageArgs[GetTextureOpIndex(ETOFlag)] =
MakeUnsignedConstant(context, *(int*)&texFlags);
@@ -1950,6 +1949,24 @@
// Add the data argument if needed, and select which intrinsic to call.
llvm::Intrinsic::ID intrinsicID = llvm::Intrinsic::not_intrinsic;
switch ((texFlags & ETFImageOp) >> ImageOpShift) {
+ case EImageAtomicAdd:
+ case EImageAtomicMin:
+ case EImageAtomicMax:
+ case EImageAtomicAnd:
+ case EImageAtomicOr:
+ case EImageAtomicXor:
+ case EImageAtomicExchange:
+ intrinsicID = llvm::Intrinsic::gla_imageOp;
+ imageArgs[numArgs] = parameters.ETPData;
+ ++numArgs;
+ break;
+ case EImageAtomicCompSwap:
+ intrinsicID = llvm::Intrinsic::gla_imageOp;
+ imageArgs[numArgs] = parameters.ETPCompare;
+ ++numArgs;
+ imageArgs[numArgs] = parameters.ETPData;
+ ++numArgs;
+ break;
case EImageLoad:
if (gla::GetBasicType(resultType)->isFloatTy())
intrinsicID = llvm::Intrinsic::gla_fImageLoad;
@@ -1961,11 +1978,11 @@
intrinsicID = llvm::Intrinsic::gla_imageStoreF;
else
intrinsicID = llvm::Intrinsic::gla_imageStoreI;
- imageArgs[dataArg] = parameters.ETPData;
+ imageArgs[numArgs] = parameters.ETPData;
++numArgs;
break;
default:
- intrinsicID = llvm::Intrinsic::gla_imageOp;
+ // caught by upcoming assert
break;
}
@@ -1989,7 +2006,7 @@
break;
default:
- // caught be upcoming assert
+ // caught by upcoming assert
break;
}
@@ -2013,6 +2030,7 @@
llvm::Function* intrinsicName = 0;
switch (intrinsicID) {
+ case llvm::Intrinsic::gla_queryImageSize:
case llvm::Intrinsic::gla_queryTextureSize:
intrinsicName = getIntrinsic(intrinsicID, returnType);
break;
=======================================
--- /trunk/Core/TopBuilder.h Wed Aug 5 20:31:54 2015 UTC
+++ /trunk/Core/TopBuilder.h Thu Aug 20 01:05:24 2015 UTC
@@ -374,6 +374,7 @@
llvm::Value* ETPSampler;
llvm::Value* ETPDimensions;
llvm::Value* ETPData; // for image*() data argument
+ llvm::Value* ETPCompare; // for image*() comparison argument
};
// Select the correct intrinsic based on all inputs, and make the call
=======================================
--- /trunk/Frontends/glslang/GlslangToTopVisitor.cpp Wed Aug 19 19:49:03
2015 UTC
+++ /trunk/Frontends/glslang/GlslangToTopVisitor.cpp Thu Aug 20 01:05:24
2015 UTC
@@ -1735,10 +1735,12 @@
case glslang::EOpTextureQuerySize:
case glslang::EOpImageQuerySize:
{
- llvm::Value* lastArg;
+ llvm::Value* lastArg = nullptr;
llvm::Intrinsic::ID intrinsicID;
- if (samplerType == gla::ESampler2DMS || samplerType ==
gla::ESamplerBuffer || samplerType == gla::ESampler2DRect) {
+ if (node->getOp() == glslang::EOpImageQuerySize) {
+ intrinsicID = llvm::Intrinsic::gla_queryImageSize;
+ } else if (samplerType == gla::ESampler2DMS || samplerType ==
gla::ESamplerBuffer || samplerType == gla::ESampler2DRect) {
lastArg = 0;
intrinsicID = llvm::Intrinsic::gla_queryTextureSizeNoLod;
} else {
@@ -1797,8 +1799,13 @@
texFlags |= (imageOp << gla::ImageOpShift);
- if (imageOp != gla::EImageLoad)
- params.ETPData = arguments[2];
+ if (imageOp != gla::EImageLoad) {
+ if (imageOp == gla::EImageAtomicCompSwap) {
+ params.ETPCompare = arguments[2];
+ params.ETPData = arguments[3];
+ } else
+ params.ETPData = arguments[2];
+ }
return glaBuilder->createImageCall(GetMdPrecision(node->getType()),
convertGlslangToGlaType(node->getType()), samplerType, texFlags, params,
leftName);
}
@@ -2475,6 +2482,18 @@
case glslang::EOpAtomicCounter:
intrinsicID = llvm::Intrinsic::gla_atomicCounterLoad;
break;
+ case glslang::EOpBitFieldReverse:
+ intrinsicID = llvm::Intrinsic::gla_bitReverse;
+ break;
+ case glslang::EOpBitCount:
+ intrinsicID = llvm::Intrinsic::gla_bitCount;
+ break;
+ case glslang::EOpFindLSB:
+ intrinsicID = llvm::Intrinsic::gla_findLSB;
+ break;
+ case glslang::EOpFindMSB:
+ intrinsicID = llvm::Intrinsic::gla_sFindMSB;
+ break;
default:
break;
@@ -2531,6 +2550,42 @@
break;
}
break;
+ case glslang::EOpFma:
+ if (gla::GetBasicTypeID(operands.front()) == llvm::Type::FloatTyID)
+ intrinsicID = llvm::Intrinsic::gla_fFma;
+ else if (isUnsigned)
+ intrinsicID = llvm::Intrinsic::gla_uFma;
+ else
+ intrinsicID = llvm::Intrinsic::gla_sFma;
+ break;
+ case glslang::EOpFrexp:
+ intrinsicID = llvm::Intrinsic::gla_fFrexp;
+ break;
+ case glslang::EOpLdexp:
+ intrinsicID = llvm::Intrinsic::gla_fLdexp;
+ break;
+ case glslang::EOpAddCarry:
+ intrinsicID = llvm::Intrinsic::gla_addCarry;
+ break;
+ case glslang::EOpSubBorrow:
+ intrinsicID = llvm::Intrinsic::gla_subBorrow;
+ break;
+ case glslang::EOpUMulExtended:
+ intrinsicID = llvm::Intrinsic::gla_umulExtended;
+ break;
+ case glslang::EOpIMulExtended:
+ intrinsicID = llvm::Intrinsic::gla_smulExtended;
+ break;
+ case glslang::EOpBitfieldExtract:
+ if (isUnsigned)
+ intrinsicID = llvm::Intrinsic::gla_uBitFieldExtract;
+ else
+ intrinsicID = llvm::Intrinsic::gla_sBitFieldExtract;
+ break;
+ case glslang::EOpBitfieldInsert:
+ intrinsicID = llvm::Intrinsic::gla_bitFieldInsert;
+ break;
+
case glslang::EOpAtan:
intrinsicID = llvm::Intrinsic::gla_fAtan2;
break;
=======================================
--- /trunk/test/aep.vert Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/aep.vert Thu Aug 20 01:05:24 2015 UTC
@@ -2,19 +2,19 @@
#extension GL_ANDROID_extension_pack_es31a : enable
-// - GL_OES_shader_image_atomic
+// + GL_OES_shader_image_atomic
// + GL_OES_texture_storage_multisample_2d_array
-// - GL_EXT_gpu_shader5
+// + GL_EXT_gpu_shader5
// + GL_EXT_shader_io_blocks
-// - GL_EXT_texture_buffer
-// - GL_EXT_texture_cube_map_array
+// + GL_EXT_texture_buffer
+// + GL_EXT_texture_cube_map_array
uniform sampler2D sArray[4];
uniform ubName { vec2 p; } ubInst[4];
uniform writeonly image2D iArray[5];
uniform int index;
-const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3),
ivec2(0.4));
+const ivec2 constOffsets[4] = ivec2[4](ivec2(1), ivec2(2), ivec2(3),
ivec2(4));
in vec2 inf, ing, inch;
@@ -30,11 +30,11 @@
void main()
{
// GL_EXT_gpu_shader5
- //- precise vec2 p = fma(inf, ing, inch);
+ precise vec2 p = fma(inf, ing, inch);
iArray[index];
vec4 color = vec4(0.0);
- //- color += textureGatherOffset(sArray[index], ubInst[index].p,
ivec2(inf));
- //- color += textureGatherOffsets(sArray[index], p, constOffsets);
+ color += textureGatherOffset(sArray[index], ubInst[index].p,
ivec2(inf));
+ color += textureGatherOffsets(sArray[index], p, constOffsets);
outInst.color = color;
outInst.color += bufferT();
outInst.color += CAT();
@@ -42,7 +42,7 @@
goodImageAtom();
}
-// - GL_EXT_texture_buffer
+// + GL_EXT_texture_buffer
uniform highp samplerBuffer bufSamp1;
uniform highp isamplerBuffer bufSamp2;
@@ -63,7 +63,7 @@
s1 = textureSize(bufSamp3);
v *= vec4(s1);
- s1 = imageSize(bufSamp4); // - image -> texture
+ s1 = imageSize(bufSamp4);
v *= vec4(s1);
s1 = imageSize(bufSamp5);
v *= vec4(s1);
@@ -77,7 +77,7 @@
return v;
}
-// - GL_OES_texture_cube_map_array
+// + GL_OES_texture_cube_map_array
uniform highp writeonly imageCubeArray CA1;
uniform highp writeonly iimageCubeArray CA2;
@@ -95,9 +95,9 @@
iv += textureSize(CA6, 1);
iv += textureSize(CA7, 1);
- //iv += imageSize(CA1); // - extra argument, intermit. segfault
- //iv += imageSize(CA2);
- //iv += imageSize(CA3);
+ iv += imageSize(CA1);
+ iv += imageSize(CA2);
+ iv += imageSize(CA3);
vec4 v = vec4(iv, 1.0);
v *= texture(CA4, vec4(0.5));
@@ -146,7 +146,7 @@
return v;
}
-// - GL_OES_shader_image_atomic
+// + GL_OES_shader_image_atomic
uniform layout(r32f) highp image2D im2Df;
uniform layout(r32ui) highp uimage2D im2Du;
@@ -155,25 +155,25 @@
void goodImageAtom()
{
- float datf;
- int dati;
- uint datu;
+ float datf = 1.8;
+ int dati = 4;
+ uint datu = 7u;
-// - imageAtomicAdd( im2Di, P, dati);
-// imageAtomicAdd( im2Du, P, datu);
-// imageAtomicMin( im2Di, P, dati);
-// imageAtomicMin( im2Du, P, datu);
-// imageAtomicMax( im2Di, P, dati);
-// imageAtomicMax( im2Du, P, datu);
-// imageAtomicAnd( im2Di, P, dati);
-// imageAtomicAnd( im2Du, P, datu);
-// imageAtomicOr( im2Di, P, dati);
-// imageAtomicOr( im2Du, P, datu);
-// imageAtomicXor( im2Di, P, dati);
-// imageAtomicXor( im2Du, P, datu);
-// imageAtomicExchange(im2Di, P, dati);
-// imageAtomicExchange(im2Du, P, datu);
-// imageAtomicExchange(im2Df, P, datf);
-// imageAtomicCompSwap(im2Di, P, 3, dati);
-// imageAtomicCompSwap(im2Du, P, 5u, datu);
+ imageAtomicAdd( im2Di, P, P.x);
+ imageAtomicAdd( im2Du, P, datu);
+ imageAtomicMin( im2Di, P, dati);
+ imageAtomicMin( im2Du, P, datu);
+ imageAtomicMax( im2Di, P, dati);
+ imageAtomicMax( im2Du, P, datu);
+ imageAtomicAnd( im2Di, P, dati);
+ imageAtomicAnd( im2Du, P, datu);
+ imageAtomicOr( im2Di, P, dati);
+ imageAtomicOr( im2Du, P, datu);
+ imageAtomicXor( im2Di, P, dati);
+ imageAtomicXor( im2Du, P, datu);
+ imageAtomicExchange(im2Di, P, dati);
+ imageAtomicExchange(im2Du, P, datu);
+ imageAtomicExchange(im2Df, P, datf);
+ imageAtomicCompSwap(im2Di, P, 3, dati);
+ imageAtomicCompSwap(im2Du, P, 5u, datu);
}
=======================================
--- /trunk/test/baseResults/aep.vert.out Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/baseResults/aep.vert.out Thu Aug 20 01:05:24 2015 UTC
@@ -2,11 +2,17 @@
Top IR:
; ModuleID = 'Glslang'
-%outName = type { <4 x float> }
%ubName = type { <2 x float> }
+%outName = type { <4 x float> }
+@inf = global <2 x float> zeroinitializer
+@ing = global <2 x float> zeroinitializer
+@inch = global <2 x float> zeroinitializer
@iArray = external addrspace(1) constant [5 x i32]
@index = external addrspace(2) constant i32
+@sArray = external addrspace(1) constant [4 x i32]
+@ubInst = external addrspace(2) constant [4 x %ubName]
+@color = internal constant [4 x <2 x i32>] [<2 x i32> <i32 1, i32 1>, <2 x
i32> <i32 2, i32 2>, <2 x i32> <i32 3, i32 3>, <2 x i32> <i32 4, i32 4>]
@outInst = global %outName zeroinitializer
@bufSamp1 = external addrspace(1) constant i32
@bufSamp2 = external addrspace(1) constant i32
@@ -18,21 +24,16 @@
@CA5 = external addrspace(1) constant i32
@CA6 = external addrspace(1) constant i32
@CA7 = external addrspace(1) constant i32
-@samp2DMSA = external addrspace(1) constant i32
-@samp2DMSAi = external addrspace(1) constant i32
-@samp2DMSAu = external addrspace(1) constant i32
-@sArray = external addrspace(1) constant [4 x i32]
-@ubInst = external addrspace(2) constant [4 x %ubName]
-@inf = global <2 x float> zeroinitializer
-@ing = global <2 x float> zeroinitializer
-@inch = global <2 x float> zeroinitializer
@CA1 = external addrspace(1) constant i32
@CA2 = external addrspace(1) constant i32
@CA3 = external addrspace(1) constant i32
-@im2Df = external addrspace(1) constant i32
-@im2Du = external addrspace(1) constant i32
+@samp2DMSA = external addrspace(1) constant i32
+@samp2DMSAi = external addrspace(1) constant i32
+@samp2DMSAu = external addrspace(1) constant i32
@im2Di = external addrspace(1) constant i32
@P = external addrspace(2) constant <2 x i32>
+@im2Du = external addrspace(1) constant i32
+@im2Df = external addrspace(1) constant i32
@gl_VertexID = global i32 0
@gl_InstanceID = global i32 0
@@ -40,25 +41,56 @@
entry:
%constOffsets = alloca [4 x <2 x i32>]
%color = alloca <4 x float>
+ %p = alloca <2 x float>
br label %mainBody
mainBody: ; preds = %entry
- %0 = load i32 addrspace(2)* @index, !gla.uniform !4
+ %0 = load <2 x float>* @inf
+ %1 = load <2 x float>* @ing
+ %2 = load <2 x float>* @inch
+ %p2 = call <2 x float> @llvm.gla.fFma.v2f32.v2f32.v2f32.v2f32(<2 x
float> %0, <2 x float> %1, <2 x float> %2), !gla.precision !85
+ store <2 x float> %p2, <2 x float>* %p
+ %3 = load i32 addrspace(2)* @index, !gla.uniform !14
store <4 x float> zeroinitializer, <4 x float>* %color
- %1 = load <4 x float>* %color
- store <4 x float> %1, <4 x float>* getelementptr inbounds (%outName*
@outInst, i32 0, i32 0)
- %2 = call <4 x float> @"bufferT("()
- %3 = load <4 x float>* getelementptr inbounds (%outName* @outInst, i32
0, i32 0)
- %4 = fadd <4 x float> %3, %2, !gla.precision !85
- store <4 x float> %4, <4 x float>* getelementptr inbounds (%outName*
@outInst, i32 0, i32 0)
- %5 = call <4 x float> @"CAT("()
- %6 = load <4 x float>* getelementptr inbounds (%outName* @outInst, i32
0, i32 0)
- %7 = fadd <4 x float> %6, %5, !gla.precision !85
- store <4 x float> %7, <4 x float>* getelementptr inbounds (%outName*
@outInst, i32 0, i32 0)
- %8 = call <4 x float> @"MSA("()
- %9 = load <4 x float>* getelementptr inbounds (%outName* @outInst, i32
0, i32 0)
- %10 = fadd <4 x float> %9, %8, !gla.precision !85
- store <4 x float> %10, <4 x float>* getelementptr inbounds (%outName*
@outInst, i32 0, i32 0)
+ %4 = load i32 addrspace(2)* @index, !gla.uniform !14
+ %5 = getelementptr [4 x i32] addrspace(1)* @sArray, i32 0, i32 %4
+ %6 = load i32 addrspace(1)* %5, !gla.uniform !16
+ %7 = load i32 addrspace(2)* @index, !gla.uniform !14
+ %8 = getelementptr [4 x %ubName] addrspace(2)* @ubInst, i32 0, i32 %7,
i32 0
+ %9 = load <2 x float> addrspace(2)* %8, !gla.uniform !19
+ %10 = load <2 x float>* @inf
+ %11 = fptosi <2 x float> %10 to <2 x i32>, !gla.precision !85
+ %color3 = call <4 x float> @llvm.gla.fTexelGatherOffset.v4f32.v2f32(i32
2, i32 %6, i32 320, <2 x float> %9, i32 undef, float undef, <2 x
i32> %11), !gla.precision !85
+ %12 = load <4 x float>* %color
+ %color4 = fadd <4 x float> %12, %color3, !gla.precision !85
+ store <4 x float> %color4, <4 x float>* %color
+ %13 = load i32 addrspace(2)* @index, !gla.uniform !14
+ %14 = getelementptr [4 x i32] addrspace(1)* @sArray, i32 0, i32 %13
+ %15 = load i32 addrspace(1)* %14, !gla.uniform !16
+ %16 = load <2 x float>* %p
+ %17 = load [4 x <2 x i32>]* @color
+ %18 = extractvalue [4 x <2 x i32>] %17, 0
+ %19 = extractvalue [4 x <2 x i32>] %17, 1
+ %20 = extractvalue [4 x <2 x i32>] %17, 2
+ %21 = extractvalue [4 x <2 x i32>] %17, 3
+ %color5 = call <4 x float> @llvm.gla.fTexelGatherOffsets.v4f32.v2f32(i32
2, i32 %15, i32 8512, <2 x float> %16, i32 undef, float undef, <2 x
i32> %18, <2 x i32> %19, <2 x i32> %20, <2 x i32> %21), !gla.precision !85
+ %22 = load <4 x float>* %color
+ %color6 = fadd <4 x float> %22, %color5, !gla.precision !85
+ store <4 x float> %color6, <4 x float>* %color
+ %23 = load <4 x float>* %color
+ store <4 x float> %23, <4 x float>* getelementptr inbounds (%outName*
@outInst, i32 0, i32 0)
+ %24 = call <4 x float> @"bufferT("()
+ %25 = load <4 x float>* getelementptr inbounds (%outName* @outInst, i32
0, i32 0)
+ %26 = fadd <4 x float> %25, %24, !gla.precision !85
+ store <4 x float> %26, <4 x float>* getelementptr inbounds (%outName*
@outInst, i32 0, i32 0)
+ %27 = call <4 x float> @"CAT("()
+ %28 = load <4 x float>* getelementptr inbounds (%outName* @outInst, i32
0, i32 0)
+ %29 = fadd <4 x float> %28, %27, !gla.precision !85
+ store <4 x float> %29, <4 x float>* getelementptr inbounds (%outName*
@outInst, i32 0, i32 0)
+ %30 = call <4 x float> @"MSA("()
+ %31 = load <4 x float>* getelementptr inbounds (%outName* @outInst, i32
0, i32 0)
+ %32 = fadd <4 x float> %31, %30, !gla.precision !85
+ store <4 x float> %32, <4 x float>* getelementptr inbounds (%outName*
@outInst, i32 0, i32 0)
call void @"goodImageAtom("()
br label %stage-epilogue
@@ -81,7 +113,7 @@
%s1 = alloca i32
%v = alloca <4 x float>
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float
1.000000e+00, float 1.000000e+00>, <4 x float>* %v
- %0 = load i32 addrspace(1)* @bufSamp1, !gla.uniform !6
+ %0 = load i32 addrspace(1)* @bufSamp1, !gla.uniform !23
%s12 = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %0), !gla.precision !85
store i32 %s12, i32* %s1
%1 = load i32* %s1
@@ -94,7 +126,7 @@
%8 = load <4 x float>* %v
%v4 = fmul <4 x float> %8, %7, !gla.precision !85
store <4 x float> %v4, <4 x float>* %v
- %9 = load i32 addrspace(1)* @bufSamp2, !gla.uniform !9
+ %9 = load i32 addrspace(1)* @bufSamp2, !gla.uniform !26
%s16 = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %9), !gla.precision !85
store i32 %s16, i32* %s1
%10 = load i32* %s1
@@ -107,7 +139,7 @@
%17 = load <4 x float>* %v
%v8 = fmul <4 x float> %17, %16, !gla.precision !85
store <4 x float> %v8, <4 x float>* %v
- %18 = load i32 addrspace(1)* @bufSamp3, !gla.uniform !12
+ %18 = load i32 addrspace(1)* @bufSamp3, !gla.uniform !29
%s110 = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %18), !gla.precision !85
store i32 %s110, i32* %s1
%19 = load i32* %s1
@@ -120,8 +152,8 @@
%26 = load <4 x float>* %v
%v12 = fmul <4 x float> %26, %25, !gla.precision !85
store <4 x float> %v12, <4 x float>* %v
- %27 = load i32 addrspace(1)* @bufSamp4, !gla.uniform !15
- %s114 = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %27), !gla.precision !85
+ %27 = load i32 addrspace(1)* @bufSamp4, !gla.uniform !32
+ %s114 = call i32 @llvm.gla.queryImageSize.i32(i32 0,
i32 %27), !gla.precision !85
store i32 %s114, i32* %s1
%28 = load i32* %s1
%29 = sitofp i32 %28 to float, !gla.precision !85
@@ -133,8 +165,8 @@
%35 = load <4 x float>* %v
%v16 = fmul <4 x float> %35, %34, !gla.precision !85
store <4 x float> %v16, <4 x float>* %v
- %36 = load i32 addrspace(1)* @bufSamp5, !gla.uniform !18
- %s118 = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %36), !gla.precision !85
+ %36 = load i32 addrspace(1)* @bufSamp5, !gla.uniform !35
+ %s118 = call i32 @llvm.gla.queryImageSize.i32(i32 0,
i32 %36), !gla.precision !85
store i32 %s118, i32* %s1
%37 = load i32* %s1
%38 = sitofp i32 %37 to float, !gla.precision !85
@@ -146,8 +178,8 @@
%44 = load <4 x float>* %v
%v20 = fmul <4 x float> %44, %43, !gla.precision !85
store <4 x float> %v20, <4 x float>* %v
- %45 = load i32 addrspace(1)* @bufSamp6, !gla.uniform !21
- %s122 = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %45), !gla.precision !85
+ %45 = load i32 addrspace(1)* @bufSamp6, !gla.uniform !38
+ %s122 = call i32 @llvm.gla.queryImageSize.i32(i32 0,
i32 %45), !gla.precision !85
store i32 %s122, i32* %s1
%46 = load i32* %s1
%47 = sitofp i32 %46 to float, !gla.precision !85
@@ -159,20 +191,20 @@
%53 = load <4 x float>* %v
%v24 = fmul <4 x float> %53, %52, !gla.precision !85
store <4 x float> %v24, <4 x float>* %v
- %54 = load i32 addrspace(1)* @bufSamp1, !gla.uniform !6
+ %54 = load i32 addrspace(1)* @bufSamp1, !gla.uniform !23
%55 = load i32* %s1
%v25 = call <4 x float>
@llvm.gla.fTexelFetchOffset.v4f32.i32.i32.i32(i32 0, i32 %54, i32 32,
i32 %55, i32 undef, float undef, i32 undef), !gla.precision !85
%56 = load <4 x float>* %v
%v26 = fmul <4 x float> %56, %v25, !gla.precision !85
store <4 x float> %v26, <4 x float>* %v
- %57 = load i32 addrspace(1)* @bufSamp2, !gla.uniform !9
+ %57 = load i32 addrspace(1)* @bufSamp2, !gla.uniform !26
%58 = load i32* %s1
%v27 = call <4 x i32> @llvm.gla.texelFetchOffset.v4i32.i32.i32.i32(i32
0, i32 %57, i32 32, i32 %58, i32 undef, float undef, i32
undef), !gla.precision !85
%59 = sitofp <4 x i32> %v27 to <4 x float>, !gla.precision !85
%60 = load <4 x float>* %v
%v28 = fmul <4 x float> %60, %59, !gla.precision !85
store <4 x float> %v28, <4 x float>* %v
- %61 = load i32 addrspace(1)* @bufSamp3, !gla.uniform !12
+ %61 = load i32 addrspace(1)* @bufSamp3, !gla.uniform !29
%62 = load i32* %s1
%v29 = call <4 x i32> @llvm.gla.texelFetchOffset.v4i32.i32.i32.i32(i32
0, i32 %61, i32 32, i32 %62, i32 undef, float undef, i32
undef), !gla.precision !85
%63 = uitofp <4 x i32> %v29 to <4 x float>, !gla.precision !85
@@ -189,142 +221,157 @@
; Function Attrs: alwaysinline
define internal fastcc <4 x float> @"CAT("() #0 {
entry:
- %v9 = alloca <4 x float>
+ %v15 = alloca <4 x float>
%v = alloca <4 x float>
%iv = alloca <3 x i32>
store <3 x i32> zeroinitializer, <3 x i32>* %iv
- %0 = load i32 addrspace(1)* @CA4, !gla.uniform !24
+ %0 = load i32 addrspace(1)* @CA4, !gla.uniform !41
%iv1 = call <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32 4, i32 %0,
i32 1), !gla.precision !85
%1 = load <3 x i32>* %iv
%iv2 = add <3 x i32> %1, %iv1, !gla.precision !85
store <3 x i32> %iv2, <3 x i32>* %iv
- %2 = load i32 addrspace(1)* @CA5, !gla.uniform !27
+ %2 = load i32 addrspace(1)* @CA5, !gla.uniform !44
%iv3 = call <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32 4, i32 %2,
i32 1), !gla.precision !85
%3 = load <3 x i32>* %iv
%iv4 = add <3 x i32> %3, %iv3, !gla.precision !85
store <3 x i32> %iv4, <3 x i32>* %iv
- %4 = load i32 addrspace(1)* @CA6, !gla.uniform !30
+ %4 = load i32 addrspace(1)* @CA6, !gla.uniform !47
%iv5 = call <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32 4, i32 %4,
i32 1), !gla.precision !85
%5 = load <3 x i32>* %iv
%iv6 = add <3 x i32> %5, %iv5, !gla.precision !85
store <3 x i32> %iv6, <3 x i32>* %iv
- %6 = load i32 addrspace(1)* @CA7, !gla.uniform !33
+ %6 = load i32 addrspace(1)* @CA7, !gla.uniform !50
%iv7 = call <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32 4, i32 %6,
i32 1), !gla.precision !85
%7 = load <3 x i32>* %iv
%iv8 = add <3 x i32> %7, %iv7, !gla.precision !85
store <3 x i32> %iv8, <3 x i32>* %iv
- %8 = load <3 x i32>* %iv
- %9 = sitofp <3 x i32> %8 to <3 x float>, !gla.precision !85
- %10 = load <4 x float>* %v9
- %11 = extractelement <3 x float> %9, i32 0, !gla.precision !85
- %12 = insertelement <4 x float> %10, float %11, i32 0, !gla.precision !85
- %13 = extractelement <3 x float> %9, i32 1, !gla.precision !85
- %14 = insertelement <4 x float> %12, float %13, i32 1, !gla.precision !85
- %15 = extractelement <3 x float> %9, i32 2, !gla.precision !85
- %16 = insertelement <4 x float> %14, float %15, i32 2, !gla.precision !85
- %v10 = insertelement <4 x float> %16, float 1.000000e+00, i32
3, !gla.precision !85
- store <4 x float> %v10, <4 x float>* %v
- %17 = load i32 addrspace(1)* @CA4, !gla.uniform !24
- %v11 = call <4 x float> @llvm.gla.fTextureSample.v4f32.v4f32(i32 4,
i32 %17, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
- %18 = load <4 x float>* %v
- %v12 = fmul <4 x float> %18, %v11, !gla.precision !85
- store <4 x float> %v12, <4 x float>* %v
- %19 = load i32 addrspace(1)* @CA5, !gla.uniform !27
- %v13 = call float @llvm.gla.fTextureSampleLodRefZ.f32.v4f32(i32 4,
i32 %19, i32 154, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 3.000000e+00, float
undef), !gla.precision !85
- %20 = load <4 x float>* %v
- %21 = insertelement <4 x float> undef, float %v13, i32
0, !gla.precision !85
- %22 = insertelement <4 x float> %21, float %v13, i32
1, !gla.precision !85
- %23 = insertelement <4 x float> %22, float %v13, i32
2, !gla.precision !85
- %24 = insertelement <4 x float> %23, float %v13, i32
3, !gla.precision !85
- %v14 = fmul <4 x float> %20, %24, !gla.precision !85
- store <4 x float> %v14, <4 x float>* %v
- %25 = load i32 addrspace(1)* @CA6, !gla.uniform !30
- %v15 = call <4 x i32> @llvm.gla.textureSample.v4i32.v4f32(i32 4,
i32 %25, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
- %26 = sitofp <4 x i32> %v15 to <4 x float>, !gla.precision !85
- %27 = load <4 x float>* %v
- %v16 = fmul <4 x float> %27, %26, !gla.precision !85
+ %8 = load i32 addrspace(1)* @CA1, !gla.uniform !53
+ %iv9 = call <3 x i32> @llvm.gla.queryImageSize.v3i32(i32 4,
i32 %8), !gla.precision !85
+ %9 = load <3 x i32>* %iv
+ %iv10 = add <3 x i32> %9, %iv9, !gla.precision !85
+ store <3 x i32> %iv10, <3 x i32>* %iv
+ %10 = load i32 addrspace(1)* @CA2, !gla.uniform !56
+ %iv11 = call <3 x i32> @llvm.gla.queryImageSize.v3i32(i32 4,
i32 %10), !gla.precision !85
+ %11 = load <3 x i32>* %iv
+ %iv12 = add <3 x i32> %11, %iv11, !gla.precision !85
+ store <3 x i32> %iv12, <3 x i32>* %iv
+ %12 = load i32 addrspace(1)* @CA3, !gla.uniform !59
+ %iv13 = call <3 x i32> @llvm.gla.queryImageSize.v3i32(i32 4,
i32 %12), !gla.precision !85
+ %13 = load <3 x i32>* %iv
+ %iv14 = add <3 x i32> %13, %iv13, !gla.precision !85
+ store <3 x i32> %iv14, <3 x i32>* %iv
+ %14 = load <3 x i32>* %iv
+ %15 = sitofp <3 x i32> %14 to <3 x float>, !gla.precision !85
+ %16 = load <4 x float>* %v15
+ %17 = extractelement <3 x float> %15, i32 0, !gla.precision !85
+ %18 = insertelement <4 x float> %16, float %17, i32 0, !gla.precision !85
+ %19 = extractelement <3 x float> %15, i32 1, !gla.precision !85
+ %20 = insertelement <4 x float> %18, float %19, i32 1, !gla.precision !85
+ %21 = extractelement <3 x float> %15, i32 2, !gla.precision !85
+ %22 = insertelement <4 x float> %20, float %21, i32 2, !gla.precision !85
+ %v16 = insertelement <4 x float> %22, float 1.000000e+00, i32
3, !gla.precision !85
store <4 x float> %v16, <4 x float>* %v
- %28 = load i32 addrspace(1)* @CA7, !gla.uniform !33
- %v17 = call <4 x i32> @llvm.gla.textureSample.v4i32.v4f32(i32 4,
i32 %28, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
- %29 = uitofp <4 x i32> %v17 to <4 x float>, !gla.precision !85
- %30 = load <4 x float>* %v
- %v18 = fmul <4 x float> %30, %29, !gla.precision !85
+ %23 = load i32 addrspace(1)* @CA4, !gla.uniform !41
+ %v17 = call <4 x float> @llvm.gla.fTextureSample.v4f32.v4f32(i32 4,
i32 %23, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
+ %24 = load <4 x float>* %v
+ %v18 = fmul <4 x float> %24, %v17, !gla.precision !85
store <4 x float> %v18, <4 x float>* %v
- %31 = load i32 addrspace(1)* @CA4, !gla.uniform !24
- %v19 = call <4 x float> @llvm.gla.fTextureSampleLodRefZ.v4f32.v4f32(i32
4, i32 %31, i32 148, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 0x3FCEB851E0000000, float
undef), !gla.precision !85
- %32 = load <4 x float>* %v
- %v20 = fmul <4 x float> %32, %v19, !gla.precision !85
+ %25 = load i32 addrspace(1)* @CA5, !gla.uniform !44
+ %v19 = call float @llvm.gla.fTextureSampleLodRefZ.f32.v4f32(i32 4,
i32 %25, i32 154, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 3.000000e+00, float
undef), !gla.precision !85
+ %26 = load <4 x float>* %v
+ %27 = insertelement <4 x float> undef, float %v19, i32
0, !gla.precision !85
+ %28 = insertelement <4 x float> %27, float %v19, i32
1, !gla.precision !85
+ %29 = insertelement <4 x float> %28, float %v19, i32
2, !gla.precision !85
+ %30 = insertelement <4 x float> %29, float %v19, i32
3, !gla.precision !85
+ %v20 = fmul <4 x float> %26, %30, !gla.precision !85
store <4 x float> %v20, <4 x float>* %v
- %33 = load i32 addrspace(1)* @CA6, !gla.uniform !30
- %v21 = call <4 x i32> @llvm.gla.textureSampleLodRefZ.v4i32.v4f32(i32 4,
i32 %33, i32 148, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 0x3FD0A3D700000000, float
undef), !gla.precision !85
- %34 = sitofp <4 x i32> %v21 to <4 x float>, !gla.precision !85
- %35 = load <4 x float>* %v
- %v22 = fmul <4 x float> %35, %34, !gla.precision !85
+ %31 = load i32 addrspace(1)* @CA6, !gla.uniform !47
+ %v21 = call <4 x i32> @llvm.gla.textureSample.v4i32.v4f32(i32 4,
i32 %31, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
+ %32 = sitofp <4 x i32> %v21 to <4 x float>, !gla.precision !85
+ %33 = load <4 x float>* %v
+ %v22 = fmul <4 x float> %33, %32, !gla.precision !85
store <4 x float> %v22, <4 x float>* %v
- %36 = load i32 addrspace(1)* @CA7, !gla.uniform !33
- %v23 = call <4 x i32> @llvm.gla.textureSampleLodRefZ.v4i32.v4f32(i32 4,
i32 %36, i32 148, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 0x3FD147AE20000000, float
undef), !gla.precision !85
- %37 = uitofp <4 x i32> %v23 to <4 x float>, !gla.precision !85
- %38 = load <4 x float>* %v
- %v24 = fmul <4 x float> %38, %37, !gla.precision !85
+ %34 = load i32 addrspace(1)* @CA7, !gla.uniform !50
+ %v23 = call <4 x i32> @llvm.gla.textureSample.v4i32.v4f32(i32 4,
i32 %34, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
+ %35 = uitofp <4 x i32> %v23 to <4 x float>, !gla.precision !85
+ %36 = load <4 x float>* %v
+ %v24 = fmul <4 x float> %36, %35, !gla.precision !85
store <4 x float> %v24, <4 x float>* %v
- %39 = load i32 addrspace(1)* @CA4, !gla.uniform !24
- %v25 = call <4 x float>
@llvm.gla.fTextureSampleLodRefZOffsetGrad.v4f32.v4f32.i32.v3f32.v3f32(i32
4, i32 %39, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float undef, float undef, i32
undef, <3 x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000,
float 0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
- %40 = load <4 x float>* %v
- %v26 = fmul <4 x float> %40, %v25, !gla.precision !85
+ %37 = load i32 addrspace(1)* @CA4, !gla.uniform !41
+ %v25 = call <4 x float> @llvm.gla.fTextureSampleLodRefZ.v4f32.v4f32(i32
4, i32 %37, i32 148, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 0x3FCEB851E0000000, float
undef), !gla.precision !85
+ %38 = load <4 x float>* %v
+ %v26 = fmul <4 x float> %38, %v25, !gla.precision !85
store <4 x float> %v26, <4 x float>* %v
- %41 = load i32 addrspace(1)* @CA6, !gla.uniform !30
- %v27 = call <4 x i32>
@llvm.gla.textureSampleLodRefZOffsetGrad.v4i32.v4f32.i32.v3f32.v3f32(i32 4,
i32 %41, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, float undef, float undef, i32 undef, <3
x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float
0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
- %42 = sitofp <4 x i32> %v27 to <4 x float>, !gla.precision !85
- %43 = load <4 x float>* %v
- %v28 = fmul <4 x float> %43, %42, !gla.precision !85
+ %39 = load i32 addrspace(1)* @CA6, !gla.uniform !47
+ %v27 = call <4 x i32> @llvm.gla.textureSampleLodRefZ.v4i32.v4f32(i32 4,
i32 %39, i32 148, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 0x3FD0A3D700000000, float
undef), !gla.precision !85
+ %40 = sitofp <4 x i32> %v27 to <4 x float>, !gla.precision !85
+ %41 = load <4 x float>* %v
+ %v28 = fmul <4 x float> %41, %40, !gla.precision !85
store <4 x float> %v28, <4 x float>* %v
- %44 = load i32 addrspace(1)* @CA7, !gla.uniform !33
- %v29 = call <4 x i32>
@llvm.gla.textureSampleLodRefZOffsetGrad.v4i32.v4f32.i32.v3f32.v3f32(i32 4,
i32 %44, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, float undef, float undef, i32 undef, <3
x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float
0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
- %45 = uitofp <4 x i32> %v29 to <4 x float>, !gla.precision !85
- %46 = load <4 x float>* %v
- %v30 = fmul <4 x float> %46, %45, !gla.precision !85
+ %42 = load i32 addrspace(1)* @CA7, !gla.uniform !50
+ %v29 = call <4 x i32> @llvm.gla.textureSampleLodRefZ.v4i32.v4f32(i32 4,
i32 %42, i32 148, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 0x3FD147AE20000000, float
undef), !gla.precision !85
+ %43 = uitofp <4 x i32> %v29 to <4 x float>, !gla.precision !85
+ %44 = load <4 x float>* %v
+ %v30 = fmul <4 x float> %44, %43, !gla.precision !85
store <4 x float> %v30, <4 x float>* %v
- %47 = load i32 addrspace(1)* @CA4, !gla.uniform !24
- %v31 = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %47, i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
- %48 = load <4 x float>* %v
- %v32 = fmul <4 x float> %48, %v31, !gla.precision !85
+ %45 = load i32 addrspace(1)* @CA4, !gla.uniform !41
+ %v31 = call <4 x float>
@llvm.gla.fTextureSampleLodRefZOffsetGrad.v4f32.v4f32.i32.v3f32.v3f32(i32
4, i32 %45, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float undef, float undef, i32
undef, <3 x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000,
float 0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
+ %46 = load <4 x float>* %v
+ %v32 = fmul <4 x float> %46, %v31, !gla.precision !85
store <4 x float> %v32, <4 x float>* %v
- %49 = load i32 addrspace(1)* @CA4, !gla.uniform !24
- %v33 = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %49, i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, i32 2, float
undef), !gla.precision !85
- %50 = load <4 x float>* %v
- %v34 = fmul <4 x float> %50, %v33, !gla.precision !85
+ %47 = load i32 addrspace(1)* @CA6, !gla.uniform !47
+ %v33 = call <4 x i32>
@llvm.gla.textureSampleLodRefZOffsetGrad.v4i32.v4f32.i32.v3f32.v3f32(i32 4,
i32 %47, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, float undef, float undef, i32 undef, <3
x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float
0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
+ %48 = sitofp <4 x i32> %v33 to <4 x float>, !gla.precision !85
+ %49 = load <4 x float>* %v
+ %v34 = fmul <4 x float> %49, %48, !gla.precision !85
store <4 x float> %v34, <4 x float>* %v
- %51 = load i32 addrspace(1)* @CA6, !gla.uniform !30
- %v35 = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4, i32 %51,
i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
- %52 = sitofp <4 x i32> %v35 to <4 x float>, !gla.precision !85
- %53 = load <4 x float>* %v
- %v36 = fmul <4 x float> %53, %52, !gla.precision !85
+ %50 = load i32 addrspace(1)* @CA7, !gla.uniform !50
+ %v35 = call <4 x i32>
@llvm.gla.textureSampleLodRefZOffsetGrad.v4i32.v4f32.i32.v3f32.v3f32(i32 4,
i32 %50, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, float undef, float undef, i32 undef, <3
x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float
0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
+ %51 = uitofp <4 x i32> %v35 to <4 x float>, !gla.precision !85
+ %52 = load <4 x float>* %v
+ %v36 = fmul <4 x float> %52, %51, !gla.precision !85
store <4 x float> %v36, <4 x float>* %v
- %54 = load i32 addrspace(1)* @CA6, !gla.uniform !30
- %v37 = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4, i32 %54,
i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 1, float undef), !gla.precision !85
- %55 = sitofp <4 x i32> %v37 to <4 x float>, !gla.precision !85
- %56 = load <4 x float>* %v
- %v38 = fmul <4 x float> %56, %55, !gla.precision !85
+ %53 = load i32 addrspace(1)* @CA4, !gla.uniform !41
+ %v37 = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %53, i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
+ %54 = load <4 x float>* %v
+ %v38 = fmul <4 x float> %54, %v37, !gla.precision !85
store <4 x float> %v38, <4 x float>* %v
- %57 = load i32 addrspace(1)* @CA7, !gla.uniform !33
- %v39 = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4, i32 %57,
i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
- %58 = uitofp <4 x i32> %v39 to <4 x float>, !gla.precision !85
- %59 = load <4 x float>* %v
- %v40 = fmul <4 x float> %59, %58, !gla.precision !85
+ %55 = load i32 addrspace(1)* @CA4, !gla.uniform !41
+ %v39 = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %55, i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, i32 2, float
undef), !gla.precision !85
+ %56 = load <4 x float>* %v
+ %v40 = fmul <4 x float> %56, %v39, !gla.precision !85
store <4 x float> %v40, <4 x float>* %v
- %60 = load i32 addrspace(1)* @CA7, !gla.uniform !33
- %v41 = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4, i32 %60,
i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 0, float undef), !gla.precision !85
- %61 = uitofp <4 x i32> %v41 to <4 x float>, !gla.precision !85
- %62 = load <4 x float>* %v
- %v42 = fmul <4 x float> %62, %61, !gla.precision !85
+ %57 = load i32 addrspace(1)* @CA6, !gla.uniform !47
+ %v41 = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4, i32 %57,
i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
+ %58 = sitofp <4 x i32> %v41 to <4 x float>, !gla.precision !85
+ %59 = load <4 x float>* %v
+ %v42 = fmul <4 x float> %59, %58, !gla.precision !85
store <4 x float> %v42, <4 x float>* %v
- %63 = load i32 addrspace(1)* @CA5, !gla.uniform !27
- %v43 = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %63, i32 2136, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, i32 undef, float
2.500000e+00), !gla.precision !85
- %64 = load <4 x float>* %v
- %v44 = fmul <4 x float> %64, %v43, !gla.precision !85
+ %60 = load i32 addrspace(1)* @CA6, !gla.uniform !47
+ %v43 = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4, i32 %60,
i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 1, float undef), !gla.precision !85
+ %61 = sitofp <4 x i32> %v43 to <4 x float>, !gla.precision !85
+ %62 = load <4 x float>* %v
+ %v44 = fmul <4 x float> %62, %61, !gla.precision !85
store <4 x float> %v44, <4 x float>* %v
+ %63 = load i32 addrspace(1)* @CA7, !gla.uniform !50
+ %v45 = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4, i32 %63,
i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
+ %64 = uitofp <4 x i32> %v45 to <4 x float>, !gla.precision !85
%65 = load <4 x float>* %v
- ret <4 x float> %65
+ %v46 = fmul <4 x float> %65, %64, !gla.precision !85
+ store <4 x float> %v46, <4 x float>* %v
+ %66 = load i32 addrspace(1)* @CA7, !gla.uniform !50
+ %v47 = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4, i32 %66,
i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 0, float undef), !gla.precision !85
+ %67 = uitofp <4 x i32> %v47 to <4 x float>, !gla.precision !85
+ %68 = load <4 x float>* %v
+ %v48 = fmul <4 x float> %68, %67, !gla.precision !85
+ store <4 x float> %v48, <4 x float>* %v
+ %69 = load i32 addrspace(1)* @CA5, !gla.uniform !44
+ %v49 = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %69, i32 2136, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, i32 undef, float
2.500000e+00), !gla.precision !85
+ %70 = load <4 x float>* %v
+ %v50 = fmul <4 x float> %70, %v49, !gla.precision !85
+ store <4 x float> %v50, <4 x float>* %v
+ %71 = load <4 x float>* %v
+ ret <4 x float> %71
post-return: ; No predecessors!
unreachable
@@ -337,17 +384,17 @@
%v = alloca <4 x float>
%iv = alloca <3 x i32>
store <3 x i32> zeroinitializer, <3 x i32>* %iv
- %0 = load i32 addrspace(1)* @samp2DMSA, !gla.uniform !36
+ %0 = load i32 addrspace(1)* @samp2DMSA, !gla.uniform !62
%iv1 = call <3 x i32> @llvm.gla.queryTextureSizeNoLod.v3i32(i32 6,
i32 %0), !gla.precision !85
%1 = load <3 x i32>* %iv
%iv2 = add <3 x i32> %1, %iv1, !gla.precision !85
store <3 x i32> %iv2, <3 x i32>* %iv
- %2 = load i32 addrspace(1)* @samp2DMSAi, !gla.uniform !39
+ %2 = load i32 addrspace(1)* @samp2DMSAi, !gla.uniform !65
%iv3 = call <3 x i32> @llvm.gla.queryTextureSizeNoLod.v3i32(i32 6,
i32 %2), !gla.precision !85
%3 = load <3 x i32>* %iv
%iv4 = add <3 x i32> %3, %iv3, !gla.precision !85
store <3 x i32> %iv4, <3 x i32>* %iv
- %4 = load i32 addrspace(1)* @samp2DMSAu, !gla.uniform !42
+ %4 = load i32 addrspace(1)* @samp2DMSAu, !gla.uniform !68
%iv5 = call <3 x i32> @llvm.gla.queryTextureSizeNoLod.v3i32(i32 6,
i32 %4), !gla.precision !85
%5 = load <3 x i32>* %iv
%iv6 = add <3 x i32> %5, %iv5, !gla.precision !85
@@ -363,18 +410,18 @@
%14 = insertelement <4 x float> %12, float %13, i32 2, !gla.precision !85
%v8 = insertelement <4 x float> %14, float 1.000000e+00, i32
3, !gla.precision !85
store <4 x float> %v8, <4 x float>* %v
- %15 = load i32 addrspace(1)* @samp2DMSA, !gla.uniform !36
+ %15 = load i32 addrspace(1)* @samp2DMSA, !gla.uniform !62
%v9 = call <4 x float>
@llvm.gla.fTexelFetchOffset.v4f32.v3i32.i32.i32(i32 6, i32 %15, i32 690, <3
x i32> <i32 5, i32 5, i32 5>, i32 2, float undef, i32
undef), !gla.precision !85
%16 = load <4 x float>* %v
%v10 = fmul <4 x float> %16, %v9, !gla.precision !85
store <4 x float> %v10, <4 x float>* %v
- %17 = load i32 addrspace(1)* @samp2DMSAi, !gla.uniform !39
+ %17 = load i32 addrspace(1)* @samp2DMSAi, !gla.uniform !65
%v11 = call <4 x i32> @llvm.gla.texelFetchOffset.v4i32.v3i32.i32.i32(i32
6, i32 %17, i32 690, <3 x i32> <i32 5, i32 5, i32 5>, i32 2, float undef,
i32 undef), !gla.precision !85
%18 = sitofp <4 x i32> %v11 to <4 x float>, !gla.precision !85
%19 = load <4 x float>* %v
%v12 = fmul <4 x float> %19, %18, !gla.precision !85
store <4 x float> %v12, <4 x float>* %v
- %20 = load i32 addrspace(1)* @samp2DMSAu, !gla.uniform !42
+ %20 = load i32 addrspace(1)* @samp2DMSAu, !gla.uniform !68
%v13 = call <4 x i32> @llvm.gla.texelFetchOffset.v4i32.v3i32.i32.i32(i32
6, i32 %20, i32 690, <3 x i32> <i32 5, i32 5, i32 5>, i32 2, float undef,
i32 undef), !gla.precision !85
%21 = uitofp <4 x i32> %v13 to <4 x float>, !gla.precision !85
%22 = load <4 x float>* %v
@@ -390,12 +437,99 @@
; Function Attrs: alwaysinline
define internal fastcc void @"goodImageAtom("() #0 {
entry:
+ %datu = alloca i32
+ %dati = alloca i32
+ %datf = alloca float
+ store float 0x3FFCCCCCC0000000, float* %datf
+ store i32 4, i32* %dati
+ store i32 7, i32* %datu
+ %0 = load i32 addrspace(1)* @im2Di, !gla.uniform !71
+ %1 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %2 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %3 = extractelement <2 x i32> %2, i32 0, !gla.precision !85
+ %image = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %0, i32 196608, <2
x i32> %1, i32 %3), !gla.precision !85
+ %4 = load i32 addrspace(1)* @im2Du, !gla.uniform !75
+ %5 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %6 = load i32* %datu
+ %image1 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %4, i32 196608, <2
x i32> %5, i32 %6), !gla.precision !85
+ %7 = load i32 addrspace(1)* @im2Di, !gla.uniform !71
+ %8 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %9 = load i32* %dati
+ %image2 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %7, i32 262144, <2
x i32> %8, i32 %9), !gla.precision !85
+ %10 = load i32 addrspace(1)* @im2Du, !gla.uniform !75
+ %11 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %12 = load i32* %datu
+ %image3 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %10, i32 262144,
<2 x i32> %11, i32 %12), !gla.precision !85
+ %13 = load i32 addrspace(1)* @im2Di, !gla.uniform !71
+ %14 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %15 = load i32* %dati
+ %image4 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %13, i32 327680,
<2 x i32> %14, i32 %15), !gla.precision !85
+ %16 = load i32 addrspace(1)* @im2Du, !gla.uniform !75
+ %17 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %18 = load i32* %datu
+ %image5 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %16, i32 327680,
<2 x i32> %17, i32 %18), !gla.precision !85
+ %19 = load i32 addrspace(1)* @im2Di, !gla.uniform !71
+ %20 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %21 = load i32* %dati
+ %image6 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %19, i32 393216,
<2 x i32> %20, i32 %21), !gla.precision !85
+ %22 = load i32 addrspace(1)* @im2Du, !gla.uniform !75
+ %23 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %24 = load i32* %datu
+ %image7 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %22, i32 393216,
<2 x i32> %23, i32 %24), !gla.precision !85
+ %25 = load i32 addrspace(1)* @im2Di, !gla.uniform !71
+ %26 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %27 = load i32* %dati
+ %image8 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %25, i32 458752,
<2 x i32> %26, i32 %27), !gla.precision !85
+ %28 = load i32 addrspace(1)* @im2Du, !gla.uniform !75
+ %29 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %30 = load i32* %datu
+ %image9 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %28, i32 458752,
<2 x i32> %29, i32 %30), !gla.precision !85
+ %31 = load i32 addrspace(1)* @im2Di, !gla.uniform !71
+ %32 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %33 = load i32* %dati
+ %image10 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %31, i32 524288,
<2 x i32> %32, i32 %33), !gla.precision !85
+ %34 = load i32 addrspace(1)* @im2Du, !gla.uniform !75
+ %35 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %36 = load i32* %datu
+ %image11 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %34, i32 524288,
<2 x i32> %35, i32 %36), !gla.precision !85
+ %37 = load i32 addrspace(1)* @im2Di, !gla.uniform !71
+ %38 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %39 = load i32* %dati
+ %image12 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %37, i32 589824,
<2 x i32> %38, i32 %39), !gla.precision !85
+ %40 = load i32 addrspace(1)* @im2Du, !gla.uniform !75
+ %41 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %42 = load i32* %datu
+ %image13 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %40, i32 589824,
<2 x i32> %41, i32 %42), !gla.precision !85
+ %43 = load i32 addrspace(1)* @im2Df, !gla.uniform !78
+ %44 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %45 = load float* %datf
+ %image14 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %43, i32 589824,
<2 x i32> %44, float %45), !gla.precision !85
+ %46 = load i32 addrspace(1)* @im2Di, !gla.uniform !71
+ %47 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %48 = load i32* %dati
+ %image15 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %46, i32 655360,
<2 x i32> %47, i32 3, i32 %48), !gla.precision !85
+ %49 = load i32 addrspace(1)* @im2Du, !gla.uniform !75
+ %50 = load <2 x i32> addrspace(2)* @P, !gla.uniform !74
+ %51 = load i32* %datu
+ %image16 = call i32 @llvm.gla.imageOp.v2i32(i32 2, i32 %49, i32 655360,
<2 x i32> %50, i32 5, i32 %51), !gla.precision !85
ret void
}
+
+; Function Attrs: nounwind readnone
+declare <2 x float> @llvm.gla.fFma.v2f32.v2f32.v2f32.v2f32(<2 x float>, <2
x float>, <2 x float>) #1
+
+; Function Attrs: nounwind readnone
+declare <4 x float> @llvm.gla.fTexelGatherOffset.v4f32.v2f32(i32, i32,
i32, <2 x float>, i32, float, <2 x i32>) #1
+
+; Function Attrs: nounwind readnone
+declare <4 x float> @llvm.gla.fTexelGatherOffsets.v4f32.v2f32(i32, i32,
i32, <2 x float>, i32, float, <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32>) #1
; Function Attrs: nounwind readnone
declare i32 @llvm.gla.queryTextureSizeNoLod.i32(i32, i32) #1
+; Function Attrs: nounwind readnone
+declare i32 @llvm.gla.queryImageSize.i32(i32, i32, i32) #1
+
; Function Attrs: nounwind readnone
declare <4 x float> @llvm.gla.fTexelFetchOffset.v4f32.i32.i32.i32(i32,
i32, i32, i32, i32, float, i32) #1
@@ -405,6 +539,9 @@
; Function Attrs: nounwind readnone
declare <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32, i32, i32) #1
+; Function Attrs: nounwind readnone
+declare <3 x i32> @llvm.gla.queryImageSize.v3i32(i32, i32, i32) #1
+
; Function Attrs: nounwind readnone
declare <4 x float> @llvm.gla.fTextureSample.v4f32.v4f32(i32, i32, i32, <4
x float>) #1
@@ -441,108 +578,119 @@
; Function Attrs: nounwind readnone
declare <4 x i32> @llvm.gla.texelFetchOffset.v4i32.v3i32.i32.i32(i32, i32,
i32, <3 x i32>, i32, float, i32) #1
+; Function Attrs: nounwind
+declare i32 @llvm.gla.imageOp.v2i32(i32, i32, i32, <2 x i32>, i32) #2
+
attributes #0 = { alwaysinline }
attributes #1 = { nounwind readnone }
+attributes #2 = { nounwind }
!gla.entrypoint = !{!0}
-!gla.uniforms
= !{!1, !4, !6, !9, !12, !15, !18, !21, !24, !27, !30, !33, !36, !39, !42, !45, !48, !52, !55, !58, !61, !64, !67, !70}
-!gla.outputs = !{!71}
-!gla.noStaticUse
= !{!45, !48, !75, !77, !79, !52, !55, !58, !61, !64, !67, !70, !81, !83}
-!gla.inputs = !{!75, !77, !79, !81, !83}
+!gla.inputs = !{!1, !3, !5, !7, !9}
+!gla.uniforms
= !{!11, !14, !16, !19, !23, !26, !29, !32, !35, !38, !41, !44, !47, !50, !53, !56, !59, !62, !65, !68, !71, !74, !75, !78}
+!gla.outputs = !{!81}
+!gla.noStaticUse = !{!7, !9}
!0 = metadata !{metadata !"main", i32 15}
-!1 = metadata !{metadata !"iArray", i32 12, [5 x i32]* @iArray_typeProxy,
metadata !2}
-!2 = metadata !{i32 5, i32 1, i32 1024, metadata !3}
-!3 = metadata !{i32 1, [5 x i32]* @iArray_typeProxy, i32 1, i1 false, i1
false, i32 0}
-!4 = metadata !{metadata !"index", i32 12, i32* @index_typeProxy,
metadata !5}
-!5 = metadata !{i32 0, i32 3, i32 1024, null}
-!6 = metadata !{metadata !"bufSamp1", i32 12, i32* @bufSamp1_typeProxy,
metadata !7}
-!7 = metadata !{i32 5, i32 3, i32 1024, metadata !8}
-!8 = metadata !{i32 0, i32* @bufSamp1_typeProxy, i32 5, i1 false, i1
false, i32 0}
-!9 = metadata !{metadata !"bufSamp2", i32 12, i32* @bufSamp2_typeProxy,
metadata !10}
-!10 = metadata !{i32 5, i32 3, i32 1024, metadata !11}
-!11 = metadata !{i32 0, i32* @bufSamp2_typeProxy, i32 5, i1 false, i1
false, i32 1}
-!12 = metadata !{metadata !"bufSamp3", i32 12, i32* @bufSamp3_typeProxy,
metadata !13}
-!13 = metadata !{i32 5, i32 3, i32 1024, metadata !14}
-!14 = metadata !{i32 0, i32* @bufSamp3_typeProxy, i32 5, i1 false, i1
false, i32 2}
-!15 = metadata !{metadata !"bufSamp4", i32 12, i32* @bufSamp4_typeProxy,
metadata !16}
-!16 = metadata !{i32 5, i32 3, i32 1024, metadata !17}
-!17 = metadata !{i32 1, i32* @bufSamp4_typeProxy, i32 5, i1 false, i1
false, i32 0}
-!18 = metadata !{metadata !"bufSamp5", i32 12, i32* @bufSamp5_typeProxy,
metadata !19}
-!19 = metadata !{i32 5, i32 3, i32 1024, metadata !20}
-!20 = metadata !{i32 1, i32* @bufSamp5_typeProxy, i32 5, i1 false, i1
false, i32 1}
-!21 = metadata !{metadata !"bufSamp6", i32 12, i32* @bufSamp6_typeProxy,
metadata !22}
-!22 = metadata !{i32 5, i32 3, i32 1024, metadata !23}
-!23 = metadata !{i32 1, i32* @bufSamp6_typeProxy, i32 5, i1 false, i1
false, i32 2}
-!24 = metadata !{metadata !"CA4", i32 12, i32* @CA4_typeProxy,
metadata !25}
-!25 = metadata !{i32 5, i32 3, i32 1024, metadata !26}
-!26 = metadata !{i32 0, i32* @CA4_typeProxy, i32 3, i1 true, i1 false, i32
0}
-!27 = metadata !{metadata !"CA5", i32 12, i32* @CA5_typeProxy,
metadata !28}
-!28 = metadata !{i32 5, i32 3, i32 1024, metadata !29}
-!29 = metadata !{i32 0, i32* @CA5_typeProxy, i32 3, i1 true, i1 true, i32
0}
-!30 = metadata !{metadata !"CA6", i32 12, i32* @CA6_typeProxy,
metadata !31}
-!31 = metadata !{i32 5, i32 3, i32 1024, metadata !32}
-!32 = metadata !{i32 0, i32* @CA6_typeProxy, i32 3, i1 true, i1 false, i32
1}
-!33 = metadata !{metadata !"CA7", i32 12, i32* @CA7_typeProxy,
metadata !34}
-!34 = metadata !{i32 5, i32 3, i32 1024, metadata !35}
-!35 = metadata !{i32 0, i32* @CA7_typeProxy, i32 3, i1 true, i1 false, i32
2}
-!36 = metadata !{metadata !"samp2DMSA", i32 12, i32* @samp2DMSA_typeProxy,
metadata !37}
-!37 = metadata !{i32 5, i32 3, i32 1024, metadata !38}
-!38 = metadata !{i32 0, i32* @samp2DMSA_typeProxy, i32 1, i1 true, i1
false, i32 0}
-!39 = metadata !{metadata !"samp2DMSAi", i32 12, i32*
@samp2DMSAi_typeProxy, metadata !40}
-!40 = metadata !{i32 5, i32 3, i32 1024, metadata !41}
-!41 = metadata !{i32 0, i32* @samp2DMSAi_typeProxy, i32 1, i1 true, i1
false, i32 1}
-!42 = metadata !{metadata !"samp2DMSAu", i32 12, i32*
@samp2DMSAu_typeProxy, metadata !43}
-!43 = metadata !{i32 5, i32 3, i32 1024, metadata !44}
-!44 = metadata !{i32 0, i32* @samp2DMSAu_typeProxy, i32 1, i1 true, i1
false, i32 2}
-!45 = metadata !{metadata !"sArray", i32 12, [4 x i32]* @sArray_typeProxy,
metadata !46}
-!46 = metadata !{i32 5, i32 1, i32 1024, metadata !47}
-!47 = metadata !{i32 0, [4 x i32]* @sArray_typeProxy, i32 1, i1 false, i1
false, i32 0}
-!48 = metadata !{metadata !"ubInst", i32 13, [4 x %ubName]*
@ubInst_typeProxy, metadata !49, metadata !50}
-!49 = metadata !{i32 6, i32 0, i32 1024, null}
-!50 = metadata !{metadata !"ubName", metadata !49, metadata !"p",
metadata !51}
-!51 = metadata !{metadata !"", metadata !5}
-!52 = metadata !{metadata !"CA1", i32 12, i32* @CA1_typeProxy,
metadata !53}
-!53 = metadata !{i32 5, i32 3, i32 1024, metadata !54}
-!54 = metadata !{i32 1, i32* @CA1_typeProxy, i32 3, i1 true, i1 false, i32
0}
-!55 = metadata !{metadata !"CA2", i32 12, i32* @CA2_typeProxy,
metadata !56}
-!56 = metadata !{i32 5, i32 3, i32 1024, metadata !57}
-!57 = metadata !{i32 1, i32* @CA2_typeProxy, i32 3, i1 true, i1 false, i32
1}
-!58 = metadata !{metadata !"CA3", i32 12, i32* @CA3_typeProxy,
metadata !59}
-!59 = metadata !{i32 5, i32 3, i32 1024, metadata !60}
-!60 = metadata !{i32 1, i32* @CA3_typeProxy, i32 3, i1 true, i1 false, i32
2}
-!61 = metadata !{metadata !"im2Df", i32 12, i32* @im2Df_typeProxy,
metadata !62}
-!62 = metadata !{i32 5, i32 3, i32 1024, metadata !63}
-!63 = metadata !{i32 4, i32* @im2Df_typeProxy, i32 1, i1 false, i1 false,
i32 0}
-!64 = metadata !{metadata !"im2Du", i32 12, i32* @im2Du_typeProxy,
metadata !65}
-!65 = metadata !{i32 5, i32 3, i32 1024, metadata !66}
-!66 = metadata !{i32 34, i32* @im2Du_typeProxy, i32 1, i1 false, i1 false,
i32 2}
-!67 = metadata !{metadata !"im2Di", i32 12, i32* @im2Di_typeProxy,
metadata !68}
-!68 = metadata !{i32 5, i32 3, i32 1024, metadata !69}
-!69 = metadata !{i32 25, i32* @im2Di_typeProxy, i32 1, i1 false, i1 false,
i32 1}
-!70 = metadata !{metadata !"P", i32 12, <2 x i32>* @P_typeProxy,
metadata !5}
-!71 = metadata !{metadata !"outInst", i32 16, %outName*
@outInst_typeProxy, metadata !72, metadata !73}
-!72 = metadata !{i32 0, i32 0, i32 1024, null, i32 0}
-!73 = metadata !{metadata !"outName", metadata !74, metadata !"color",
metadata !51}
-!74 = metadata !{i32 0, i32 0, i32 1024, null}
-!75 = metadata !{metadata !"inf", i32 1, <2 x float>* @inf_typeProxy,
metadata !76}
-!76 = metadata !{i32 0, i32 3, i32 1025, null, i32 0}
-!77 = metadata !{metadata !"ing", i32 1, <2 x float>* @ing_typeProxy,
metadata !78}
-!78 = metadata !{i32 0, i32 3, i32 1026, null, i32 0}
-!79 = metadata !{metadata !"inch", i32 1, <2 x float>* @inch_typeProxy,
metadata !80}
-!80 = metadata !{i32 0, i32 3, i32 1027, null, i32 0}
-!81 = metadata !{metadata !"gl_VertexID", i32 2, i32*
@gl_VertexID_typeProxy, metadata !82}
-!82 = metadata !{i32 0, i32 3, i32 1028, null, i32 0, i32 7}
-!83 = metadata !{metadata !"gl_InstanceID", i32 3, i32*
@gl_InstanceID_typeProxy, metadata !84}
-!84 = metadata !{i32 0, i32 3, i32 1029, null, i32 0, i32 8}
+!1 = metadata !{metadata !"inf", i32 1, <2 x float>* @inf_typeProxy,
metadata !2}
+!2 = metadata !{i32 0, i32 3, i32 1024, null, i32 0}
+!3 = metadata !{metadata !"ing", i32 1, <2 x float>* @ing_typeProxy,
metadata !4}
+!4 = metadata !{i32 0, i32 3, i32 1025, null, i32 0}
+!5 = metadata !{metadata !"inch", i32 1, <2 x float>* @inch_typeProxy,
metadata !6}
+!6 = metadata !{i32 0, i32 3, i32 1026, null, i32 0}
+!7 = metadata !{metadata !"gl_VertexID", i32 2, i32*
@gl_VertexID_typeProxy, metadata !8}
+!8 = metadata !{i32 0, i32 3, i32 1028, null, i32 0, i32 7}
+!9 = metadata !{metadata !"gl_InstanceID", i32 3, i32*
@gl_InstanceID_typeProxy, metadata !10}
+!10 = metadata !{i32 0, i32 3, i32 1029, null, i32 0, i32 8}
+!11 = metadata !{metadata !"iArray", i32 12, [5 x i32]* @iArray_typeProxy,
metadata !12}
+!12 = metadata !{i32 5, i32 1, i32 1024, metadata !13}
+!13 = metadata !{i32 1, [5 x i32]* @iArray_typeProxy, i32 1, i1 false, i1
false, i32 0}
+!14 = metadata !{metadata !"index", i32 12, i32* @index_typeProxy,
metadata !15}
+!15 = metadata !{i32 0, i32 3, i32 1024, null}
+!16 = metadata !{metadata !"sArray", i32 12, [4 x i32]* @sArray_typeProxy,
metadata !17}
+!17 = metadata !{i32 5, i32 1, i32 1024, metadata !18}
+!18 = metadata !{i32 0, [4 x i32]* @sArray_typeProxy, i32 1, i1 false, i1
false, i32 0}
+!19 = metadata !{metadata !"ubInst", i32 13, [4 x %ubName]*
@ubInst_typeProxy, metadata !20, metadata !21}
+!20 = metadata !{i32 6, i32 0, i32 1024, null}
+!21 = metadata !{metadata !"ubName", metadata !20, metadata !"p",
metadata !22}
+!22 = metadata !{metadata !"", metadata !15}
+!23 = metadata !{metadata !"bufSamp1", i32 12, i32* @bufSamp1_typeProxy,
metadata !24}
+!24 = metadata !{i32 5, i32 3, i32 1024, metadata !25}
+!25 = metadata !{i32 0, i32* @bufSamp1_typeProxy, i32 5, i1 false, i1
false, i32 0}
+!26 = metadata !{metadata !"bufSamp2", i32 12, i32* @bufSamp2_typeProxy,
metadata !27}
+!27 = metadata !{i32 5, i32 3, i32 1024, metadata !28}
+!28 = metadata !{i32 0, i32* @bufSamp2_typeProxy, i32 5, i1 false, i1
false, i32 1}
+!29 = metadata !{metadata !"bufSamp3", i32 12, i32* @bufSamp3_typeProxy,
metadata !30}
+!30 = metadata !{i32 5, i32 3, i32 1024, metadata !31}
+!31 = metadata !{i32 0, i32* @bufSamp3_typeProxy, i32 5, i1 false, i1
false, i32 2}
+!32 = metadata !{metadata !"bufSamp4", i32 12, i32* @bufSamp4_typeProxy,
metadata !33}
+!33 = metadata !{i32 5, i32 3, i32 1024, metadata !34}
+!34 = metadata !{i32 1, i32* @bufSamp4_typeProxy, i32 5, i1 false, i1
false, i32 0}
+!35 = metadata !{metadata !"bufSamp5", i32 12, i32* @bufSamp5_typeProxy,
metadata !36}
+!36 = metadata !{i32 5, i32 3, i32 1024, metadata !37}
+!37 = metadata !{i32 1, i32* @bufSamp5_typeProxy, i32 5, i1 false, i1
false, i32 1}
+!38 = metadata !{metadata !"bufSamp6", i32 12, i32* @bufSamp6_typeProxy,
metadata !39}
+!39 = metadata !{i32 5, i32 3, i32 1024, metadata !40}
+!40 = metadata !{i32 1, i32* @bufSamp6_typeProxy, i32 5, i1 false, i1
false, i32 2}
+!41 = metadata !{metadata !"CA4", i32 12, i32* @CA4_typeProxy,
metadata !42}
+!42 = metadata !{i32 5, i32 3, i32 1024, metadata !43}
+!43 = metadata !{i32 0, i32* @CA4_typeProxy, i32 3, i1 true, i1 false, i32
0}
+!44 = metadata !{metadata !"CA5", i32 12, i32* @CA5_typeProxy,
metadata !45}
+!45 = metadata !{i32 5, i32 3, i32 1024, metadata !46}
+!46 = metadata !{i32 0, i32* @CA5_typeProxy, i32 3, i1 true, i1 true, i32
0}
+!47 = metadata !{metadata !"CA6", i32 12, i32* @CA6_typeProxy,
metadata !48}
+!48 = metadata !{i32 5, i32 3, i32 1024, metadata !49}
+!49 = metadata !{i32 0, i32* @CA6_typeProxy, i32 3, i1 true, i1 false, i32
1}
+!50 = metadata !{metadata !"CA7", i32 12, i32* @CA7_typeProxy,
metadata !51}
+!51 = metadata !{i32 5, i32 3, i32 1024, metadata !52}
+!52 = metadata !{i32 0, i32* @CA7_typeProxy, i32 3, i1 true, i1 false, i32
2}
+!53 = metadata !{metadata !"CA1", i32 12, i32* @CA1_typeProxy,
metadata !54}
+!54 = metadata !{i32 5, i32 3, i32 1024, metadata !55}
+!55 = metadata !{i32 1, i32* @CA1_typeProxy, i32 3, i1 true, i1 false, i32
0}
+!56 = metadata !{metadata !"CA2", i32 12, i32* @CA2_typeProxy,
metadata !57}
+!57 = metadata !{i32 5, i32 3, i32 1024, metadata !58}
+!58 = metadata !{i32 1, i32* @CA2_typeProxy, i32 3, i1 true, i1 false, i32
1}
+!59 = metadata !{metadata !"CA3", i32 12, i32* @CA3_typeProxy,
metadata !60}
+!60 = metadata !{i32 5, i32 3, i32 1024, metadata !61}
+!61 = metadata !{i32 1, i32* @CA3_typeProxy, i32 3, i1 true, i1 false, i32
2}
+!62 = metadata !{metadata !"samp2DMSA", i32 12, i32* @samp2DMSA_typeProxy,
metadata !63}
+!63 = metadata !{i32 5, i32 3, i32 1024, metadata !64}
+!64 = metadata !{i32 0, i32* @samp2DMSA_typeProxy, i32 1, i1 true, i1
false, i32 0}
+!65 = metadata !{metadata !"samp2DMSAi", i32 12, i32*
@samp2DMSAi_typeProxy, metadata !66}
+!66 = metadata !{i32 5, i32 3, i32 1024, metadata !67}
+!67 = metadata !{i32 0, i32* @samp2DMSAi_typeProxy, i32 1, i1 true, i1
false, i32 1}
+!68 = metadata !{metadata !"samp2DMSAu", i32 12, i32*
@samp2DMSAu_typeProxy, metadata !69}
+!69 = metadata !{i32 5, i32 3, i32 1024, metadata !70}
+!70 = metadata !{i32 0, i32* @samp2DMSAu_typeProxy, i32 1, i1 true, i1
false, i32 2}
+!71 = metadata !{metadata !"im2Di", i32 12, i32* @im2Di_typeProxy,
metadata !72}
+!72 = metadata !{i32 5, i32 3, i32 1024, metadata !73}
+!73 = metadata !{i32 25, i32* @im2Di_typeProxy, i32 1, i1 false, i1 false,
i32 1}
+!74 = metadata !{metadata !"P", i32 12, <2 x i32>* @P_typeProxy,
metadata !15}
+!75 = metadata !{metadata !"im2Du", i32 12, i32* @im2Du_typeProxy,
metadata !76}
+!76 = metadata !{i32 5, i32 3, i32 1024, metadata !77}
+!77 = metadata !{i32 34, i32* @im2Du_typeProxy, i32 1, i1 false, i1 false,
i32 2}
+!78 = metadata !{metadata !"im2Df", i32 12, i32* @im2Df_typeProxy,
metadata !79}
+!79 = metadata !{i32 5, i32 3, i32 1024, metadata !80}
+!80 = metadata !{i32 4, i32* @im2Df_typeProxy, i32 1, i1 false, i1 false,
i32 0}
+!81 = metadata !{metadata !"outInst", i32 16, %outName*
@outInst_typeProxy, metadata !82, metadata !83}
+!82 = metadata !{i32 0, i32 0, i32 1027, null, i32 0}
+!83 = metadata !{metadata !"outName", metadata !84, metadata !"color",
metadata !22}
+!84 = metadata !{i32 0, i32 0, i32 1024, null}
!85 = metadata !{i32 3}
Bottom IR:
; ModuleID = 'Glslang'
+%ubName = type { <2 x float> }
%outName = type { <4 x float> }
+@inf = global <2 x float> zeroinitializer
+@ing = global <2 x float> zeroinitializer
+@inch = global <2 x float> zeroinitializer
+@index = external addrspace(2) constant i32
+@sArray = external addrspace(1) constant [4 x i32]
+@ubInst = external addrspace(2) constant [4 x %ubName]
@outInst = global %outName zeroinitializer
@bufSamp1 = external addrspace(1) constant i32
@bufSamp2 = external addrspace(1) constant i32
@@ -554,140 +702,189 @@
@CA5 = external addrspace(1) constant i32
@CA6 = external addrspace(1) constant i32
@CA7 = external addrspace(1) constant i32
+@CA1 = external addrspace(1) constant i32
+@CA2 = external addrspace(1) constant i32
+@CA3 = external addrspace(1) constant i32
@samp2DMSA = external addrspace(1) constant i32
@samp2DMSAi = external addrspace(1) constant i32
@samp2DMSAu = external addrspace(1) constant i32
-@inf = global <2 x float> zeroinitializer
-@ing = global <2 x float> zeroinitializer
-@inch = global <2 x float> zeroinitializer
+@im2Di = external addrspace(1) constant i32
+@P = external addrspace(2) constant <2 x i32>
+@im2Du = external addrspace(1) constant i32
+@im2Df = external addrspace(1) constant i32
@gl_VertexID = global i32 0
@gl_InstanceID = global i32 0
define fastcc void @main() {
entry:
+ %0 = load <2 x float>* @inf, align 8
+ %1 = load <2 x float>* @ing, align 8
+ %2 = load <2 x float>* @inch, align 8
+ %p2 = call <2 x float> @llvm.gla.fFma.v2f32.v2f32.v2f32.v2f32(<2 x
float> %0, <2 x float> %1, <2 x float> %2), !gla.precision !85
+ %3 = load i32 addrspace(2)* @index, align 4, !gla.uniform !14
+ %4 = getelementptr [4 x i32] addrspace(1)* @sArray, i32 0, i32 %3
+ %5 = load i32 addrspace(1)* %4, align 4, !gla.uniform !16
+ %6 = getelementptr [4 x %ubName] addrspace(2)* @ubInst, i32 0, i32 %3,
i32 0
+ %7 = load <2 x float> addrspace(2)* %6, align 8, !gla.uniform !19
+ %8 = fptosi <2 x float> %0 to <2 x i32>, !gla.precision !85
+ %color3 = call <4 x float> @llvm.gla.fTexelGatherOffset.v4f32.v2f32(i32
2, i32 %5, i32 320, <2 x float> %7, i32 undef, float undef, <2 x
i32> %8), !gla.precision !85
+ %color5 = call <4 x float> @llvm.gla.fTexelGatherOffsets.v4f32.v2f32(i32
2, i32 %5, i32 8512, <2 x float> %p2, i32 undef, float undef, <2 x i32>
<i32 1, i32 1>, <2 x i32> <i32 2, i32 2>, <2 x i32> <i32 3, i32 3>, <2 x
i32> <i32 4, i32 4>), !gla.precision !85
+ %color6 = fadd <4 x float> %color3, %color5, !gla.precision !85
%gla_constGEP = getelementptr %outName* @outInst, i32 0, i32 0
- store <4 x float> zeroinitializer, <4 x float>* %gla_constGEP, align 16
- %0 = load i32 addrspace(1)* @bufSamp1, align 4, !gla.uniform !6
- %s12.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %0), !gla.precision !85
- %1 = sitofp i32 %s12.i to float, !gla.precision !85
- %2 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %1, <4 x
i32> zeroinitializer)
- %3 = load i32 addrspace(1)* @bufSamp2, align 4, !gla.uniform !9
- %s16.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %3), !gla.precision !85
- %4 = sitofp i32 %s16.i to float, !gla.precision !85
- %5 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %4, <4 x
i32> zeroinitializer)
- %v8.i = fmul <4 x float> %2, %5, !gla.precision !85
- %6 = load i32 addrspace(1)* @bufSamp3, align 4, !gla.uniform !12
- %s110.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %6), !gla.precision !85
- %7 = sitofp i32 %s110.i to float, !gla.precision !85
- %8 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %7, <4 x
i32> zeroinitializer)
- %v12.i = fmul <4 x float> %v8.i, %8, !gla.precision !85
- %9 = load i32 addrspace(1)* @bufSamp4, align 4, !gla.uniform !15
- %s114.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %9), !gla.precision !85
- %10 = sitofp i32 %s114.i to float, !gla.precision !85
+ store <4 x float> %color6, <4 x float>* %gla_constGEP, align 16
+ %9 = load i32 addrspace(1)* @bufSamp1, align 4, !gla.uniform !23
+ %s12.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %9), !gla.precision !85
+ %10 = sitofp i32 %s12.i to float, !gla.precision !85
%11 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %10, <4
x i32> zeroinitializer)
- %v16.i = fmul <4 x float> %v12.i, %11, !gla.precision !85
- %12 = load i32 addrspace(1)* @bufSamp5, align 4, !gla.uniform !18
- %s118.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %12), !gla.precision !85
- %13 = sitofp i32 %s118.i to float, !gla.precision !85
+ %12 = load i32 addrspace(1)* @bufSamp2, align 4, !gla.uniform !26
+ %s16.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %12), !gla.precision !85
+ %13 = sitofp i32 %s16.i to float, !gla.precision !85
%14 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %13, <4
x i32> zeroinitializer)
- %v20.i = fmul <4 x float> %v16.i, %14, !gla.precision !85
- %15 = load i32 addrspace(1)* @bufSamp6, align 4, !gla.uniform !21
- %s122.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %15), !gla.precision !85
- %16 = sitofp i32 %s122.i to float, !gla.precision !85
+ %v8.i = fmul <4 x float> %11, %14, !gla.precision !85
+ %15 = load i32 addrspace(1)* @bufSamp3, align 4, !gla.uniform !29
+ %s110.i = call i32 @llvm.gla.queryTextureSizeNoLod.i32(i32 0,
i32 %15), !gla.precision !85
+ %16 = sitofp i32 %s110.i to float, !gla.precision !85
%17 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %16, <4
x i32> zeroinitializer)
- %v24.i = fmul <4 x float> %v20.i, %17, !gla.precision !85
- %v25.i = call <4 x float>
@llvm.gla.fTexelFetchOffset.v4f32.i32.i32.i32(i32 0, i32 %0, i32 32,
i32 %s122.i, i32 undef, float undef, i32 undef), !gla.precision !85
+ %v12.i = fmul <4 x float> %v8.i, %17, !gla.precision !85
+ %18 = load i32 addrspace(1)* @bufSamp4, align 4, !gla.uniform !32
+ %s114.i = call i32 @llvm.gla.queryImageSize.i32(i32 0,
i32 %18), !gla.precision !85
+ %19 = sitofp i32 %s114.i to float, !gla.precision !85
+ %20 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %19, <4
x i32> zeroinitializer)
+ %v16.i = fmul <4 x float> %v12.i, %20, !gla.precision !85
+ %21 = load i32 addrspace(1)* @bufSamp5, align 4, !gla.uniform !35
+ %s118.i = call i32 @llvm.gla.queryImageSize.i32(i32 0,
i32 %21), !gla.precision !85
+ %22 = sitofp i32 %s118.i to float, !gla.precision !85
+ %23 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %22, <4
x i32> zeroinitializer)
+ %v20.i = fmul <4 x float> %v16.i, %23, !gla.precision !85
+ %24 = load i32 addrspace(1)* @bufSamp6, align 4, !gla.uniform !38
+ %s122.i = call i32 @llvm.gla.queryImageSize.i32(i32 0,
i32 %24), !gla.precision !85
+ %25 = sitofp i32 %s122.i to float, !gla.precision !85
+ %26 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %25, <4
x i32> zeroinitializer)
+ %v24.i = fmul <4 x float> %v20.i, %26, !gla.precision !85
+ %v25.i = call <4 x float>
@llvm.gla.fTexelFetchOffset.v4f32.i32.i32.i32(i32 0, i32 %9, i32 32,
i32 %s122.i, i32 undef, float undef, i32 undef), !gla.precision !85
%v26.i = fmul <4 x float> %v25.i, %v24.i, !gla.precision !85
- %v27.i = call <4 x i32> @llvm.gla.texelFetchOffset.v4i32.i32.i32.i32(i32
0, i32 %3, i32 32, i32 %s122.i, i32 undef, float undef, i32
undef), !gla.precision !85
- %18 = sitofp <4 x i32> %v27.i to <4 x float>, !gla.precision !85
- %v28.i = fmul <4 x float> %18, %v26.i, !gla.precision !85
- %v29.i = call <4 x i32> @llvm.gla.texelFetchOffset.v4i32.i32.i32.i32(i32
0, i32 %6, i32 32, i32 %s122.i, i32 undef, float undef, i32
undef), !gla.precision !85
- %19 = uitofp <4 x i32> %v29.i to <4 x float>, !gla.precision !85
- %v30.i = fmul <4 x float> %19, %v28.i, !gla.precision !85
- %gla_constGEP22 = getelementptr %outName* @outInst, i32 0, i32 0
- store <4 x float> %v30.i, <4 x float>* %gla_constGEP22, align 16
- %20 = load i32 addrspace(1)* @CA4, align 4, !gla.uniform !24
- %iv1.i3 = call <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32 4,
i32 %20, i32 1), !gla.precision !85
- %21 = load i32 addrspace(1)* @CA5, align 4, !gla.uniform !27
- %iv3.i4 = call <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32 4,
i32 %21, i32 1), !gla.precision !85
- %iv4.i5 = add <3 x i32> %iv1.i3, %iv3.i4, !gla.precision !85
- %22 = load i32 addrspace(1)* @CA6, align 4, !gla.uniform !30
- %iv5.i6 = call <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32 4,
i32 %22, i32 1), !gla.precision !85
- %iv6.i7 = add <3 x i32> %iv4.i5, %iv5.i6, !gla.precision !85
- %23 = load i32 addrspace(1)* @CA7, align 4, !gla.uniform !33
- %iv7.i = call <3 x i32> @llvm.gla.queryTextureSize.v3i32(i32 4, i32 %23,
i32 1), !gla.precision !85
- %iv8.i = add <3 x i32> %iv6.i7, %iv7.i, !gla.precision !85
- %24 = sitofp <3 x i32> %iv8.i to <3 x float>, !gla.precision !85
- %25 = call <4 x float>
@llvm.gla.fMultiInsert.v4f32.v4f32.v3f32.v3f32.v3f32.f32(<4 x float> undef,
i32 15, <3 x float> %24, i32 0, <3 x float> %24, i32 1, <3 x float> %24,
i32 2, float 1.000000e+00, i32 0)
- %v11.i9 = call <4 x float> @llvm.gla.fTextureSample.v4f32.v4f32(i32 4,
i32 %20, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
- %v12.i10 = fmul <4 x float> %v11.i9, %25, !gla.precision !85
- %v13.i11 = call float @llvm.gla.fTextureSampleLodRefZ.f32.v4f32(i32 4,
i32 %21, i32 154, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 3.000000e+00, float
undef), !gla.precision !85
- %26 = call <4 x float>
@llvm.gla.fSwizzle.v4f32.f32.v4i32(float %v13.i11, <4 x i32>
zeroinitializer)
- %v14.i12 = fmul <4 x float> %26, %v12.i10, !gla.precision !85
- %v15.i = call <4 x i32> @llvm.gla.textureSample.v4i32.v4f32(i32 4,
i32 %22, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
- %27 = sitofp <4 x i32> %v15.i to <4 x float>, !gla.precision !85
- %v16.i13 = fmul <4 x float> %27, %v14.i12, !gla.precision !85
- %v17.i = call <4 x i32> @llvm.gla.textureSample.v4i32.v4f32(i32 4,
i32 %23, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>), !gla.precision !85
- %28 = uitofp <4 x i32> %v17.i to <4 x float>, !gla.precision !85
- %v18.i = fmul <4 x float> %28, %v16.i13, !gla.precision !85
- %v19.i = call <4 x float>
@llvm.gla.fTextureSampleLodRefZ.v4f32.v4f32(i32 4, i32 %20, i32 148, <4 x
float> <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float
5.000000e-01>, float 0x3FCEB851E0000000, float undef), !gla.precision !85
- %v20.i14 = fmul <4 x float> %v19.i, %v18.i, !gla.precision !85
- %v21.i = call <4 x i32> @llvm.gla.textureSampleLodRefZ.v4i32.v4f32(i32
4, i32 %22, i32 148, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 0x3FD0A3D700000000, float
undef), !gla.precision !85
- %29 = sitofp <4 x i32> %v21.i to <4 x float>, !gla.precision !85
- %v22.i = fmul <4 x float> %29, %v20.i14, !gla.precision !85
- %v23.i = call <4 x i32> @llvm.gla.textureSampleLodRefZ.v4i32.v4f32(i32
4, i32 %23, i32 148, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float 0x3FD147AE20000000, float
undef), !gla.precision !85
- %30 = uitofp <4 x i32> %v23.i to <4 x float>, !gla.precision !85
- %v24.i15 = fmul <4 x float> %30, %v22.i, !gla.precision !85
- %v25.i16 = call <4 x float>
@llvm.gla.fTextureSampleLodRefZOffsetGrad.v4f32.v4f32.i32.v3f32.v3f32(i32
4, i32 %20, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, float undef, float undef, i32
undef, <3 x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000,
float 0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
- %v26.i17 = fmul <4 x float> %v25.i16, %v24.i15, !gla.precision !85
- %v27.i18 = call <4 x i32>
@llvm.gla.textureSampleLodRefZOffsetGrad.v4i32.v4f32.i32.v3f32.v3f32(i32 4,
i32 %22, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, float undef, float undef, i32 undef, <3
x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float
0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
- %31 = sitofp <4 x i32> %v27.i18 to <4 x float>, !gla.precision !85
- %v28.i19 = fmul <4 x float> %31, %v26.i17, !gla.precision !85
- %v29.i20 = call <4 x i32>
@llvm.gla.textureSampleLodRefZOffsetGrad.v4i32.v4f32.i32.v3f32.v3f32(i32 4,
i32 %23, i32 16, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, float undef, float undef, i32 undef, <3
x float> <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float
0x3FB99999A0000000>, <3 x float> <float 0x3FC99999A0000000, float
0x3FC99999A0000000, float 0x3FC99999A0000000>), !gla.precision !85
- %32 = uitofp <4 x i32> %v29.i20 to <4 x float>, !gla.precision !85
- %v30.i21 = fmul <4 x float> %32, %v28.i19, !gla.precision !85
- %v31.i = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %20, i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
- %v32.i = fmul <4 x float> %v31.i, %v30.i21, !gla.precision !85
- %v33.i = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %20, i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, i32 2, float
undef), !gla.precision !85
- %v34.i = fmul <4 x float> %v33.i, %v32.i, !gla.precision !85
- %v35.i = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4,
i32 %22, i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
- %33 = sitofp <4 x i32> %v35.i to <4 x float>, !gla.precision !85
- %v36.i = fmul <4 x float> %33, %v34.i, !gla.precision !85
- %v37.i = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4,
i32 %22, i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, i32 1, float
undef), !gla.precision !85
- %34 = sitofp <4 x i32> %v37.i to <4 x float>, !gla.precision !85
- %v38.i = fmul <4 x float> %34, %v36.i, !gla.precision !85
- %v39.i = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4,
i32 %23, i32 80, <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, i32 undef, float
undef), !gla.precision !85
- %35 = uitofp <4 x i32> %v39.i to <4 x float>, !gla.precision !85
- %v40.i = fmul <4 x float> %35, %v38.i, !gla.precision !85
- %v41.i = call <4 x i32> @llvm.gla.texelGather.v4i32.v4f32(i32 4,
i32 %23, i32 1104, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, i32 0, float
undef), !gla.precision !85
- %36 = uitofp <4 x i32> %v41.i to <4 x float>, !gla.precision !85
- %v42.i = fmul <4 x float> %36, %v40.i, !gla.precision !85
- %v43.i = call <4 x float> @llvm.gla.fTexelGather.v4f32.v4f32(i32 4,
i32 %21, i32 2136, <4 x float> <float 5.000000e-01, float 5.000000e-01,
float 5.000000e-01, float 5.000000e-01>, i32 undef, float
2.500000e+00), !gla.precision !85
- %v44.i = fmul <4 x float> %v43.i, %v42.i, !gla.precision !85
- %37 = fadd <4 x float> %v30.i, %v44.i, !gla.precision !85
+ %v27.i = call <4 x i32> @llvm.gla.texelFetchOffset.v4i32.i32.i32.i32(i32
0, i32 %12, i32 32, i32 %s122.i, i32 undef, float undef, i32
undef), !gla.precision !85
+ %27 = sitofp <4 x i32> %v27.i to <4 x float>, !gla.precision !85
+ %v28.i = fmul <4 x float> %27, %v26.i, !gla.precision !85
+ %v29.i = call <4 x i32> @llvm.gla.texelFetchOffset.v4i32.i32.i32.i32(i32
0, i32 %15, i32 32, i32 %s122.i, i32 undef, float undef, i32
undef), !gla.precision !85
+ %28 = uitofp <4 x i32> %v29.i to <4 x float>, !gla.precision !85
+ %v30.i = fmul <4 x float> %28, %v28.i, !gla.precision !85
+ %29 = fadd <4 x float> %color6, %v30.i, !gla.precision !85
%gla_constGEP23 = getelementptr %outName* @outInst, i32 0, i32 0
- store <4 x float> %37, <4 x float>* %gla_constGEP23, align 16
- %38 = load i32 addrspace(1)* @samp2DMSA, align 4, !gla.uniform !36
- %iv1.i = call <3 x i32> @llvm.gla.queryTextureSizeNoLod.v3i32(i32 6,
i32 %38), !gla.precision !85
- %39 = load i32 addrspace(1)* @samp2DMSAi, align 4, !gla.uniform !39
- %iv3.i = call <3 x i32> @llvm.gla.queryTextureSizeNoLod.v3i32(i32 6,
i32 %39), !gla.precision !85
+ store <4 x float> %29, <4 x float>* %gla_constGEP23, align 16
***The diff for this file has been truncated for email.***