mirror of
https://github.com/RPCS3/glslang.git
synced 2024-11-27 21:20:30 +00:00
Update test results for pull request #68, SPIRV: Decorate matrices and arrays with their strides.
This commit is contained in:
parent
d2386d0ea9
commit
358dd560c5
@ -1,4 +1,4 @@
|
||||
ERROR: 0:2: '#define' : "defined" can't be (un)defined: defined
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
ERROR: 0:2: '#define' : "defined" can't be (un)defined: defined
|
||||
ERROR: 1 compilation errors. No code generated.
|
||||
|
||||
|
||||
|
@ -32,20 +32,29 @@ Linked fragment stage:
|
||||
MemberName 90(bn) 4 "matrdef"
|
||||
Name 92 ""
|
||||
Decorate 17(gl_FrontFacing) BuiltIn FrontFacing
|
||||
Decorate 32 ArrayStride 4
|
||||
Decorate 34(gl_ClipDistance) Smooth
|
||||
Decorate 34(gl_ClipDistance) BuiltIn ClipDistance
|
||||
Decorate 43(k) Smooth
|
||||
Decorate 84 ArrayStride 4
|
||||
Decorate 86(samp2Da) NoStaticUse
|
||||
Decorate 89 ArrayStride 64
|
||||
Decorate 89 ArrayStride 64
|
||||
MemberDecorate 90(bn) 0 RowMajor
|
||||
MemberDecorate 90(bn) 0 Offset 0
|
||||
MemberDecorate 90(bn) 0 MatrixStride 16
|
||||
MemberDecorate 90(bn) 1 ColMajor
|
||||
MemberDecorate 90(bn) 1 Offset 256
|
||||
MemberDecorate 90(bn) 1 MatrixStride 16
|
||||
MemberDecorate 90(bn) 2 RowMajor
|
||||
MemberDecorate 90(bn) 2 Offset 512
|
||||
MemberDecorate 90(bn) 2 MatrixStride 16
|
||||
MemberDecorate 90(bn) 3 ColMajor
|
||||
MemberDecorate 90(bn) 3 Offset 576
|
||||
MemberDecorate 90(bn) 3 MatrixStride 16
|
||||
MemberDecorate 90(bn) 4 RowMajor
|
||||
MemberDecorate 90(bn) 4 Offset 640
|
||||
MemberDecorate 90(bn) 4 MatrixStride 16
|
||||
Decorate 90(bn) Block
|
||||
Decorate 92 NoStaticUse
|
||||
2: TypeVoid
|
||||
|
@ -43,16 +43,20 @@ Linked geometry stage:
|
||||
Decorate 9(fromVertex) Stream 3
|
||||
Decorate 11 Stream 3
|
||||
Decorate 14(fromVertex) Block
|
||||
Decorate 17 ArrayStride 16
|
||||
Decorate 27 ArrayStride 4
|
||||
MemberDecorate 28(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 28(gl_PerVertex) Block
|
||||
Decorate 28(gl_PerVertex) Stream 0
|
||||
Decorate 30 Stream 0
|
||||
Decorate 27 ArrayStride 4
|
||||
MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 31(gl_PerVertex) Block
|
||||
Decorate 32 ArrayStride 16
|
||||
Decorate 48(gl_PrimitiveID) Stream 0
|
||||
Decorate 48(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||
Decorate 50(gl_PrimitiveIDIn) BuiltIn PrimitiveId
|
||||
|
@ -39,11 +39,18 @@ Linked vertex stage:
|
||||
Name 49 "ui"
|
||||
Name 51 "gl_VertexID"
|
||||
Name 52 "gl_InstanceID"
|
||||
Decorate 11 ArrayStride 4
|
||||
Decorate 13 ArrayStride 16
|
||||
MemberDecorate 14(gl_PerVertex) 0 Invariant
|
||||
MemberDecorate 14(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 14(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 14(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 14(gl_PerVertex) Block
|
||||
Decorate 11 ArrayStride 4
|
||||
Decorate 35 ArrayStride 16
|
||||
Decorate 37 ArrayStride 64
|
||||
Decorate 37 ArrayStride 64
|
||||
Decorate 35 ArrayStride 16
|
||||
Decorate 49(ui) NoStaticUse
|
||||
Decorate 51(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 51(gl_VertexID) NoStaticUse
|
||||
|
@ -28,6 +28,7 @@ Linked fragment stage:
|
||||
Decorate 12(color) Smooth
|
||||
MemberDecorate 14(S) 0 RelaxedPrecision
|
||||
MemberDecorate 14(S) 1 RelaxedPrecision
|
||||
Decorate 25 ArrayStride 16
|
||||
Decorate 27(p) RelaxedPrecision
|
||||
Decorate 27(p) Location 3
|
||||
Decorate 30(pos) RelaxedPrecision
|
||||
|
@ -46,24 +46,33 @@ Linked vertex stage:
|
||||
Decorate 12(p) Location 3
|
||||
MemberDecorate 18(Transform) 0 RowMajor
|
||||
MemberDecorate 18(Transform) 0 Offset 0
|
||||
MemberDecorate 18(Transform) 0 MatrixStride 16
|
||||
MemberDecorate 18(Transform) 1 ColMajor
|
||||
MemberDecorate 18(Transform) 1 Offset 64
|
||||
MemberDecorate 18(Transform) 1 MatrixStride 16
|
||||
MemberDecorate 18(Transform) 2 RowMajor
|
||||
MemberDecorate 18(Transform) 2 Offset 128
|
||||
MemberDecorate 18(Transform) 2 MatrixStride 16
|
||||
MemberDecorate 18(Transform) 3 Offset 176
|
||||
Decorate 18(Transform) Block
|
||||
Decorate 33 ArrayStride 12
|
||||
MemberDecorate 34(T3) 0 ColMajor
|
||||
MemberDecorate 34(T3) 0 MatrixStride 16
|
||||
MemberDecorate 34(T3) 1 RowMajor
|
||||
MemberDecorate 34(T3) 1 MatrixStride 16
|
||||
MemberDecorate 34(T3) 2 ColMajor
|
||||
MemberDecorate 34(T3) 2 MatrixStride 16
|
||||
Decorate 34(T3) GLSLShared
|
||||
Decorate 34(T3) Block
|
||||
MemberDecorate 44(T2) 1 RowMajor
|
||||
MemberDecorate 44(T2) 1 MatrixStride 16
|
||||
Decorate 44(T2) GLSLShared
|
||||
Decorate 44(T2) Block
|
||||
Decorate 52(color) Smooth
|
||||
Decorate 54(c) Location 7
|
||||
Decorate 62(iout) Flat
|
||||
Decorate 74(aiv2) Location 9
|
||||
Decorate 33 ArrayStride 12
|
||||
Decorate 110(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 110(gl_VertexID) NoStaticUse
|
||||
Decorate 111(gl_InstanceID) BuiltIn InstanceId
|
||||
|
@ -26,14 +26,19 @@ Linked geometry stage:
|
||||
MemberName 17(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 17(gl_PerVertex) 1 "gl_ClipDistance"
|
||||
Name 21 "gl_in"
|
||||
Decorate 11 ArrayStride 4
|
||||
MemberDecorate 12(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 12(gl_PerVertex) 1 BuiltIn ClipDistance
|
||||
Decorate 12(gl_PerVertex) Block
|
||||
Decorate 12(gl_PerVertex) Stream 0
|
||||
Decorate 14 Stream 0
|
||||
Decorate 11 ArrayStride 4
|
||||
MemberDecorate 17(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 17(gl_PerVertex) 1 BuiltIn ClipDistance
|
||||
Decorate 17(gl_PerVertex) Block
|
||||
Decorate 19 ArrayStride 16
|
||||
Decorate 11 ArrayStride 4
|
||||
Decorate 11 ArrayStride 4
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
7: TypeFloat 32
|
||||
|
@ -47,29 +47,44 @@ Linked tessellation control stage:
|
||||
Name 86 "ivlb"
|
||||
Name 89 "ovla"
|
||||
Name 90 "ovlb"
|
||||
Decorate 19 ArrayStride 4
|
||||
Decorate 20(gl_PerVertex) Block
|
||||
Decorate 22 ArrayStride 16
|
||||
Decorate 19 ArrayStride 4
|
||||
Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices
|
||||
Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||
Decorate 47(gl_InvocationID) BuiltIn InvocationId
|
||||
Decorate 19 ArrayStride 4
|
||||
MemberDecorate 49(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 49(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 49(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 49(gl_PerVertex) Block
|
||||
Decorate 51 ArrayStride 16
|
||||
Decorate 19 ArrayStride 4
|
||||
Decorate 62 ArrayStride 4
|
||||
Decorate 64(gl_TessLevelOuter) Patch
|
||||
Decorate 64(gl_TessLevelOuter) BuiltIn TessLevelOuter
|
||||
Decorate 69 ArrayStride 4
|
||||
Decorate 71(gl_TessLevelInner) Patch
|
||||
Decorate 71(gl_TessLevelInner) BuiltIn TessLevelInner
|
||||
Decorate 74 ArrayStride 4
|
||||
Decorate 76(outa) NoStaticUse
|
||||
Decorate 77(patchOut) Patch
|
||||
Decorate 77(patchOut) NoStaticUse
|
||||
Decorate 79 ArrayStride 8
|
||||
Decorate 81(inb) NoStaticUse
|
||||
Decorate 79 ArrayStride 8
|
||||
Decorate 82(ind) NoStaticUse
|
||||
Decorate 83 ArrayStride 16
|
||||
Decorate 85(ivla) Location 3
|
||||
Decorate 85(ivla) NoStaticUse
|
||||
Decorate 83 ArrayStride 16
|
||||
Decorate 86(ivlb) Location 4
|
||||
Decorate 86(ivlb) NoStaticUse
|
||||
Decorate 87 ArrayStride 16
|
||||
Decorate 89(ovla) Location 3
|
||||
Decorate 89(ovla) NoStaticUse
|
||||
Decorate 87 ArrayStride 16
|
||||
Decorate 90(ovlb) Location 4
|
||||
Decorate 90(ovlb) NoStaticUse
|
||||
2: TypeVoid
|
||||
|
@ -53,30 +53,44 @@ Linked tessellation evaluation stage:
|
||||
Name 94 "ivla"
|
||||
Name 95 "ivlb"
|
||||
Name 98 "ovla"
|
||||
Decorate 17 ArrayStride 4
|
||||
Decorate 18(gl_PerVertex) Block
|
||||
Decorate 20 ArrayStride 16
|
||||
Decorate 17 ArrayStride 4
|
||||
Decorate 39(gl_PatchVerticesIn) BuiltIn PatchVertices
|
||||
Decorate 42(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||
Decorate 48(gl_TessCoord) BuiltIn TessCoord
|
||||
Decorate 52 ArrayStride 4
|
||||
Decorate 54(gl_TessLevelOuter) Patch
|
||||
Decorate 54(gl_TessLevelOuter) BuiltIn TessLevelOuter
|
||||
Decorate 60 ArrayStride 4
|
||||
Decorate 62(gl_TessLevelInner) Patch
|
||||
Decorate 62(gl_TessLevelInner) BuiltIn TessLevelInner
|
||||
Decorate 66 ArrayStride 4
|
||||
MemberDecorate 67(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 67(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 67(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 67(gl_PerVertex) Block
|
||||
Decorate 66 ArrayStride 4
|
||||
Decorate 78(patchIn) Patch
|
||||
Decorate 78(patchIn) NoStaticUse
|
||||
Decorate 80 ArrayStride 8
|
||||
Decorate 82(inb) NoStaticUse
|
||||
Decorate 80 ArrayStride 8
|
||||
Decorate 83(ind) NoStaticUse
|
||||
Decorate 84(testblb) Block
|
||||
Decorate 85 ArrayStride 16
|
||||
Decorate 87(blb) NoStaticUse
|
||||
Decorate 88(testbld) Block
|
||||
Decorate 89 ArrayStride 16
|
||||
Decorate 91(bld) NoStaticUse
|
||||
Decorate 92 ArrayStride 16
|
||||
Decorate 94(ivla) Location 23
|
||||
Decorate 94(ivla) NoStaticUse
|
||||
Decorate 92 ArrayStride 16
|
||||
Decorate 95(ivlb) Location 24
|
||||
Decorate 95(ivlb) NoStaticUse
|
||||
Decorate 96 ArrayStride 16
|
||||
Decorate 98(ovla) Location 23
|
||||
Decorate 98(ovla) NoStaticUse
|
||||
2: TypeVoid
|
||||
|
@ -35,9 +35,13 @@ Linked vertex stage:
|
||||
Name 59 "sampb4"
|
||||
Name 61 "gl_VertexID"
|
||||
Name 62 "gl_InstanceID"
|
||||
Decorate 10 ArrayStride 4
|
||||
MemberDecorate 11(gl_PerVertex) 0 BuiltIn ClipDistance
|
||||
Decorate 11(gl_PerVertex) Block
|
||||
Decorate 10 ArrayStride 4
|
||||
Decorate 22 ArrayStride 16
|
||||
Decorate 35(badorder3) Flat
|
||||
Decorate 10 ArrayStride 4
|
||||
Decorate 43(uv4) Location 4
|
||||
Decorate 43(uv4) NoStaticUse
|
||||
Decorate 29 NoStaticUse
|
||||
@ -56,6 +60,7 @@ Linked vertex stage:
|
||||
Decorate 51 NoStaticUse
|
||||
Decorate 55(sampb1) Binding 4
|
||||
Decorate 55(sampb1) NoStaticUse
|
||||
Decorate 56 ArrayStride 4
|
||||
Decorate 58(sampb2) Binding 5
|
||||
Decorate 58(sampb2) NoStaticUse
|
||||
Decorate 59(sampb4) Binding 31
|
||||
|
@ -32,9 +32,13 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class,
|
||||
Name 73 "arrY"
|
||||
Name 74 "arrZ"
|
||||
Decorate 22(counter) Binding 0
|
||||
Decorate 28 ArrayStride 4
|
||||
Decorate 30(countArr) Binding 0
|
||||
Decorate 70 ArrayStride 4
|
||||
Decorate 72(arrX) NoStaticUse
|
||||
Decorate 70 ArrayStride 4
|
||||
Decorate 73(arrY) NoStaticUse
|
||||
Decorate 70 ArrayStride 4
|
||||
Decorate 74(arrZ) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
|
@ -18,6 +18,7 @@ Linked fragment stage:
|
||||
Name 4 "main"
|
||||
Name 13 "gl_FragData"
|
||||
Name 17 "Color"
|
||||
Decorate 11 ArrayStride 16
|
||||
Decorate 13(gl_FragData) BuiltIn FragColor
|
||||
Decorate 17(Color) Smooth
|
||||
2: TypeVoid
|
||||
|
@ -19,6 +19,7 @@ Linked fragment stage:
|
||||
Name 13 "gl_FragData"
|
||||
Name 16 "i"
|
||||
Name 19 "Color"
|
||||
Decorate 11 ArrayStride 16
|
||||
Decorate 13(gl_FragData) BuiltIn FragColor
|
||||
Decorate 19(Color) Smooth
|
||||
2: TypeVoid
|
||||
|
@ -21,6 +21,7 @@ Linked vertex stage:
|
||||
Name 27 "color"
|
||||
Name 33 "gl_Position"
|
||||
Name 38 "gl_VertexID"
|
||||
Decorate 22 ArrayStride 16
|
||||
Decorate 24(colorOut) Smooth
|
||||
Decorate 33(gl_Position) BuiltIn Position
|
||||
Decorate 38(gl_VertexID) BuiltIn VertexId
|
||||
|
@ -18,8 +18,10 @@ Linked fragment stage:
|
||||
Name 15 "v"
|
||||
Name 27 "gl_FragColor"
|
||||
Name 33 "u"
|
||||
Decorate 13 ArrayStride 8
|
||||
Decorate 15(v) Smooth
|
||||
Decorate 27(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 31 ArrayStride 16
|
||||
Decorate 33(u) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
|
@ -46,11 +46,16 @@ Linked fragment stage:
|
||||
Name 131 "foo"
|
||||
Name 132 "foo2"
|
||||
Name 134 "uFloatArray"
|
||||
Decorate 35 ArrayStride 4
|
||||
Decorate 41(coord) Smooth
|
||||
Decorate 46 ArrayStride 4
|
||||
Decorate 35 ArrayStride 4
|
||||
Decorate 35 ArrayStride 4
|
||||
Decorate 95(color) Smooth
|
||||
Decorate 105(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 131(foo) NoStaticUse
|
||||
Decorate 132(foo2) NoStaticUse
|
||||
Decorate 35 ArrayStride 4
|
||||
Decorate 134(uFloatArray) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
|
@ -24,6 +24,14 @@ Linked fragment stage:
|
||||
Name 67 "z"
|
||||
Name 74 "v"
|
||||
Name 93 "gl_FragColor"
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 93(gl_FragColor) BuiltIn FragColor
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
|
@ -23,6 +23,7 @@ Linked vertex stage:
|
||||
Name 43 "gl_InstanceID"
|
||||
Decorate 10(glPos) Smooth
|
||||
Decorate 20(f) Smooth
|
||||
Decorate 33 ArrayStride 64
|
||||
Decorate 42(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 42(gl_VertexID) NoStaticUse
|
||||
Decorate 43(gl_InstanceID) BuiltIn InstanceId
|
||||
|
@ -46,7 +46,13 @@ Linked fragment stage:
|
||||
Name 97 "gl_FragColor"
|
||||
Name 114 "sampler"
|
||||
Name 120 "foo2"
|
||||
Decorate 14 ArrayStride 36
|
||||
Decorate 14 ArrayStride 36
|
||||
Decorate 39 ArrayStride 4
|
||||
Decorate 39 ArrayStride 4
|
||||
Decorate 45 ArrayStride 20
|
||||
Decorate 62(coord) Smooth
|
||||
Decorate 39 ArrayStride 4
|
||||
Decorate 97(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 120(foo2) NoStaticUse
|
||||
2: TypeVoid
|
||||
|
@ -30,6 +30,16 @@ Linked fragment stage:
|
||||
Name 52 "sampler"
|
||||
Name 56 "coord"
|
||||
Name 61 "foo"
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 16 ArrayStride 4
|
||||
Decorate 18 ArrayStride 16
|
||||
Decorate 21 ArrayStride 160
|
||||
Decorate 23 ArrayStride 1216
|
||||
Decorate 14 ArrayStride 4
|
||||
Decorate 21 ArrayStride 160
|
||||
Decorate 18 ArrayStride 16
|
||||
Decorate 21 ArrayStride 160
|
||||
Decorate 16 ArrayStride 4
|
||||
Decorate 47(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 56(coord) Smooth
|
||||
Decorate 61(foo) NoStaticUse
|
||||
|
@ -20,6 +20,8 @@ Linked fragment stage:
|
||||
Name 36 "alpha"
|
||||
Name 47 "gl_FragColor"
|
||||
Name 52 "texSampler2D"
|
||||
Decorate 13 ArrayStride 16
|
||||
Decorate 34 ArrayStride 4
|
||||
Decorate 47(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 52(texSampler2D) NoStaticUse
|
||||
2: TypeVoid
|
||||
|
@ -38,8 +38,15 @@ Linked fragment stage:
|
||||
Name 60 "sampler"
|
||||
Name 64 "coord"
|
||||
Name 70 "constructed"
|
||||
Decorate 18 ArrayStride 24
|
||||
Decorate 18 ArrayStride 24
|
||||
Decorate 33 ArrayStride 24
|
||||
Decorate 18 ArrayStride 24
|
||||
Decorate 18 ArrayStride 24
|
||||
Decorate 55(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 64(coord) Smooth
|
||||
Decorate 68 ArrayStride 8
|
||||
Decorate 68 ArrayStride 8
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
7: TypeInt 32 1
|
||||
|
@ -26,10 +26,12 @@ Linked fragment stage:
|
||||
Name 40 "alpha"
|
||||
Name 45 "gl_FragColor"
|
||||
Name 49 "foo"
|
||||
Decorate 18 ArrayStride 16
|
||||
Decorate 20(gl_TexCoord) Smooth
|
||||
Decorate 35(color) Smooth
|
||||
Decorate 40(alpha) Smooth
|
||||
Decorate 45(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 47 ArrayStride 16
|
||||
Decorate 49(foo) Smooth
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
|
@ -28,7 +28,9 @@ Linked fragment stage:
|
||||
Name 46 "color"
|
||||
Name 51 "alpha"
|
||||
Name 56 "gl_FragColor"
|
||||
Decorate 18 ArrayStride 16
|
||||
Decorate 20(userIn) Smooth
|
||||
Decorate 29 ArrayStride 16
|
||||
Decorate 31(gl_TexCoord) Smooth
|
||||
Decorate 46(color) Smooth
|
||||
Decorate 51(alpha) Smooth
|
||||
|
@ -2,5 +2,5 @@
|
||||
// For the version, it uses the latest git tag followed by the number of commits.
|
||||
// For the date, it uses the current date (when then script is run).
|
||||
|
||||
#define GLSLANG_REVISION "3.0.735"
|
||||
#define GLSLANG_REVISION "3.0.741"
|
||||
#define GLSLANG_DATE "09-Sep-2015"
|
||||
|
Loading…
Reference in New Issue
Block a user