[lunarglass] r1111 committed - Full stack: Make recently AEP tests get correct results: BoundingBox, ...

5 views
Skip to first unread message

lunar...@googlecode.com

unread,
Aug 21, 2015, 11:27:28 AM8/21/15
to lunargla...@googlegroups.com
Revision: 1111
Author: jo...@lunarg.com
Date: Fri Aug 21 15:27:04 2015 UTC
Log: Full stack: Make recently AEP tests get correct results:
BoundingBox, 'patch' blocks, and 3 new gl consts.
https://code.google.com/p/lunarglass/source/detail?r=1111

Modified:
/trunk/Backends/GLSL/BottomToGLSL.cpp
/trunk/Core/metadata.h
/trunk/Frontends/glslang/GlslangToTopVisitor.cpp
/trunk/Standalone/main.cpp
/trunk/test/aep.frag
/trunk/test/aep.geom
/trunk/test/aep.tesc
/trunk/test/aep.tese
/trunk/test/aep.vert
/trunk/test/baseResults/aep.frag.out
/trunk/test/baseResults/aep.tesc.out
/trunk/test/baseResults/aep.tese.out

=======================================
--- /trunk/Backends/GLSL/BottomToGLSL.cpp Thu Aug 20 20:53:17 2015 UTC
+++ /trunk/Backends/GLSL/BottomToGLSL.cpp Fri Aug 21 15:27:04 2015 UTC
@@ -224,6 +224,7 @@
case gla::EmbViewportIndex: return "gl_ViewportIndex";
case gla::EmbTessLevelOuter:
return "gl_TessLevelOuter";
case gla::EmbTessLevelInner:
return "gl_TessLevelInner";
+ case gla::EmbBoundingBox:
return "gl_BoundingBoxOES";

case gla::EmbSampleMask: return "gl_SampleMask";
case gla::EmbFragColor: return "gl_FragColor";
@@ -4017,17 +4018,25 @@
type = proxyType;

// emit interpolation qualifier, if appropriate
- EVariableQualifier qualifier;
+ EVariableQualifier qualifier = EVQUndef;
switch (ioKind) {
- case EMioPipeIn: qualifier = EVQInput; break;
- case EMioPipeOut: qualifier = EVQOutput; break;
- default: qualifier = EVQUndef; break;
+ case EMioPipeIn:
+ case EMioPipeInBlock:
+ qualifier = EVQInput;
+ break;
+ case EMioPipeOut:
+ case EMioPipeOutBlock:
+ qualifier = EVQOutput;
+ break;
+ default:
+ break;
}
if (qualifier != EVQUndef) {
EInterpolationMethod interpMethod;
EInterpolationLocation interpLocation;
CrackInterpolationMode(interpMode, interpMethod,
interpLocation);
- emitGlaInterpolationQualifier(qualifier, interpMethod,
interpLocation);
+ if (! metaType.block || (metaType.block && interpMethod ==
EIMPatch))
+ emitGlaInterpolationQualifier(qualifier, interpMethod,
interpLocation);
}
} else {
if (! CrackAggregateMd(mdNode, metaType.name, typeLayout,
metaType.precision, location, metaType.mdSampler, metaType.builtIn)) {
=======================================
--- /trunk/Core/metadata.h Wed Aug 5 20:31:54 2015 UTC
+++ /trunk/Core/metadata.h Fri Aug 21 15:27:04 2015 UTC
@@ -118,7 +118,7 @@
// later by a linker
// - location is < MaxUserLayoutLocation for user-assigned
locations
// - the intrinsic's slot can be different when reading a single
slot out of the middle of a large input/output
-// - interpMode is present for EMioPipeOut as an integer encoded
for MakeInterpolationMode() and CrackInterpolationMode()
+// - interpMode is present as an integer encoded for
MakeInterpolationMode() and CrackInterpolationMode()
// it can also be present if there is an EMdBuiltIn, and will be
-1 if there is no interpMode
// - EMdBuiltIn, if present, says what built-in variable is being
represented. It is optional.
//
@@ -410,6 +410,7 @@
EmbSamplePosition,
EmbSampleMask,
EmbHelperInvocation,
+ EmbBoundingBox,
EmbCount
};

=======================================
--- /trunk/Frontends/glslang/GlslangToTopVisitor.cpp Thu Aug 20 20:53:17
2015 UTC
+++ /trunk/Frontends/glslang/GlslangToTopVisitor.cpp Fri Aug 21 15:27:04
2015 UTC
@@ -450,6 +450,7 @@
case glslang::EbvSamplePosition: return gla::EmbSamplePosition;
case glslang::EbvSampleMask: return gla::EmbSampleMask;
case glslang::EbvHelperInvocation: return gla::EmbHelperInvocation;
+ case glslang::EbvBoundingBox: return gla::EmbBoundingBox;
default:
gla::UnsupportedFunctionality("built in variable",
gla::EATContinue);
return gla::EmbNone;
=======================================
--- /trunk/Standalone/main.cpp Fri Aug 7 05:04:58 2015 UTC
+++ /trunk/Standalone/main.cpp Fri Aug 21 15:27:04 2015 UTC
@@ -213,6 +213,10 @@
resources.maxAtomicCounterBufferSize = 16384;
resources.maxTransformFeedbackBuffers = 4;
resources.maxTransformFeedbackInterleavedComponents = 64;
+ resources.maxCullDistances = 8;
+ resources.maxCombinedClipAndCullDistances = 8;
+ resources.maxSamples = 4;
+
resources.limits.nonInductiveForLoops = 1;
resources.limits.whileLoops = 1;
resources.limits.doWhileLoops = 1;
=======================================
--- /trunk/test/aep.frag Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/aep.frag Fri Aug 21 15:27:04 2015 UTC
@@ -5,44 +5,47 @@
#extension GL_ANDROID_extension_pack_es31a : enable

// - GL_KHR_blend_equation_advanced
-// - GL_OES_sample_variables
+// + GL_OES_sample_variables
// - GL_OES_shader_multisample_interpolation
-// - GL_EXT_geometry_shader
+// + GL_EXT_geometry_shader
// + GL_EXT_shader_io_blocks

in inName {
vec4 color;
} inInst;

-//layout(location = 0) out vec4 color; // - more than one out, if no
location?
+out vec4 color;

-void foo_GS();
+int foo_GS();
void goodSample();

void main()
{
-// - color = inInst.color;
- foo_GS();
+ color = inInst.color;
+ color *= float(foo_GS());
goodSample();
}

-// - GL_OES_geometry_shader
+// GL_OES_geometry_shader

-void foo_GS()
+highp int foo_GS()
{
- highp int l = gl_Layer; // - consume both these ...
+ highp int l = gl_Layer;
highp int p = gl_PrimitiveID;
+ return l + p;
}


-// - GL_OES_sample_variables
+// GL_OES_sample_variables

void goodSample()
{
- lowp int a1 = gl_SampleID; // - consume all these
built-ins...
+ lowp int a1 = gl_SampleID;
mediump vec2 a2 = gl_SamplePosition;
highp int a3 = gl_SampleMaskIn[0];
gl_SampleMask[0] = a3;
mediump int n1 = gl_MaxSamples;
mediump int n2 = gl_NumSamples;
+ gl_SampleMask[0] += n1 + n2 + a1;
+ color.xy += a2;
}
=======================================
--- /trunk/test/aep.geom Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/aep.geom Fri Aug 21 15:27:04 2015 UTC
@@ -1,7 +1,7 @@
#version 310 es

-// + GL_EXT_geometry_shader
-// + GL_EXT_geometry_point_size
+// GL_EXT_geometry_shader
+// GL_EXT_geometry_point_size

#extension GL_ANDROID_extension_pack_es31a : enable

=======================================
--- /trunk/test/aep.tesc Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/aep.tesc Fri Aug 21 15:27:04 2015 UTC
@@ -2,9 +2,9 @@

#extension GL_ANDROID_extension_pack_es31a : enable

-// - GL_EXT_tessellation_shader
-// + GL_EXT_tessellation_point_size
-// + GL_OES_primitive_bounding_box
+// GL_EXT_tessellation_shader: patch
+// GL_EXT_tessellation_point_size
+// GL_OES_primitive_bounding_box

layout(vertices = 4) out;
int outa[gl_out.length()];
@@ -13,7 +13,7 @@

void bb();
void pointSize();
-void foop();
+float foop();

void main()
{
@@ -31,7 +31,8 @@
gl_TessLevelInner[1] = 1.3;
bb();
pointSize();
- foop();
+ patchOut = vec4(0.5);
+ patchOut *= foop();
}

in vec2 inb[];
@@ -55,24 +56,30 @@

#extension GL_OES_tessellation_point_size : enable

+// GL_EXT_tessellation_point_size
+
void pointSize()
{
gl_out[1].gl_PointSize = gl_in[1].gl_PointSize;
}

// for testing with gpu_shader5
+in vec3 inv[];
precise vec3 pv3;

-void foop()
+float foop()
{
precise float d;

+ pv3 = inv[3];
pv3 *= pv3;
- // - pv3 = fma(pv3, pv3, pv3);
- // - d = fma(d, d, d);
+ pv3 = fma(pv3, pv3, pv3);
+ d = fma(pv3.x, pv3.y, pv3.z);
+
+ return d;
}

-// - GL_OES_primitive_bounding_box
+// GL_OES_primitive_bounding_box

void bb()
{
=======================================
--- /trunk/test/aep.tese Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/aep.tese Fri Aug 21 15:27:04 2015 UTC
@@ -2,8 +2,8 @@

#extension GL_ANDROID_extension_pack_es31a : enable

-// - GL_EXT_tessellation_shader
-// + GL_EXT_tessellation_point_size
+// GL_EXT_tessellation_shader
+// GL_EXT_tessellation_point_size

layout(quads, ccw) in; // - no ccw

=======================================
--- /trunk/test/aep.vert Thu Aug 20 01:05:24 2015 UTC
+++ /trunk/test/aep.vert Fri Aug 21 15:27:04 2015 UTC
@@ -2,12 +2,12 @@

#extension GL_ANDROID_extension_pack_es31a : enable

-// + GL_OES_shader_image_atomic
-// + GL_OES_texture_storage_multisample_2d_array
-// + GL_EXT_gpu_shader5
-// + GL_EXT_shader_io_blocks
-// + GL_EXT_texture_buffer
-// + GL_EXT_texture_cube_map_array
+// GL_OES_shader_image_atomic
+// GL_OES_texture_storage_multisample_2d_array
+// GL_EXT_gpu_shader5
+// GL_EXT_shader_io_blocks
+// GL_EXT_texture_buffer
+// GL_EXT_texture_cube_map_array

uniform sampler2D sArray[4];
uniform ubName { vec2 p; } ubInst[4];
@@ -42,7 +42,7 @@
goodImageAtom();
}

-// + GL_EXT_texture_buffer
+// GL_EXT_texture_buffer

uniform highp samplerBuffer bufSamp1;
uniform highp isamplerBuffer bufSamp2;
@@ -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;
@@ -125,7 +125,7 @@
return v;
}

