;; Tests a diff where the dst shader doesn't have OpExtImport while the
;; src shader does (and uses OpExtInst).  This test ensures that when matching,
;; the OpExtImport instruction from the correct module is referenced.
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %4 "main" %9 %11
               OpExecutionMode %4 OriginUpperLeft
               OpSource ESSL 310
               OpName %4 "main"
               OpName %9 "color"
               OpName %11 "v"
               OpDecorate %9 RelaxedPrecision
               OpDecorate %9 Location 0
               OpDecorate %11 RelaxedPrecision
               OpDecorate %11 Location 0
               OpDecorate %12 RelaxedPrecision
               OpDecorate %13 RelaxedPrecision
               OpDecorate %14 RelaxedPrecision
          %2 = OpTypeVoid
          %3 = OpTypeFunction %2
          %6 = OpTypeFloat 32
          %7 = OpTypeVector %6 4
          %8 = OpTypePointer Output %7
          %9 = OpVariable %8 Output
         %10 = OpTypePointer Input %6
         %11 = OpVariable %10 Input
          %4 = OpFunction %2 None %3
          %5 = OpLabel
         %12 = OpLoad %6 %11
         %13 = OpExtInst %6 %1 Log2 %12
         %14 = OpCompositeConstruct %7 %13 %13 %13 %13
               OpStore %9 %14
               OpReturn
               OpFunctionEnd

