HLSL: Add SampleLevel method
diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
new file mode 100644
index 0000000..f7a6903
--- /dev/null
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -0,0 +1,483 @@
+hlsl.samplelevel.array.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:44  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24    Function Parameters: 
+0:?     Sequence
+0:27      Sequence
+0:27        move second child to first child (temp 4-component vector of float)
+0:27          'txval10' (temp 4-component vector of float)
+0:27          textureLod (global 4-component vector of float)
+0:27            Construct combined texture-sampler (temp sampler1DArray)
+0:27              'g_tTex1df4' (uniform texture1DArray)
+0:27              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:27            Constant:
+0:27              0.750000
+0:28      Sequence
+0:28        move second child to first child (temp 4-component vector of int)
+0:28          'txval11' (temp 4-component vector of int)
+0:28          textureLod (global 4-component vector of int)
+0:28            Construct combined texture-sampler (temp isampler1DArray)
+0:28              'g_tTex1di4' (uniform itexture1DArray)
+0:28              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.200000
+0:?               0.300000
+0:28            Constant:
+0:28              0.750000
+0:29      Sequence
+0:29        move second child to first child (temp 4-component vector of uint)
+0:29          'txval12' (temp 4-component vector of uint)
+0:29          textureLod (global 4-component vector of uint)
+0:29            Construct combined texture-sampler (temp usampler1DArray)
+0:29              'g_tTex1du4' (uniform utexture1DArray)
+0:29              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:29            Constant:
+0:29              0.750000
+0:31      Sequence
+0:31        move second child to first child (temp 4-component vector of float)
+0:31          'txval20' (temp 4-component vector of float)
+0:31          textureLod (global 4-component vector of float)
+0:31            Construct combined texture-sampler (temp sampler2DArray)
+0:31              'g_tTex2df4' (uniform texture2DArray)
+0:31              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:31            Constant:
+0:31              0.750000
+0:32      Sequence
+0:32        move second child to first child (temp 4-component vector of int)
+0:32          'txval21' (temp 4-component vector of int)
+0:32          textureLod (global 4-component vector of int)
+0:32            Construct combined texture-sampler (temp isampler2DArray)
+0:32              'g_tTex2di4' (uniform itexture2DArray)
+0:32              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:?               0.500000
+0:32            Constant:
+0:32              0.750000
+0:33      Sequence
+0:33        move second child to first child (temp 4-component vector of uint)
+0:33          'txval22' (temp 4-component vector of uint)
+0:33          textureLod (global 4-component vector of uint)
+0:33            Construct combined texture-sampler (temp usampler2DArray)
+0:33              'g_tTex2du4' (uniform utexture2DArray)
+0:33              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:?               0.700000
+0:33            Constant:
+0:33              0.750000
+0:35      Sequence
+0:35        move second child to first child (temp 4-component vector of float)
+0:35          'txval40' (temp 4-component vector of float)
+0:35          textureLod (global 4-component vector of float)
+0:35            Construct combined texture-sampler (temp samplerCubeArray)
+0:35              'g_tTexcdf4' (uniform textureCubeArray)
+0:35              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:?               0.400000
+0:35            Constant:
+0:35              0.750000
+0:36      Sequence
+0:36        move second child to first child (temp 4-component vector of int)
+0:36          'txval41' (temp 4-component vector of int)
+0:36          textureLod (global 4-component vector of int)
+0:36            Construct combined texture-sampler (temp isamplerCubeArray)
+0:36              'g_tTexcdi4' (uniform itextureCubeArray)
+0:36              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:?               0.700000
+0:36            Constant:
+0:36              0.750000
+0:37      Sequence
+0:37        move second child to first child (temp 4-component vector of uint)
+0:37          'txval42' (temp 4-component vector of uint)
+0:37          textureLod (global 4-component vector of uint)
+0:37            Construct combined texture-sampler (temp usamplerCubeArray)
+0:37              'g_tTexcdu4' (uniform utextureCubeArray)
+0:37              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:?               1.000000
+0:37            Constant:
+0:37              0.750000
+0:40      move second child to first child (temp float)
+0:40        Depth: direct index for structure (temp float FragDepth)
+0:40          'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40          Constant:
+0:40            1 (const int)
+0:40        Constant:
+0:40          1.000000
+0:42      Branch: Return with expression
+0:42        'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:?   Linker Objects
+0:?     'g_sSamp' (uniform sampler)
+0:?     'g_tTex1df4a' (uniform texture1DArray)
+0:?     'g_tTex1df4' (uniform texture1DArray)
+0:?     'g_tTex1di4' (uniform itexture1DArray)
+0:?     'g_tTex1du4' (uniform utexture1DArray)
+0:?     'g_tTex2df4' (uniform texture2DArray)
+0:?     'g_tTex2di4' (uniform itexture2DArray)
+0:?     'g_tTex2du4' (uniform utexture2DArray)
+0:?     'g_tTexcdf4' (uniform textureCubeArray)
+0:?     'g_tTexcdi4' (uniform itextureCubeArray)
+0:?     'g_tTexcdu4' (uniform utextureCubeArray)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:44  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24    Function Parameters: 
+0:?     Sequence
+0:27      Sequence
+0:27        move second child to first child (temp 4-component vector of float)
+0:27          'txval10' (temp 4-component vector of float)
+0:27          textureLod (global 4-component vector of float)
+0:27            Construct combined texture-sampler (temp sampler1DArray)
+0:27              'g_tTex1df4' (uniform texture1DArray)
+0:27              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:27            Constant:
+0:27              0.750000
+0:28      Sequence
+0:28        move second child to first child (temp 4-component vector of int)
+0:28          'txval11' (temp 4-component vector of int)
+0:28          textureLod (global 4-component vector of int)
+0:28            Construct combined texture-sampler (temp isampler1DArray)
+0:28              'g_tTex1di4' (uniform itexture1DArray)
+0:28              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.200000
+0:?               0.300000
+0:28            Constant:
+0:28              0.750000
+0:29      Sequence
+0:29        move second child to first child (temp 4-component vector of uint)
+0:29          'txval12' (temp 4-component vector of uint)
+0:29          textureLod (global 4-component vector of uint)
+0:29            Construct combined texture-sampler (temp usampler1DArray)
+0:29              'g_tTex1du4' (uniform utexture1DArray)
+0:29              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:29            Constant:
+0:29              0.750000
+0:31      Sequence
+0:31        move second child to first child (temp 4-component vector of float)
+0:31          'txval20' (temp 4-component vector of float)
+0:31          textureLod (global 4-component vector of float)
+0:31            Construct combined texture-sampler (temp sampler2DArray)
+0:31              'g_tTex2df4' (uniform texture2DArray)
+0:31              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:31            Constant:
+0:31              0.750000
+0:32      Sequence
+0:32        move second child to first child (temp 4-component vector of int)
+0:32          'txval21' (temp 4-component vector of int)
+0:32          textureLod (global 4-component vector of int)
+0:32            Construct combined texture-sampler (temp isampler2DArray)
+0:32              'g_tTex2di4' (uniform itexture2DArray)
+0:32              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:?               0.500000
+0:32            Constant:
+0:32              0.750000
+0:33      Sequence
+0:33        move second child to first child (temp 4-component vector of uint)
+0:33          'txval22' (temp 4-component vector of uint)
+0:33          textureLod (global 4-component vector of uint)
+0:33            Construct combined texture-sampler (temp usampler2DArray)
+0:33              'g_tTex2du4' (uniform utexture2DArray)
+0:33              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:?               0.700000
+0:33            Constant:
+0:33              0.750000
+0:35      Sequence
+0:35        move second child to first child (temp 4-component vector of float)
+0:35          'txval40' (temp 4-component vector of float)
+0:35          textureLod (global 4-component vector of float)
+0:35            Construct combined texture-sampler (temp samplerCubeArray)
+0:35              'g_tTexcdf4' (uniform textureCubeArray)
+0:35              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:?               0.400000
+0:35            Constant:
+0:35              0.750000
+0:36      Sequence
+0:36        move second child to first child (temp 4-component vector of int)
+0:36          'txval41' (temp 4-component vector of int)
+0:36          textureLod (global 4-component vector of int)
+0:36            Construct combined texture-sampler (temp isamplerCubeArray)
+0:36              'g_tTexcdi4' (uniform itextureCubeArray)
+0:36              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:?               0.700000
+0:36            Constant:
+0:36              0.750000
+0:37      Sequence
+0:37        move second child to first child (temp 4-component vector of uint)
+0:37          'txval42' (temp 4-component vector of uint)
+0:37          textureLod (global 4-component vector of uint)
+0:37            Construct combined texture-sampler (temp usamplerCubeArray)
+0:37              'g_tTexcdu4' (uniform utextureCubeArray)
+0:37              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:?               1.000000
+0:37            Constant:
+0:37              0.750000
+0:40      move second child to first child (temp float)
+0:40        Depth: direct index for structure (temp float FragDepth)
+0:40          'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40          Constant:
+0:40            1 (const int)
+0:40        Constant:
+0:40          1.000000
+0:42      Branch: Return with expression
+0:42        'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:?   Linker Objects
+0:?     'g_sSamp' (uniform sampler)
+0:?     'g_tTex1df4a' (uniform texture1DArray)
+0:?     'g_tTex1df4' (uniform texture1DArray)
+0:?     'g_tTex1di4' (uniform itexture1DArray)
+0:?     'g_tTex1du4' (uniform utexture1DArray)
+0:?     'g_tTex2df4' (uniform texture2DArray)
+0:?     'g_tTex2di4' (uniform itexture2DArray)
+0:?     'g_tTex2du4' (uniform utexture2DArray)
+0:?     'g_tTexcdf4' (uniform textureCubeArray)
+0:?     'g_tTexcdi4' (uniform itextureCubeArray)
+0:?     'g_tTexcdu4' (uniform utextureCubeArray)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 130
+
+                              Capability Shader
+                              Capability Sampled1D
+                              Capability SampledCubeArray
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main"
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 450
+                              Name 4  "main"
+                              Name 9  "txval10"
+                              Name 12  "g_tTex1df4"
+                              Name 16  "g_sSamp"
+                              Name 29  "txval11"
+                              Name 32  "g_tTex1di4"
+                              Name 43  "txval12"
+                              Name 46  "g_tTex1du4"
+                              Name 54  "txval20"
+                              Name 57  "g_tTex2df4"
+                              Name 65  "txval21"
+                              Name 68  "g_tTex2di4"
+                              Name 76  "txval22"
+                              Name 79  "g_tTex2du4"
+                              Name 88  "txval40"
+                              Name 91  "g_tTexcdf4"
+                              Name 98  "txval41"
+                              Name 101  "g_tTexcdi4"
+                              Name 108  "txval42"
+                              Name 111  "g_tTexcdu4"
+                              Name 121  "PS_OUTPUT"
+                              MemberName 121(PS_OUTPUT) 0  "Color"
+                              MemberName 121(PS_OUTPUT) 1  "Depth"
+                              Name 123  "psout"
+                              Name 129  "g_tTex1df4a"
+                              Decorate 12(g_tTex1df4) DescriptorSet 0
+                              Decorate 16(g_sSamp) DescriptorSet 0
+                              Decorate 32(g_tTex1di4) DescriptorSet 0
+                              Decorate 46(g_tTex1du4) DescriptorSet 0
+                              Decorate 57(g_tTex2df4) DescriptorSet 0
+                              Decorate 68(g_tTex2di4) DescriptorSet 0
+                              Decorate 79(g_tTex2du4) DescriptorSet 0
+                              Decorate 91(g_tTexcdf4) DescriptorSet 0
+                              Decorate 101(g_tTexcdi4) DescriptorSet 0
+                              Decorate 111(g_tTexcdu4) DescriptorSet 0
+                              MemberDecorate 121(PS_OUTPUT) 1 BuiltIn FragDepth
+                              Decorate 129(g_tTex1df4a) DescriptorSet 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+              10:             TypeImage 6(float) 1D array sampled format:Unknown
+              11:             TypePointer UniformConstant 10
+  12(g_tTex1df4):     11(ptr) Variable UniformConstant
+              14:             TypeSampler
+              15:             TypePointer UniformConstant 14
+     16(g_sSamp):     15(ptr) Variable UniformConstant
+              18:             TypeSampledImage 10
+              20:             TypeVector 6(float) 2
+              21:    6(float) Constant 1036831949
+              22:    6(float) Constant 1045220557
+              23:   20(fvec2) ConstantComposite 21 22
+              24:    6(float) Constant 1061158912
+              26:             TypeInt 32 1
+              27:             TypeVector 26(int) 4
+              28:             TypePointer Function 27(ivec4)
+              30:             TypeImage 26(int) 1D array sampled format:Unknown
+              31:             TypePointer UniformConstant 30
+  32(g_tTex1di4):     31(ptr) Variable UniformConstant
+              35:             TypeSampledImage 30
+              37:    6(float) Constant 1050253722
+              38:   20(fvec2) ConstantComposite 22 37
+              40:             TypeInt 32 0
+              41:             TypeVector 40(int) 4
+              42:             TypePointer Function 41(ivec4)
+              44:             TypeImage 40(int) 1D array sampled format:Unknown
+              45:             TypePointer UniformConstant 44
+  46(g_tTex1du4):     45(ptr) Variable UniformConstant
+              49:             TypeSampledImage 44
+              51:    6(float) Constant 1053609165
+              52:   20(fvec2) ConstantComposite 37 51
+              55:             TypeImage 6(float) 2D array sampled format:Unknown
+              56:             TypePointer UniformConstant 55
+  57(g_tTex2df4):     56(ptr) Variable UniformConstant
+              60:             TypeSampledImage 55
+              62:             TypeVector 6(float) 3
+              63:   62(fvec3) ConstantComposite 21 22 37
+              66:             TypeImage 26(int) 2D array sampled format:Unknown
+              67:             TypePointer UniformConstant 66
+  68(g_tTex2di4):     67(ptr) Variable UniformConstant
+              71:             TypeSampledImage 66
+              73:    6(float) Constant 1056964608
+              74:   62(fvec3) ConstantComposite 37 51 73
+              77:             TypeImage 40(int) 2D array sampled format:Unknown
+              78:             TypePointer UniformConstant 77
+  79(g_tTex2du4):     78(ptr) Variable UniformConstant
+              82:             TypeSampledImage 77
+              84:    6(float) Constant 1058642330
+              85:    6(float) Constant 1060320051
+              86:   62(fvec3) ConstantComposite 73 84 85
+              89:             TypeImage 6(float) Cube array sampled format:Unknown
+              90:             TypePointer UniformConstant 89
+  91(g_tTexcdf4):     90(ptr) Variable UniformConstant
+              94:             TypeSampledImage 89
+              96:    7(fvec4) ConstantComposite 21 22 37 51
+              99:             TypeImage 26(int) Cube array sampled format:Unknown
+             100:             TypePointer UniformConstant 99
+ 101(g_tTexcdi4):    100(ptr) Variable UniformConstant
+             104:             TypeSampledImage 99
+             106:    7(fvec4) ConstantComposite 51 73 84 85
+             109:             TypeImage 40(int) Cube array sampled format:Unknown
+             110:             TypePointer UniformConstant 109
+ 111(g_tTexcdu4):    110(ptr) Variable UniformConstant
+             114:             TypeSampledImage 109
+             116:    6(float) Constant 1061997773
+             117:    6(float) Constant 1063675494
+             118:    6(float) Constant 1065353216
+             119:    7(fvec4) ConstantComposite 85 116 117 118
+  121(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+             122:             TypePointer Function 121(PS_OUTPUT)
+             124:     26(int) Constant 1
+             125:             TypePointer Function 6(float)
+129(g_tTex1df4a):     11(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+      9(txval10):      8(ptr) Variable Function
+     29(txval11):     28(ptr) Variable Function
+     43(txval12):     42(ptr) Variable Function
+     54(txval20):      8(ptr) Variable Function
+     65(txval21):     28(ptr) Variable Function
+     76(txval22):     42(ptr) Variable Function
+     88(txval40):      8(ptr) Variable Function
+     98(txval41):     28(ptr) Variable Function
+    108(txval42):     42(ptr) Variable Function
+      123(psout):    122(ptr) Variable Function
+              13:          10 Load 12(g_tTex1df4)
+              17:          14 Load 16(g_sSamp)
+              19:          18 SampledImage 13 17
+              25:    7(fvec4) ImageSampleExplicitLod 19 23 Lod 24
+                              Store 9(txval10) 25
+              33:          30 Load 32(g_tTex1di4)
+              34:          14 Load 16(g_sSamp)
+              36:          35 SampledImage 33 34
+              39:   27(ivec4) ImageSampleExplicitLod 36 38 Lod 24
+                              Store 29(txval11) 39
+              47:          44 Load 46(g_tTex1du4)
+              48:          14 Load 16(g_sSamp)
+              50:          49 SampledImage 47 48
+              53:   41(ivec4) ImageSampleExplicitLod 50 52 Lod 24
+                              Store 43(txval12) 53
+              58:          55 Load 57(g_tTex2df4)
+              59:          14 Load 16(g_sSamp)
+              61:          60 SampledImage 58 59
+              64:    7(fvec4) ImageSampleExplicitLod 61 63 Lod 24
+                              Store 54(txval20) 64
+              69:          66 Load 68(g_tTex2di4)
+              70:          14 Load 16(g_sSamp)
+              72:          71 SampledImage 69 70
+              75:   27(ivec4) ImageSampleExplicitLod 72 74 Lod 24
+                              Store 65(txval21) 75
+              80:          77 Load 79(g_tTex2du4)
+              81:          14 Load 16(g_sSamp)
+              83:          82 SampledImage 80 81
+              87:   41(ivec4) ImageSampleExplicitLod 83 86 Lod 24
+                              Store 76(txval22) 87
+              92:          89 Load 91(g_tTexcdf4)
+              93:          14 Load 16(g_sSamp)
+              95:          94 SampledImage 92 93
+              97:    7(fvec4) ImageSampleExplicitLod 95 96 Lod 24
+                              Store 88(txval40) 97
+             102:          99 Load 101(g_tTexcdi4)
+             103:          14 Load 16(g_sSamp)
+             105:         104 SampledImage 102 103
+             107:   27(ivec4) ImageSampleExplicitLod 105 106 Lod 24
+                              Store 98(txval41) 107
+             112:         109 Load 111(g_tTexcdu4)
+             113:          14 Load 16(g_sSamp)
+             115:         114 SampledImage 112 113
+             120:   41(ivec4) ImageSampleExplicitLod 115 119 Lod 24
+                              Store 108(txval42) 120
+             126:    125(ptr) AccessChain 123(psout) 124
+                              Store 126 118
+             127:121(PS_OUTPUT) Load 123(psout)
+                              ReturnValue 127
+                              FunctionEnd