-// + GL_OES_texture_storage_multisample_2d_array
+// GL_OES_texture_storage_multisample_2d_array

uniform highp sampler2DMSArray samp2DMSA;
uniform highp isampler2DMSArray samp2DMSAi;
@@ -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;
=======================================
--- /trunk/test/baseResults/aep.frag.out Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/baseResults/aep.frag.out Fri Aug 21 15:27:04 2015 UTC
@@ -4,6 +4,8 @@

%inName = type { <4 x float> }

+@color = global <4 x float> zeroinitializer
+@inInst = global %inName zeroinitializer
@gl_Layer = global i32 0
@gl_PrimitiveID = global i32 0
@gl_SampleID = global i32 0
@@ -11,14 +13,23 @@
@gl_SampleMaskIn = global [1 x i32] zeroinitializer
@gl_SampleMask = global [1 x i32] zeroinitializer
@gl_NumSamples = external addrspace(2) constant i32
-@inInst = global %inName zeroinitializer

define fastcc void @main() {
entry:
br label %mainBody

mainBody: ; preds = %entry
- call void @"foo_GS("()
+ %color = load <4 x float>* getelementptr inbounds (%inName* @inInst, i32
0, i32 0)
+ store <4 x float> %color, <4 x float>* @color
+ %0 = call i32 @"foo_GS("()
+ %1 = sitofp i32 %0 to float, !gla.precision !23
+ %2 = load <4 x float>* @color
+ %3 = insertelement <4 x float> undef, float %1, i32 0, !gla.precision !23
+ %4 = insertelement <4 x float> %3, float %1, i32 1, !gla.precision !23
+ %5 = insertelement <4 x float> %4, float %1, i32 2, !gla.precision !23
+ %6 = insertelement <4 x float> %5, float %1, i32 3, !gla.precision !23
+ %color1 = fmul <4 x float> %2, %6, !gla.precision !23
+ store <4 x float> %color1, <4 x float>* @color
call void @"goodSample("()
br label %stage-epilogue

@@ -30,7 +41,7 @@
}

; Function Attrs: alwaysinline
-define internal fastcc void @"foo_GS("() #0 {
+define internal fastcc i32 @"foo_GS("() #0 {
entry:
%p = alloca i32
%l = alloca i32
@@ -38,7 +49,13 @@
store i32 %l1, i32* %l
%p2 = load i32* @gl_PrimitiveID
store i32 %p2, i32* %p
- ret void
+ %0 = load i32* %l
+ %1 = load i32* %p
+ %2 = add i32 %0, %1, !gla.precision !23
+ ret i32 %2
+
+post-return: ; No predecessors!
+ unreachable
}

; Function Attrs: alwaysinline
@@ -57,41 +74,65 @@
store i32 %a33, i32* %a3
%0 = load i32* %a3
store i32 %0, i32* getelementptr inbounds ([1 x i32]* @gl_SampleMask,
i32 0, i32 0)
- store i32 0, i32* %n1
- %n24 = load i32 addrspace(2)* @gl_NumSamples, !gla.uniform !19
+ store i32 4, i32* %n1
+ %n24 = load i32 addrspace(2)* @gl_NumSamples, !gla.uniform !21
store i32 %n24, i32* %n2
+ %1 = load i32* %n1
+ %2 = load i32* %n2
+ %3 = add i32 %1, %2, !gla.precision !24
+ %4 = load i32* %a1
+ %5 = add i32 %3, %4, !gla.precision !24
+ %6 = load i32* getelementptr inbounds ([1 x i32]* @gl_SampleMask, i32 0,
i32 0)
+ %7 = add i32 %6, %5, !gla.precision !23
+ store i32 %7, i32* getelementptr inbounds ([1 x i32]* @gl_SampleMask,
i32 0, i32 0)
+ %8 = load <2 x float>* %a2
+ %9 = load <4 x float>* @color
+ %10 = extractelement <4 x float> %9, i32 0, !gla.precision !23
+ %11 = insertelement <2 x float> undef, float %10, i32
0, !gla.precision !23
+ %12 = extractelement <4 x float> %9, i32 1, !gla.precision !23
+ %13 = insertelement <2 x float> %11, float %12, i32 1, !gla.precision !23
+ %14 = fadd <2 x float> %13, %8, !gla.precision !23
+ %15 = load <4 x float>* @color
+ %16 = extractelement <2 x float> %14, i32 0
+ %17 = insertelement <4 x float> %15, float %16, i32 0
+ %18 = extractelement <2 x float> %14, i32 1
+ %color = insertelement <4 x float> %17, float %18, i32 1
+ store <4 x float> %color, <4 x float>* @color
ret void
}

attributes #0 = { alwaysinline }

!gla.entrypoint = !{!0}
-!gla.inputs = !{!1, !3, !5, !7, !9, !11}
-!gla.outputs = !{!17}
-!gla.uniforms = !{!19}
-!gla.noStaticUse = !{!11}
+!gla.outputs = !{!1, !3}
+!gla.inputs = !{!5, !11, !13, !15, !17, !19}
+!gla.uniforms = !{!21}

