[X86] Don't promote i16 compares to i32 if the immediate will fit in 8 bits.

The comments in this code say we were trying to avoid 16-bit immediates, but if the immediate fits in 8-bits this isn't an issue. This avoids creating a zero extend that probably won't go away.

The movmskb related changes are interesting. The movmskb instruction writes a 32-bit result, but fills the upper bits with 0. So the zero_extend we were previously emitting was free, but we turned a -1 immediate that would fit in 8-bits into a 32-bit immediate so it was still bad.

llvm-svn: 343871
diff --git a/llvm/test/CodeGen/X86/sat-add.ll b/llvm/test/CodeGen/X86/sat-add.ll
index 1f2b69f..2768353 100644
--- a/llvm/test/CodeGen/X86/sat-add.ll
+++ b/llvm/test/CodeGen/X86/sat-add.ll
@@ -60,8 +60,7 @@
 define i16 @unsigned_sat_constant_i16_using_min(i16 %x) {
 ; ANY-LABEL: unsigned_sat_constant_i16_using_min:
 ; ANY:       # %bb.0:
-; ANY-NEXT:    movzwl %di, %eax
-; ANY-NEXT:    cmpl $65493, %eax # imm = 0xFFD5
+; ANY-NEXT:    cmpw $-43, %di
 ; ANY-NEXT:    movl $65493, %eax # imm = 0xFFD5
 ; ANY-NEXT:    cmovbl %edi, %eax
 ; ANY-NEXT:    addl $42, %eax