1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi %s -o - | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine i32 @t9(i32 %v) nounwind readnone { 4*9880d681SAndroid Build Coastguard Workerentry: 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t9: 6*9880d681SAndroid Build Coastguard Worker; CHECK: add r0, r0, r0, lsl #3 7*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, 9 8*9880d681SAndroid Build Coastguard Worker ret i32 %0 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine i32 @t7(i32 %v) nounwind readnone { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t7: 14*9880d681SAndroid Build Coastguard Worker; CHECK: rsb r0, r0, r0, lsl #3 15*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, 7 16*9880d681SAndroid Build Coastguard Worker ret i32 %0 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine i32 @t5(i32 %v) nounwind readnone { 20*9880d681SAndroid Build Coastguard Workerentry: 21*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t5: 22*9880d681SAndroid Build Coastguard Worker; CHECK: add r0, r0, r0, lsl #2 23*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, 5 24*9880d681SAndroid Build Coastguard Worker ret i32 %0 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerdefine i32 @t3(i32 %v) nounwind readnone { 28*9880d681SAndroid Build Coastguard Workerentry: 29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t3: 30*9880d681SAndroid Build Coastguard Worker; CHECK: add r0, r0, r0, lsl #1 31*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, 3 32*9880d681SAndroid Build Coastguard Worker ret i32 %0 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine i32 @t12288(i32 %v) nounwind readnone { 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t12288: 38*9880d681SAndroid Build Coastguard Worker; CHECK: add r0, r0, r0, lsl #1 39*9880d681SAndroid Build Coastguard Worker; CHECK: lsl{{.*}}#12 40*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, 12288 41*9880d681SAndroid Build Coastguard Worker ret i32 %0 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerdefine i32 @tn9(i32 %v) nounwind readnone { 45*9880d681SAndroid Build Coastguard Workerentry: 46*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: tn9: 47*9880d681SAndroid Build Coastguard Worker; CHECK: add r0, r0, r0, lsl #3 48*9880d681SAndroid Build Coastguard Worker; CHECK: rsb r0, r0, #0 49*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, -9 50*9880d681SAndroid Build Coastguard Worker ret i32 %0 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdefine i32 @tn7(i32 %v) nounwind readnone { 54*9880d681SAndroid Build Coastguard Workerentry: 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: tn7: 56*9880d681SAndroid Build Coastguard Worker; CHECK: sub r0, r0, r0, lsl #3 57*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, -7 58*9880d681SAndroid Build Coastguard Worker ret i32 %0 59*9880d681SAndroid Build Coastguard Worker} 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workerdefine i32 @tn5(i32 %v) nounwind readnone { 62*9880d681SAndroid Build Coastguard Workerentry: 63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: tn5: 64*9880d681SAndroid Build Coastguard Worker; CHECK: add r0, r0, r0, lsl #2 65*9880d681SAndroid Build Coastguard Worker; CHECK: rsb r0, r0, #0 66*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, -5 67*9880d681SAndroid Build Coastguard Worker ret i32 %0 68*9880d681SAndroid Build Coastguard Worker} 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerdefine i32 @tn3(i32 %v) nounwind readnone { 71*9880d681SAndroid Build Coastguard Workerentry: 72*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: tn3: 73*9880d681SAndroid Build Coastguard Worker; CHECK: sub r0, r0, r0, lsl #2 74*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, -3 75*9880d681SAndroid Build Coastguard Worker ret i32 %0 76*9880d681SAndroid Build Coastguard Worker} 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerdefine i32 @tn12288(i32 %v) nounwind readnone { 79*9880d681SAndroid Build Coastguard Workerentry: 80*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: tn12288: 81*9880d681SAndroid Build Coastguard Worker; CHECK: sub r0, r0, r0, lsl #2 82*9880d681SAndroid Build Coastguard Worker; CHECK: lsl{{.*}}#12 83*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %v, -12288 84*9880d681SAndroid Build Coastguard Worker ret i32 %0 85*9880d681SAndroid Build Coastguard Worker} 86