!0 = metadata !{metadata !"main", i32 15}
-!1 = metadata !{metadata !"gl_Layer", i32 1, i32* @gl_Layer_typeProxy,
metadata !2}
-!2 = metadata !{i32 0, i32 3, i32 1024, null, i32 0, i32 32}
-!3 = metadata !{metadata !"gl_PrimitiveID", i32 1, i32*
@gl_PrimitiveID_typeProxy, metadata !4}
-!4 = metadata !{i32 0, i32 3, i32 1025, null, i32 0, i32 31}
-!5 = metadata !{metadata !"gl_SampleID", i32 1, i32*
@gl_SampleID_typeProxy, metadata !6}
-!6 = metadata !{i32 0, i32 1, i32 1026, null, i32 0, i32 46}
-!7 = metadata !{metadata !"gl_SamplePosition", i32 1, <2 x float>*
@gl_SamplePosition_typeProxy, metadata !8}
-!8 = metadata !{i32 0, i32 2, i32 1027, null, i32 1, i32 47}
-!9 = metadata !{metadata !"gl_SampleMaskIn", i32 1, [1 x i32]*
@gl_SampleMaskIn_typeProxy, metadata !10}
-!10 = metadata !{i32 0, i32 3, i32 1028, null, i32 0, i32 48}
-!11 = metadata !{metadata !"inInst", i32 17, %inName* @inInst_typeProxy,
metadata !12, metadata !13}
-!12 = metadata !{i32 0, i32 0, i32 1030, null, i32 0}
-!13 = metadata !{metadata !"inName", metadata !14, metadata !"color",
metadata !15}
-!14 = metadata !{i32 0, i32 0, i32 1024, null}
-!15 = metadata !{metadata !"", metadata !16}
-!16 = metadata !{i32 0, i32 3, i32 1024, null}
-!17 = metadata !{metadata !"gl_SampleMask", i32 7, [1 x i32]*
@gl_SampleMask_typeProxy, metadata !18}
-!18 = metadata !{i32 0, i32 3, i32 1029, null, i32 0, i32 48}
-!19 = metadata !{metadata !"gl_NumSamples", i32 12, i32*
@gl_NumSamples_typeProxy, metadata !20}
-!20 = metadata !{i32 0, i32 1, i32 1024, null}
+!1 = metadata !{metadata !"color", i32 7, <4 x float>* @color_typeProxy,
metadata !2}
+!2 = metadata !{i32 0, i32 3, i32 1024, null, i32 0}
+!3 = metadata !{metadata !"gl_SampleMask", i32 7, [1 x i32]*
@gl_SampleMask_typeProxy, metadata !4}
+!4 = metadata !{i32 0, i32 3, i32 1031, null, i32 0, i32 48}
+!5 = metadata !{metadata !"inInst", i32 17, %inName* @inInst_typeProxy,
metadata !6, metadata !7}
+!6 = metadata !{i32 0, i32 0, i32 1025, null, i32 0}
+!7 = metadata !{metadata !"inName", metadata !8, metadata !"color",
metadata !9}
+!8 = metadata !{i32 0, i32 0, i32 1024, null}
+!9 = metadata !{metadata !"", metadata !10}
+!10 = metadata !{i32 0, i32 3, i32 1024, null}
+!11 = metadata !{metadata !"gl_Layer", i32 1, i32* @gl_Layer_typeProxy,
metadata !12}
+!12 = metadata !{i32 0, i32 3, i32 1026, null, i32 0, i32 32}
+!13 = metadata !{metadata !"gl_PrimitiveID", i32 1, i32*
@gl_PrimitiveID_typeProxy, metadata !14}
+!14 = metadata !{i32 0, i32 3, i32 1027, null, i32 0, i32 31}
+!15 = metadata !{metadata !"gl_SampleID", i32 1, i32*
@gl_SampleID_typeProxy, metadata !16}
+!16 = metadata !{i32 0, i32 1, i32 1028, null, i32 0, i32 46}
+!17 = metadata !{metadata !"gl_SamplePosition", i32 1, <2 x float>*
@gl_SamplePosition_typeProxy, metadata !18}
+!18 = metadata !{i32 0, i32 2, i32 1029, null, i32 1, i32 47}
+!19 = metadata !{metadata !"gl_SampleMaskIn", i32 1, [1 x i32]*
@gl_SampleMaskIn_typeProxy, metadata !20}
+!20 = metadata !{i32 0, i32 3, i32 1030, null, i32 0, i32 48}
+!21 = metadata !{metadata !"gl_NumSamples", i32 12, i32*
@gl_NumSamples_typeProxy, metadata !22}
+!22 = metadata !{i32 0, i32 1, i32 1024, null}
+!23 = metadata !{i32 3}
+!24 = metadata !{i32 2}


Bottom IR:
@@ -99,20 +140,44 @@

%inName = type { <4 x float> }

+@color = global <4 x float> zeroinitializer
+@inInst = global %inName zeroinitializer
@gl_Layer = global i32 0
@gl_PrimitiveID = global i32 0
@gl_SampleID = global i32 0
@gl_SamplePosition = global <2 x float> zeroinitializer
@gl_SampleMaskIn = global [1 x i32] zeroinitializer
@gl_SampleMask = global [1 x i32] zeroinitializer
-@inInst = global %inName zeroinitializer
+@gl_NumSamples = external addrspace(2) constant i32

define fastcc void @main() {
entry:
- %gla_constGEP = getelementptr [1 x i32]* @gl_SampleMaskIn, i32 0, i32 0
- %a33.i = load i32* %gla_constGEP, align 4
- %gla_constGEP1 = getelementptr [1 x i32]* @gl_SampleMask, i32 0, i32 0
- store i32 %a33.i, i32* %gla_constGEP1, align 4
+ %gla_constGEP = getelementptr %inName* @inInst, i32 0, i32 0
+ %color = load <4 x float>* %gla_constGEP, align 16
+ store <4 x float> %color, <4 x float>* @color, align 16
+ %l1.i = load i32* @gl_Layer, align 4
+ %p2.i = load i32* @gl_PrimitiveID, align 4
+ %0 = add i32 %p2.i, %l1.i, !gla.precision !23
+ %1 = sitofp i32 %0 to float, !gla.precision !23
+ %2 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %1, <4 x
i32> zeroinitializer)
+ %color1 = fmul <4 x float> %color, %2, !gla.precision !23
+ %3 = call <2 x float> @llvm.gla.fSwizzle.v2f32.v4f32.v2i32(<4 x
float> %color1, <2 x i32> <i32 0, i32 1>)
+ store <4 x float> %color1, <4 x float>* @color, align 16
+ %a11.i = load i32* @gl_SampleID, align 4
+ %a22.i = load <2 x float>* @gl_SamplePosition, align 8
+ %gla_constGEP2 = getelementptr [1 x i32]* @gl_SampleMaskIn, i32 0, i32 0
+ %a33.i = load i32* %gla_constGEP2, align 4
+ %gla_constGEP3 = getelementptr [1 x i32]* @gl_SampleMask, i32 0, i32 0
+ store i32 %a33.i, i32* %gla_constGEP3, align 4
+ %n24.i = load i32 addrspace(2)* @gl_NumSamples, align 4, !gla.uniform !21
+ %4 = add i32 %a11.i, 4, !gla.precision !24
+ %5 = add i32 %4, %a33.i, !gla.precision !24
+ %6 = add i32 %5, %n24.i, !gla.precision !23
+ %gla_constGEP4 = getelementptr [1 x i32]* @gl_SampleMask, i32 0, i32 0
+ store i32 %6, i32* %gla_constGEP4, align 4
+ %7 = fadd <2 x float> %a22.i, %3, !gla.precision !23
+ %8 = call <4 x float>
@llvm.gla.fMultiInsert.v4f32.v4f32.v2f32.v2f32.f32.f32(<4 x float> %color1,
i32 3, <2 x float> %7, i32 0, <2 x float> %7, i32 1, float undef, i32
undef, float undef, i32 undef)
+ store <4 x float> %8, <4 x float>* @color, align 16
br label %stage-epilogue

stage-epilogue: ; preds = %entry
@@ -121,34 +186,48 @@
stage-exit: ; preds = %stage-epilogue
ret void
}
+
+; Function Attrs: nounwind readnone
+declare <4 x float>
@llvm.gla.fMultiInsert.v4f32.v4f32.v2f32.v2f32.f32.f32(<4 x float>, i32, <2
x float>, i32, <2 x float>, i32, float, i32, float, i32) #0
+
+; Function Attrs: nounwind readnone
+declare <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float, <4 x i32>) #0
+
+; Function Attrs: nounwind readnone
+declare <2 x float> @llvm.gla.fSwizzle.v2f32.v4f32.v2i32(<4 x float>, <2 x
i32>) #0
+
+attributes #0 = { nounwind readnone }

