[PatternMatch] allow undef elements when matching vector FP +0.0

This continues the FP constant pattern matching improvements from:
https://reviews.llvm.org/rL327627
https://reviews.llvm.org/rL327339
https://reviews.llvm.org/rL327307

Several integer constant matchers also have this ability. I'm
separating matching of integer/pointer null from FP positive zero
and renaming/commenting to make the functionality clearer.

llvm-svn: 328461
diff --git a/llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll b/llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll
index 4c5b5f0..04e6ce1 100644
--- a/llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll
+++ b/llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll
@@ -72,8 +72,7 @@
 
 define <2 x float> @fsub_x_0_vec_undef(<2 x float> %x) {
 ; CHECK-LABEL: @fsub_x_0_vec_undef(
-; CHECK-NEXT:    [[R:%.*]] = fsub <2 x float> [[X:%.*]], <float undef, float 0.000000e+00>
-; CHECK-NEXT:    ret <2 x float> [[R]]
+; CHECK-NEXT:    ret <2 x float> [[X:%.*]]
 ;
   %r = fsub <2 x float> %x, <float undef, float 0.0>
   ret <2 x float> %r