GlobalISel: Implement widenScalar for g_extract scalar results

llvm-svn: 354293
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
index 4487bff..58fd948 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
@@ -516,9 +516,10 @@
       .widenScalarIf(
           [=](const LegalityQuery &Query) {
             const LLT Ty1 = Query.Types[1];
-            return (Ty1.getScalarSizeInBits() < 16);
+            return Ty1.isVector() && Ty1.getScalarSizeInBits() < 16;
           },
-          LegalizeMutations::widenScalarOrEltToNextPow2(1, 16));
+          LegalizeMutations::widenScalarOrEltToNextPow2(1, 16))
+    .clampScalar(0, S16, S256);
 
   // TODO: vectors of pointers
   getActionDefinitionsBuilder(G_BUILD_VECTOR)