!gla.entrypoint = !{!0}
-!gla.inputs = !{!1, !3, !5, !7, !9, !11}
-!gla.outputs = !{!17}
-!gla.uniforms = !{!19}
-!gla.noStaticUse = !{!11}
+!gla.outputs = !{!1, !3}
+!gla.inputs = !{!5, !11, !13, !15, !17, !19}
+!gla.uniforms = !{!21}

!0 = metadata !{metadata !"main", i32 15}
-!1 = metadata !{metadata !"gl_Layer", i32 1, i32* @gl_Layer_typeProxy,
metadata !2}
-!2 = metadata !{i32 0, i32 3, i32 1024, null, i32 0, i32 32}
-!3 = metadata !{metadata !"gl_PrimitiveID", i32 1, i32*
@gl_PrimitiveID_typeProxy, metadata !4}
-!4 = metadata !{i32 0, i32 3, i32 1025, null, i32 0, i32 31}
-!5 = metadata !{metadata !"gl_SampleID", i32 1, i32*
@gl_SampleID_typeProxy, metadata !6}
-!6 = metadata !{i32 0, i32 1, i32 1026, null, i32 0, i32 46}
-!7 = metadata !{metadata !"gl_SamplePosition", i32 1, <2 x float>*
@gl_SamplePosition_typeProxy, metadata !8}
-!8 = metadata !{i32 0, i32 2, i32 1027, null, i32 1, i32 47}
-!9 = metadata !{metadata !"gl_SampleMaskIn", i32 1, [1 x i32]*
@gl_SampleMaskIn_typeProxy, metadata !10}
-!10 = metadata !{i32 0, i32 3, i32 1028, null, i32 0, i32 48}
-!11 = metadata !{metadata !"inInst", i32 17, %inName* @inInst_typeProxy,
metadata !12, metadata !13}
-!12 = metadata !{i32 0, i32 0, i32 1030, null, i32 0}
-!13 = metadata !{metadata !"inName", metadata !14, metadata !"color",
metadata !15}
-!14 = metadata !{i32 0, i32 0, i32 1024, null}
-!15 = metadata !{metadata !"", metadata !16}
-!16 = metadata !{i32 0, i32 3, i32 1024, null}
-!17 = metadata !{metadata !"gl_SampleMask", i32 7, [1 x i32]*
@gl_SampleMask_typeProxy, metadata !18}
-!18 = metadata !{i32 0, i32 3, i32 1029, null, i32 0, i32 48}
-!19 = metadata !{metadata !"gl_NumSamples", i32 12, i32*
@gl_NumSamples_typeProxy, metadata !20}
-!20 = metadata !{i32 0, i32 1, i32 1024, null}
+!1 = metadata !{metadata !"color", i32 7, <4 x float>* @color_typeProxy,
metadata !2}
+!2 = metadata !{i32 0, i32 3, i32 1024, null, i32 0}
+!3 = metadata !{metadata !"gl_SampleMask", i32 7, [1 x i32]*
@gl_SampleMask_typeProxy, metadata !4}
+!4 = metadata !{i32 0, i32 3, i32 1031, null, i32 0, i32 48}
+!5 = metadata !{metadata !"inInst", i32 17, %inName* @inInst_typeProxy,
metadata !6, metadata !7}
+!6 = metadata !{i32 0, i32 0, i32 1025, null, i32 0}
+!7 = metadata !{metadata !"inName", metadata !8, metadata !"color",
metadata !9}
+!8 = metadata !{i32 0, i32 0, i32 1024, null}
+!9 = metadata !{metadata !"", metadata !10}
+!10 = metadata !{i32 0, i32 3, i32 1024, null}
+!11 = metadata !{metadata !"gl_Layer", i32 1, i32* @gl_Layer_typeProxy,
metadata !12}
+!12 = metadata !{i32 0, i32 3, i32 1026, null, i32 0, i32 32}
+!13 = metadata !{metadata !"gl_PrimitiveID", i32 1, i32*
@gl_PrimitiveID_typeProxy, metadata !14}
+!14 = metadata !{i32 0, i32 3, i32 1027, null, i32 0, i32 31}
+!15 = metadata !{metadata !"gl_SampleID", i32 1, i32*
@gl_SampleID_typeProxy, metadata !16}
+!16 = metadata !{i32 0, i32 1, i32 1028, null, i32 0, i32 46}
+!17 = metadata !{metadata !"gl_SamplePosition", i32 1, <2 x float>*
@gl_SamplePosition_typeProxy, metadata !18}
+!18 = metadata !{i32 0, i32 2, i32 1029, null, i32 1, i32 47}
+!19 = metadata !{metadata !"gl_SampleMaskIn", i32 1, [1 x i32]*
@gl_SampleMaskIn_typeProxy, metadata !20}
+!20 = metadata !{i32 0, i32 3, i32 1030, null, i32 0, i32 48}
+!21 = metadata !{metadata !"gl_NumSamples", i32 12, i32*
@gl_NumSamples_typeProxy, metadata !22}
+!22 = metadata !{i32 0, i32 1, i32 1024, null}
+!23 = metadata !{i32 3}
+!24 = metadata !{i32 2}
#version 310 es
// LunarGOO output
#extension GL_ANDROID_extension_pack_es31a : enable
@@ -168,10 +247,26 @@
in inName {
highp vec4 color;
} inInst;
+out highp vec4 color;
+const int C_4 = 4;

void main()
{
+ color = inInst.color;
+ highp int H_788oq2 = gl_Layer + gl_PrimitiveID;
+ highp float H_ycwbmg1 = float(H_788oq2);
+ vec4 H_jsty0g = vec4(H_ycwbmg1);
+ highp vec4 color1 = H_jsty0g * inInst.color;
+ color = color1;
gl_SampleMask[0] = gl_SampleMaskIn[0];
+ mediump int H_fijw1n1 = gl_SampleID + C_4;
+ mediump int H_m4wmqm1 = H_fijw1n1 + gl_SampleMaskIn[0];
+ highp int H_89h7ub = H_m4wmqm1 + gl_NumSamples;
+ gl_SampleMask[0] = H_89h7ub;
+ highp vec2 H_kbfl6m1 = color1.xy + gl_SamplePosition;
+ vec4 H_np3y8f = color1;
+ H_np3y8f.xy = H_kbfl6m1.xy;
+ color = H_np3y8f;

}

@@ -194,10 +289,26 @@
in inName {
highp vec4 color;
} inInst;
+out highp vec4 color;
+const int C_4 = 4;

void main()
{
+ color = inInst.color;
+ highp int H_788oq = gl_Layer + gl_PrimitiveID;
+ highp float H_ycwbmg = float(H_788oq);
+ vec4 H_0w2kui1 = vec4(H_ycwbmg);
+ highp vec4 color1 = H_0w2kui1 * inInst.color;
+ color = color1;
gl_SampleMask[0] = gl_SampleMaskIn[0];
+ mediump int H_fijw1n = gl_SampleID + C_4;
+ highp int H_m4wmqm = H_fijw1n + gl_SampleMaskIn[0];
+ mediump int H_89h7ub = H_m4wmqm + gl_NumSamples;
+ gl_SampleMask[0] = H_89h7ub;
+ highp vec2 H_kbfl6m = color1.xy + gl_SamplePosition;
+ vec4 H_np3y8f = color1;
+ H_np3y8f.xy = H_kbfl6m.xy;
+ color = H_np3y8f;

}

=======================================
--- /trunk/test/baseResults/aep.tesc.out Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/baseResults/aep.tesc.out Fri Aug 21 15:27:04 2015 UTC
@@ -1,5 +1,3 @@
-
-***Unsupported functionality: built in variable

