CfConstNumber: Emit BIPUSH and SIPUSH

The 'arithmetic' example contains several integers that are compiled to
BIPUSH and SIPUSH instructions by javac, but R8 emits them as LDC
instead. Change to BIPUSH and SIPUSH when possible.

Change-Id: I18134b0fb5cc721a0a66cc4b8b79a9cc7a89e016
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java b/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
index 07fd664..f3aa7f3 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
@@ -56,6 +56,10 @@
           int value = getIntValue();
           if (-1 <= value && value <= 5) {
             visitor.visitInsn(Opcodes.ICONST_0 + value);
+          } else if (Byte.MIN_VALUE <= value && value <= Byte.MAX_VALUE) {
+            visitor.visitIntInsn(Opcodes.BIPUSH, value);
+          } else if (Short.MIN_VALUE <= value && value <= Short.MAX_VALUE) {
+            visitor.visitIntInsn(Opcodes.SIPUSH, value);
           } else {
             visitor.visitLdcInsn(value);
           }