Top IR:
; ModuleID = 'Glslang'
@@ -15,9 +13,10 @@
@gl_out = global [4 x %gl_PerVertex.0] zeroinitializer
@gl_TessLevelOuter = global [4 x float] zeroinitializer
@gl_TessLevelInner = global [2 x float] zeroinitializer
+@patchOut = global <4 x float> zeroinitializer
+@inv = global [32 x <3 x float>] zeroinitializer
@gl_BoundingBoxOES = global [2 x <4 x float>] zeroinitializer
@outa = internal global [4 x i32] zeroinitializer
-@patchOut = global <4 x float> zeroinitializer
@inb = global [32 x <2 x float>] zeroinitializer
@ind = global [32 x <2 x float>] zeroinitializer
@ivla = global [32 x <4 x float>] zeroinitializer
@@ -53,7 +52,15 @@
store float 0x3FF4CCCCC0000000, float* getelementptr inbounds ([2 x
float]* @gl_TessLevelInner, i32 0, i32 1)
call void @"bb("()
call void @"pointSize("()
- call void @"foop("()
+ store <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, <4 x float>* @patchOut
+ %1 = call float @"foop("()
+ %2 = load <4 x float>* @patchOut
+ %3 = insertelement <4 x float> undef, float %1, i32 0, !gla.precision !50
+ %4 = insertelement <4 x float> %3, float %1, i32 1, !gla.precision !50
+ %5 = insertelement <4 x float> %4, float %1, i32 2, !gla.precision !50
+ %6 = insertelement <4 x float> %5, float %1, i32 3, !gla.precision !50
+ %patchOut = fmul <4 x float> %2, %6, !gla.precision !50
+ store <4 x float> %patchOut, <4 x float>* @patchOut
br label %stage-epilogue

stage-epilogue: ; preds = %mainBody
@@ -72,14 +79,34 @@
}

; Function Attrs: alwaysinline
-define internal fastcc void @"foop("() #0 {
+define internal fastcc float @"foop("() #0 {
entry:
+ %d = alloca float
%pv3 = alloca <3 x float>
+ %pv31 = load <3 x float>* getelementptr inbounds ([32 x <3 x float>]*
@inv, i32 0, i32 3)
+ store <3 x float> %pv31, <3 x float>* %pv3
%0 = load <3 x float>* %pv3
%1 = load <3 x float>* %pv3
- %pv31 = fmul <3 x float> %1, %0, !gla.precision !48
- store <3 x float> %pv31, <3 x float>* %pv3
- ret void
+ %pv32 = fmul <3 x float> %1, %0, !gla.precision !50
+ store <3 x float> %pv32, <3 x float>* %pv3
+ %2 = load <3 x float>* %pv3
+ %3 = load <3 x float>* %pv3
+ %4 = load <3 x float>* %pv3
+ %pv33 = call <3 x float> @llvm.gla.fFma.v3f32.v3f32.v3f32.v3f32(<3 x
float> %2, <3 x float> %3, <3 x float> %4), !gla.precision !50
+ store <3 x float> %pv33, <3 x float>* %pv3
+ %5 = load <3 x float>* %pv3
+ %6 = extractelement <3 x float> %5, i32 0, !gla.precision !50
+ %7 = load <3 x float>* %pv3
+ %8 = extractelement <3 x float> %7, i32 1, !gla.precision !50
+ %9 = load <3 x float>* %pv3
+ %10 = extractelement <3 x float> %9, i32 2, !gla.precision !50
+ %d5 = call float @llvm.gla.fFma.f32.f32.f32.f32(float %6, float %8,
float %10), !gla.precision !50
+ store float %d5, float* %d
+ %11 = load float* %d
+ ret float %11
+
+post-return: ; No predecessors!
+ unreachable
}

; Function Attrs: alwaysinline
@@ -93,14 +120,21 @@
; Function Attrs: nounwind
declare void @llvm.gla.barrier() #1

+; Function Attrs: nounwind readnone
+declare <3 x float> @llvm.gla.fFma.v3f32.v3f32.v3f32.v3f32(<3 x float>, <3
x float>, <3 x float>) #2
+
+; Function Attrs: nounwind readnone
+declare float @llvm.gla.fFma.f32.f32.f32.f32(float, float, float) #2
+
attributes #0 = { alwaysinline }
attributes #1 = { nounwind }
+attributes #2 = { nounwind readnone }

!gla.numVertices = !{!0}
!gla.entrypoint = !{!1}
-!gla.inputs = !{!2, !8, !10, !12, !14, !16, !18, !20, !22}
-!gla.outputs = !{!24, !31, !33, !35, !37, !39, !40, !41, !44, !46}
-!gla.noStaticUse = !{!37, !14, !16, !18, !20, !39, !40, !41, !44, !22, !46}
+!gla.inputs = !{!2, !8, !10, !12, !14, !16, !18, !20, !22, !24}
+!gla.outputs = !{!26, !33, !35, !37, !39, !41, !42, !43, !46, !48}
+!gla.noStaticUse = !{!16, !18, !20, !22, !41, !42, !43, !46, !24, !48}

!0 = metadata !{i32 4}
!1 = metadata !{metadata !"main", i32 15}
@@ -116,41 +150,43 @@
!11 = metadata !{i32 0, i32 3, i32 1089, null, i32 0, i32 31}
!12 = metadata !{metadata !"gl_InvocationID", i32 1, i32*
@gl_InvocationID_typeProxy, metadata !13}
!13 = metadata !{i32 0, i32 3, i32 1090, null, i32 0, i32 30}
-!14 = metadata !{metadata !"inb", i32 1, [32 x <2 x float>]*
@inb_typeProxy, metadata !15}
-!15 = metadata !{i32 0, i32 3, i32 1108, null, i32 0}
-!16 = metadata !{metadata !"ind", i32 1, [32 x <2 x float>]*
@ind_typeProxy, metadata !17}
+!14 = metadata !{metadata !"inv", i32 1, [32 x <3 x float>]*
@inv_typeProxy, metadata !15}
+!15 = metadata !{i32 0, i32 3, i32 1106, null, i32 0}
+!16 = metadata !{metadata !"inb", i32 1, [32 x <2 x float>]*
@inb_typeProxy, metadata !17}
!17 = metadata !{i32 0, i32 3, i32 1140, null, i32 0}
-!18 = metadata !{metadata !"ivla", i32 1, [32 x <4 x float>]*
@ivla_typeProxy, metadata !19}
-!19 = metadata !{i32 0, i32 3, i32 3, null, i32 0}
-!20 = metadata !{metadata !"ivlb", i32 1, [32 x <4 x float>]*
@ivlb_typeProxy, metadata !21}
-!21 = metadata !{i32 0, i32 3, i32 4, null, i32 0}
-!22 = metadata !{metadata !"centr", i32 1, [32 x <3 x float>]*
@centr_typeProxy, metadata !23}
-!23 = metadata !{i32 0, i32 3, i32 1177, null, i32 512}
-!24 = metadata !{metadata !"gl_out", i32 16, [4 x %gl_PerVertex.0]*
@gl_out_typeProxy, metadata !25, metadata !26}
-!25 = metadata !{i32 0, i32 0, i32 1091, null, i32 0}
-!26 = metadata !{metadata !"gl_PerVertex", metadata !5,
metadata !"gl_Position", metadata !27, metadata !"gl_PointSize",
metadata !29}
-!27 = metadata !{metadata !"", metadata !28}
-!28 = metadata !{i32 0, i32 3, i32 1024, null, i32 -1, i32 9}
+!18 = metadata !{metadata !"ind", i32 1, [32 x <2 x float>]*
@ind_typeProxy, metadata !19}
+!19 = metadata !{i32 0, i32 3, i32 1172, null, i32 0}
+!20 = metadata !{metadata !"ivla", i32 1, [32 x <4 x float>]*
@ivla_typeProxy, metadata !21}
+!21 = metadata !{i32 0, i32 3, i32 3, null, i32 0}
+!22 = metadata !{metadata !"ivlb", i32 1, [32 x <4 x float>]*
@ivlb_typeProxy, metadata !23}
+!23 = metadata !{i32 0, i32 3, i32 4, null, i32 0}
+!24 = metadata !{metadata !"centr", i32 1, [32 x <3 x float>]*
@centr_typeProxy, metadata !25}
+!25 = metadata !{i32 0, i32 3, i32 1209, null, i32 512}
+!26 = metadata !{metadata !"gl_out", i32 16, [4 x %gl_PerVertex.0]*
@gl_out_typeProxy, metadata !27, metadata !28}
+!27 = metadata !{i32 0, i32 0, i32 1091, null, i32 0}
+!28 = metadata !{metadata !"gl_PerVertex", metadata !5,
metadata !"gl_Position", metadata !29, metadata !"gl_PointSize",
metadata !31}
!29 = metadata !{metadata !"", metadata !30}
-!30 = metadata !{i32 0, i32 3, i32 1024, null, i32 -1, i32 10}
-!31 = metadata !{metadata !"gl_TessLevelOuter", i32 7, [4 x float]*
@gl_TessLevelOuter_typeProxy, metadata !32}
-!32 = metadata !{i32 0, i32 3, i32 1099, null, i32 3, i32 35}
-!33 = metadata !{metadata !"gl_TessLevelInner", i32 7, [2 x float]*
@gl_TessLevelInner_typeProxy, metadata !34}
-!34 = metadata !{i32 0, i32 3, i32 1103, null, i32 3, i32 36}
-!35 = metadata !{metadata !"gl_BoundingBoxOES", i32 7, [2 x <4 x float>]*
@gl_BoundingBoxOES_typeProxy, metadata !36}
-!36 = metadata !{i32 0, i32 3, i32 1105, null, i32 3}
+!30 = metadata !{i32 0, i32 3, i32 1024, null, i32 -1, i32 9}
+!31 = metadata !{metadata !"", metadata !32}
+!32 = metadata !{i32 0, i32 3, i32 1024, null, i32 -1, i32 10}
+!33 = metadata !{metadata !"gl_TessLevelOuter", i32 7, [4 x float]*
@gl_TessLevelOuter_typeProxy, metadata !34}
+!34 = metadata !{i32 0, i32 3, i32 1099, null, i32 3, i32 35}
+!35 = metadata !{metadata !"gl_TessLevelInner", i32 7, [2 x float]*
@gl_TessLevelInner_typeProxy, metadata !36}
+!36 = metadata !{i32 0, i32 3, i32 1103, null, i32 3, i32 36}
!37 = metadata !{metadata !"patchOut", i32 7, <4 x float>*
@patchOut_typeProxy, metadata !38}
-!38 = metadata !{i32 0, i32 3, i32 1107, null, i32 3}
-!39 = metadata !{metadata !"ovla", i32 7, [4 x <4 x float>]*
@ovla_typeProxy, metadata !19}
-!40 = metadata !{metadata !"ovlb", i32 7, [4 x <4 x float>]*
@ovlb_typeProxy, metadata !21}
-!41 = metadata !{metadata !"pinbi", i32 16, %pinbn* @pinbi_typeProxy,
metadata !42, metadata !43}
-!42 = metadata !{i32 0, i32 0, i32 1172, null, i32 3}
-!43 = metadata !{metadata !"pinbn", metadata !5, metadata !"a",
metadata !6}
-!44 = metadata !{metadata !"myColor2", i32 7, [4 x <3 x float>]*
@myColor2_typeProxy, metadata !45}
-!45 = metadata !{i32 0, i32 3, i32 1173, null, i32 512}
-!46 = metadata !{metadata !"okaySize", i32 7, [4 x float]*
@okaySize_typeProxy, metadata !47}
-!47 = metadata !{i32 0, i32 3, i32 1209, null, i32 0}
-!48 = metadata !{i32 3}
+!38 = metadata !{i32 0, i32 3, i32 1105, null, i32 3}
+!39 = metadata !{metadata !"gl_BoundingBoxOES", i32 7, [2 x <4 x float>]*
@gl_BoundingBoxOES_typeProxy, metadata !40}
+!40 = metadata !{i32 0, i32 3, i32 1138, null, i32 3, i32 50}
+!41 = metadata !{metadata !"ovla", i32 7, [4 x <4 x float>]*
@ovla_typeProxy, metadata !21}
+!42 = metadata !{metadata !"ovlb", i32 7, [4 x <4 x float>]*
@ovlb_typeProxy, metadata !23}
+!43 = metadata !{metadata !"pinbi", i32 16, %pinbn* @pinbi_typeProxy,
metadata !44, metadata !45}
+!44 = metadata !{i32 0, i32 0, i32 1204, null, i32 3}
+!45 = metadata !{metadata !"pinbn", metadata !5, metadata !"a",
metadata !6}
+!46 = metadata !{metadata !"myColor2", i32 7, [4 x <3 x float>]*
@myColor2_typeProxy, metadata !47}
+!47 = metadata !{i32 0, i32 3, i32 1205, null, i32 512}
+!48 = metadata !{metadata !"okaySize", i32 7, [4 x float]*
@okaySize_typeProxy, metadata !49}
+!49 = metadata !{i32 0, i32 3, i32 1241, null, i32 0}
+!50 = metadata !{i32 3}


Bottom IR:
@@ -167,8 +203,9 @@
@gl_out = global [4 x %gl_PerVertex.0] zeroinitializer
@gl_TessLevelOuter = global [4 x float] zeroinitializer
@gl_TessLevelInner = global [2 x float] zeroinitializer
-@gl_BoundingBoxOES = global [2 x <4 x float>] zeroinitializer
@patchOut = global <4 x float> zeroinitializer
+@inv = global [32 x <3 x float>] zeroinitializer
+@gl_BoundingBoxOES = global [2 x <4 x float>] zeroinitializer
@inb = global [32 x <2 x float>] zeroinitializer
@ind = global [32 x <2 x float>] zeroinitializer
@ivla = global [32 x <4 x float>] zeroinitializer
@@ -199,6 +236,18 @@
%0 = load float* %gla_constGEP10, align 16
%gla_constGEP11 = getelementptr [4 x %gl_PerVertex.0]* @gl_out, i32 0,
i32 1, i32 1
store float %0, float* %gla_constGEP11, align 16
+ store <4 x float> <float 5.000000e-01, float 5.000000e-01, float
5.000000e-01, float 5.000000e-01>, <4 x float>* @patchOut, align 16
+ %gla_constGEP12 = getelementptr [32 x <3 x float>]* @inv, i32 0, i32 3
+ %pv31.i = load <3 x float>* %gla_constGEP12, align 16
+ %pv32.i = fmul <3 x float> %pv31.i, %pv31.i, !gla.precision !50
+ %pv33.i = call <3 x float> @llvm.gla.fFma.v3f32.v3f32.v3f32.v3f32(<3 x
float> %pv32.i, <3 x float> %pv32.i, <3 x
float> %pv32.i), !gla.precision !50
+ %1 = extractelement <3 x float> %pv33.i, i32 0, !gla.precision !50
+ %2 = extractelement <3 x float> %pv33.i, i32 1, !gla.precision !50
+ %3 = extractelement <3 x float> %pv33.i, i32 2, !gla.precision !50
+ %d5.i = call float @llvm.gla.fFma.f32.f32.f32.f32(float %1, float %2,
float %3), !gla.precision !50
+ %4 = call <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float %d5.i, <4
x i32> zeroinitializer)
+ %patchOut = fmul <4 x float> %4, <float 5.000000e-01, float
5.000000e-01, float 5.000000e-01, float 5.000000e-01>, !gla.precision !50
+ store <4 x float> %patchOut, <4 x float>* @patchOut, align 16
br label %stage-epilogue

stage-epilogue: ; preds = %entry
@@ -211,13 +260,23 @@
; Function Attrs: nounwind
declare void @llvm.gla.barrier() #0

+; Function Attrs: nounwind readnone
+declare <3 x float> @llvm.gla.fFma.v3f32.v3f32.v3f32.v3f32(<3 x float>, <3
x float>, <3 x float>) #1
+
+; Function Attrs: nounwind readnone
+declare float @llvm.gla.fFma.f32.f32.f32.f32(float, float, float) #1
+
+; Function Attrs: nounwind readnone
+declare <4 x float> @llvm.gla.fSwizzle.v4f32.f32.v4i32(float, <4 x i32>) #1
+
attributes #0 = { nounwind }
+attributes #1 = { nounwind readnone }

!gla.numVertices = !{!0}
!gla.entrypoint = !{!1}
-!gla.inputs = !{!2, !8, !10, !12, !14, !16, !18, !20, !22}
-!gla.outputs = !{!24, !31, !33, !35, !37, !39, !40, !41, !44, !46}
-!gla.noStaticUse = !{!37, !14, !16, !18, !20, !39, !40, !41, !44, !22, !46}
+!gla.inputs = !{!2, !8, !10, !12, !14, !16, !18, !20, !22, !24}
+!gla.outputs = !{!26, !33, !35, !37, !39, !41, !42, !43, !46, !48}
+!gla.noStaticUse = !{!16, !18, !20, !22, !41, !42, !43, !46, !24, !48}

!0 = metadata !{i32 4}
!1 = metadata !{metadata !"main", i32 15}
@@ -233,40 +292,43 @@
!11 = metadata !{i32 0, i32 3, i32 1089, null, i32 0, i32 31}
!12 = metadata !{metadata !"gl_InvocationID", i32 1, i32*
@gl_InvocationID_typeProxy, metadata !13}
!13 = metadata !{i32 0, i32 3, i32 1090, null, i32 0, i32 30}
-!14 = metadata !{metadata !"inb", i32 1, [32 x <2 x float>]*
@inb_typeProxy, metadata !15}
-!15 = metadata !{i32 0, i32 3, i32 1108, null, i32 0}
-!16 = metadata !{metadata !"ind", i32 1, [32 x <2 x float>]*
@ind_typeProxy, metadata !17}
+!14 = metadata !{metadata !"inv", i32 1, [32 x <3 x float>]*
@inv_typeProxy, metadata !15}
+!15 = metadata !{i32 0, i32 3, i32 1106, null, i32 0}
+!16 = metadata !{metadata !"inb", i32 1, [32 x <2 x float>]*
@inb_typeProxy, metadata !17}
!17 = metadata !{i32 0, i32 3, i32 1140, null, i32 0}
-!18 = metadata !{metadata !"ivla", i32 1, [32 x <4 x float>]*
@ivla_typeProxy, metadata !19}
-!19 = metadata !{i32 0, i32 3, i32 3, null, i32 0}
-!20 = metadata !{metadata !"ivlb", i32 1, [32 x <4 x float>]*
@ivlb_typeProxy, metadata !21}
-!21 = metadata !{i32 0, i32 3, i32 4, null, i32 0}
-!22 = metadata !{metadata !"centr", i32 1, [32 x <3 x float>]*
@centr_typeProxy, metadata !23}
-!23 = metadata !{i32 0, i32 3, i32 1177, null, i32 512}
-!24 = metadata !{metadata !"gl_out", i32 16, [4 x %gl_PerVertex.0]*
@gl_out_typeProxy, metadata !25, metadata !26}
-!25 = metadata !{i32 0, i32 0, i32 1091, null, i32 0}
-!26 = metadata !{metadata !"gl_PerVertex", metadata !5,
metadata !"gl_Position", metadata !27, metadata !"gl_PointSize",
metadata !29}
-!27 = metadata !{metadata !"", metadata !28}
-!28 = metadata !{i32 0, i32 3, i32 1024, null, i32 -1, i32 9}
+!18 = metadata !{metadata !"ind", i32 1, [32 x <2 x float>]*
@ind_typeProxy, metadata !19}
+!19 = metadata !{i32 0, i32 3, i32 1172, null, i32 0}
+!20 = metadata !{metadata !"ivla", i32 1, [32 x <4 x float>]*
@ivla_typeProxy, metadata !21}
+!21 = metadata !{i32 0, i32 3, i32 3, null, i32 0}
+!22 = metadata !{metadata !"ivlb", i32 1, [32 x <4 x float>]*
@ivlb_typeProxy, metadata !23}
+!23 = metadata !{i32 0, i32 3, i32 4, null, i32 0}
+!24 = metadata !{metadata !"centr", i32 1, [32 x <3 x float>]*
@centr_typeProxy, metadata !25}
+!25 = metadata !{i32 0, i32 3, i32 1209, null, i32 512}
+!26 = metadata !{metadata !"gl_out", i32 16, [4 x %gl_PerVertex.0]*
@gl_out_typeProxy, metadata !27, metadata !28}
+!27 = metadata !{i32 0, i32 0, i32 1091, null, i32 0}
+!28 = metadata !{metadata !"gl_PerVertex", metadata !5,
metadata !"gl_Position", metadata !29, metadata !"gl_PointSize",
metadata !31}
!29 = metadata !{metadata !"", metadata !30}
-!30 = metadata !{i32 0, i32 3, i32 1024, null, i32 -1, i32 10}
-!31 = metadata !{metadata !"gl_TessLevelOuter", i32 7, [4 x float]*
@gl_TessLevelOuter_typeProxy, metadata !32}
-!32 = metadata !{i32 0, i32 3, i32 1099, null, i32 3, i32 35}
-!33 = metadata !{metadata !"gl_TessLevelInner", i32 7, [2 x float]*
@gl_TessLevelInner_typeProxy, metadata !34}
-!34 = metadata !{i32 0, i32 3, i32 1103, null, i32 3, i32 36}
-!35 = metadata !{metadata !"gl_BoundingBoxOES", i32 7, [2 x <4 x float>]*
@gl_BoundingBoxOES_typeProxy, metadata !36}
-!36 = metadata !{i32 0, i32 3, i32 1105, null, i32 3}
+!30 = metadata !{i32 0, i32 3, i32 1024, null, i32 -1, i32 9}
+!31 = metadata !{metadata !"", metadata !32}
+!32 = metadata !{i32 0, i32 3, i32 1024, null, i32 -1, i32 10}
+!33 = metadata !{metadata !"gl_TessLevelOuter", i32 7, [4 x float]*
@gl_TessLevelOuter_typeProxy, metadata !34}
+!34 = metadata !{i32 0, i32 3, i32 1099, null, i32 3, i32 35}
+!35 = metadata !{metadata !"gl_TessLevelInner", i32 7, [2 x float]*
@gl_TessLevelInner_typeProxy, metadata !36}
+!36 = metadata !{i32 0, i32 3, i32 1103, null, i32 3, i32 36}
!37 = metadata !{metadata !"patchOut", i32 7, <4 x float>*
@patchOut_typeProxy, metadata !38}
-!38 = metadata !{i32 0, i32 3, i32 1107, null, i32 3}
-!39 = metadata !{metadata !"ovla", i32 7, [4 x <4 x float>]*
@ovla_typeProxy, metadata !19}
-!40 = metadata !{metadata !"ovlb", i32 7, [4 x <4 x float>]*
@ovlb_typeProxy, metadata !21}
-!41 = metadata !{metadata !"pinbi", i32 16, %pinbn* @pinbi_typeProxy,
metadata !42, metadata !43}
-!42 = metadata !{i32 0, i32 0, i32 1172, null, i32 3}
-!43 = metadata !{metadata !"pinbn", metadata !5, metadata !"a",
metadata !6}
-!44 = metadata !{metadata !"myColor2", i32 7, [4 x <3 x float>]*
@myColor2_typeProxy, metadata !45}
-!45 = metadata !{i32 0, i32 3, i32 1173, null, i32 512}
-!46 = metadata !{metadata !"okaySize", i32 7, [4 x float]*
@okaySize_typeProxy, metadata !47}
-!47 = metadata !{i32 0, i32 3, i32 1209, null, i32 0}
+!38 = metadata !{i32 0, i32 3, i32 1105, null, i32 3}
+!39 = metadata !{metadata !"gl_BoundingBoxOES", i32 7, [2 x <4 x float>]*
@gl_BoundingBoxOES_typeProxy, metadata !40}
+!40 = metadata !{i32 0, i32 3, i32 1138, null, i32 3, i32 50}
+!41 = metadata !{metadata !"ovla", i32 7, [4 x <4 x float>]*
@ovla_typeProxy, metadata !21}
+!42 = metadata !{metadata !"ovlb", i32 7, [4 x <4 x float>]*
@ovlb_typeProxy, metadata !23}
+!43 = metadata !{metadata !"pinbi", i32 16, %pinbn* @pinbi_typeProxy,
metadata !44, metadata !45}
+!44 = metadata !{i32 0, i32 0, i32 1204, null, i32 3}
+!45 = metadata !{metadata !"pinbn", metadata !5, metadata !"a",
metadata !6}
+!46 = metadata !{metadata !"myColor2", i32 7, [4 x <3 x float>]*
@myColor2_typeProxy, metadata !47}
+!47 = metadata !{i32 0, i32 3, i32 1205, null, i32 512}
+!48 = metadata !{metadata !"okaySize", i32 7, [4 x float]*
@okaySize_typeProxy, metadata !49}
+!49 = metadata !{i32 0, i32 3, i32 1241, null, i32 0}
+!50 = metadata !{i32 3}
#version 310 es
// LunarGOO output
#extension GL_ANDROID_extension_pack_es31a : enable
@@ -289,6 +351,7 @@
highp vec4 gl_Position;
highp float gl_PointSize;
} gl_in[32];
+in highp vec3 inv[32];
in highp vec2 inb[32];
in highp vec2 ind[32];
layout(location=3) in highp vec4 ivla[32];
@@ -301,7 +364,7 @@
patch out highp vec4 patchOut;
layout(location=3) out highp vec4 ovla[4];
layout(location=4) out highp vec4 ovlb[4];
-out pinbn {
+patch out pinbn {
highp int a;
} pinbi;
out highp vec3 myColor2[4];
@@ -310,6 +373,7 @@
const float C_1d3 = 1.3;
const vec4 C_vec4p0d0p = vec4(0.0);
const vec4 C_vec4p1d0p = vec4(1.0);
+const vec4 C_vec4p0d5p = vec4(0.5);

void main()
{
@@ -320,15 +384,78 @@
gl_BoundingBoxOES[0] = C_vec4p0d0p;
gl_BoundingBoxOES[1] = C_vec4p1d0p;
gl_out[1].gl_PointSize = gl_in[1].gl_PointSize;
+ patchOut = C_vec4p0d5p;
+ highp vec3 pv = inv[3] * inv[3];
+ highp vec3 pv1 = fma(pv, pv, pv);
+ highp float H_0ow2u2 = fma(pv1.x, pv1.y, pv1.z);
+ vec4 H_iquwvs = vec4(H_0ow2u2);
+ highp vec4 patchOut1 = C_vec4p0d5p * H_iquwvs;
+ patchOut = patchOut1;

}

-tempglsl.tesc
-Warning, version 310 is not yet complete; most version-specific features
are present, but some are missing.
-WARNING: 0:3: '#extension' : extension is only partially supported:
GL_ANDROID_extension_pack_es31a
-WARNING: 0:3: '#extension' : extension is only partially supported:
GL_KHR_blend_equation_advanced
-WARNING: 0:3: '#extension' : extension is only partially supported:
GL_OES_shader_multisample_interpolation
-ERROR: 0:35: 'out' : type must be an array: pinbi
-ERROR: 1 compilation errors. No code generated.
+#version 310 es
+// LunarGOO output
+#extension GL_ANDROID_extension_pack_es31a : enable
+#extension GL_ARB_separate_shader_objects : enable
+#extension GL_EXT_geometry_shader : enable
+#extension GL_EXT_gpu_shader5 : enable
+#extension GL_EXT_primitive_bounding_box : enable
+#extension GL_EXT_shader_io_blocks : enable
+#extension GL_EXT_tessellation_shader : enable
+#extension GL_EXT_texture_buffer : enable
+#extension GL_EXT_texture_cube_map_array : enable
+#extension GL_KHR_blend_equation_advanced : enable
+#extension GL_OES_sample_variables : enable
+#extension GL_OES_shader_image_atomic : enable
+#extension GL_OES_shader_multisample_interpolation : enable
+#extension GL_OES_tessellation_point_size : enable
+#extension GL_OES_texture_storage_multisample_2d_array : enable
+layout(vertices = 4) out;
+in gl_PerVertex {
+ highp vec4 gl_Position;
+ highp float gl_PointSize;
+} gl_in[32];
+in highp vec3 inv[32];
+in highp vec2 inb[32];
+in highp vec2 ind[32];
+layout(location=3) in highp vec4 ivla[32];
+layout(location=4) in highp vec4 ivlb[32];
+in highp vec3 centr[32];
+out gl_PerVertex {
+ highp vec4 gl_Position;
+ highp float gl_PointSize;
+} gl_out[4];
+patch out highp vec4 patchOut;
+layout(location=3) out highp vec4 ovla[4];
+layout(location=4) out highp vec4 ovlb[4];
+patch out pinbn {
+ highp int a;
+} pinbi;
+out highp vec3 myColor2[4];
+out highp float okaySize[4];
+const float C_3d2 = 3.2;
+const float C_1d3 = 1.3;
+const vec4 C_vec4p0d0p = vec4(0.0);
+const vec4 C_vec4p1d0p = vec4(1.0);
+const vec4 C_vec4p0d5p = vec4(0.5);

+void main()
+{
+ barrier();
+ gl_out[1].gl_Position = gl_in[1].gl_Position;
+ gl_TessLevelOuter[3] = C_3d2;
+ gl_TessLevelInner[1] = C_1d3;
+ gl_BoundingBoxOES[0] = C_vec4p0d0p;
+ gl_BoundingBoxOES[1] = C_vec4p1d0p;
+ gl_out[1].gl_PointSize = gl_in[1].gl_PointSize;
+ patchOut = C_vec4p0d5p;
+ highp vec3 pv = inv[3] * inv[3];
+ highp vec3 pv1 = fma(pv, pv, pv);
+ highp float H_0ow2u = fma(pv1.x, pv1.y, pv1.z);
+ vec4 H_elkc6c1 = vec4(H_0ow2u);
+ highp vec4 patchOut1 = C_vec4p0d5p * H_elkc6c1;
+ patchOut = patchOut1;
+
+}

=======================================
--- /trunk/test/baseResults/aep.tese.out Mon Aug 17 22:08:33 2015 UTC
+++ /trunk/test/baseResults/aep.tese.out Fri Aug 21 15:27:04 2015 UTC
@@ -273,7 +273,7 @@
} bld[32];
layout(location=23) in highp vec4 ivla[32];
layout(location=24) in highp vec4 ivlb[32];
-in pinbn {
+patch in pinbn {
highp int a;
} pinbi;
in highp vec3 centr[32];
@@ -287,12 +287,47 @@

}

-tempglsl.tese
-Warning, version 310 is not yet complete; most version-specific features
are present, but some are missing.
-WARNING: 0:3: '#extension' : extension is only partially supported:
GL_ANDROID_extension_pack_es31a
-WARNING: 0:3: '#extension' : extension is only partially supported:
GL_KHR_blend_equation_advanced
-WARNING: 0:3: '#extension' : extension is only partially supported:
GL_OES_shader_multisample_interpolation
-ERROR: 0:31: 'in' : type must be an array: pinbi
-ERROR: 1 compilation errors. No code generated.
+#version 310 es
+// LunarGOO output
+#extension GL_ANDROID_extension_pack_es31a : enable
+#extension GL_EXT_geometry_shader : enable
+#extension GL_EXT_gpu_shader5 : enable
+#extension GL_EXT_primitive_bounding_box : enable
+#extension GL_EXT_shader_io_blocks : enable
+#extension GL_EXT_tessellation_shader : enable
+#extension GL_EXT_texture_buffer : enable
+#extension GL_EXT_texture_cube_map_array : enable
+#extension GL_KHR_blend_equation_advanced : enable
+#extension GL_OES_sample_variables : enable
+#extension GL_OES_shader_image_atomic : enable
+#extension GL_OES_shader_multisample_interpolation : enable
+#extension GL_OES_tessellation_point_size : enable
+#extension GL_OES_texture_storage_multisample_2d_array : enable
+layout(quads) in;
+layout(fractional_odd_spacing) in;
+layout(point_mode) in;
+patch in highp vec4 patchIn;
+in highp vec2 inb[32];
+in highp vec2 ind[32];
+in testblb {
+ highp int f;
+} blb[32];
+in testbld {
+ highp int f;
+} bld[32];
+layout(location=23) in highp vec4 ivla[32];
+layout(location=24) in highp vec4 ivlb[32];
+patch in pinbn {
+ highp int a;
+} pinbi;
+in highp vec3 centr[32];
+layout(location=23) out highp vec4 ovla[2];
+out highp vec3 myColor2;

+void main()
+{
+ gl_Position = gl_in[1].gl_Position;
+ gl_PointSize = gl_in[1].gl_PointSize;
+
+}

Reply all
Reply to author
Forward
0 new messages