1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=lanai < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Test the in place lowering of mul i32. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i32 @f6(i32 inreg %a) #0 { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %mul = mul nsw i32 %a, 6 8*9880d681SAndroid Build Coastguard Worker ret i32 %mul 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker; CHECK: sh %r6, 0x1, %r{{[0-9]+}} 11*9880d681SAndroid Build Coastguard Worker; CHECK: sh %r6, 0x3, %r{{[0-9]+}} 12*9880d681SAndroid Build Coastguard Worker; CHECK: sub %r{{[0-9]+}}, %r{{[0-9]+}}, %rv 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine i32 @f7(i32 inreg %a) #0 { 15*9880d681SAndroid Build Coastguard Workerentry: 16*9880d681SAndroid Build Coastguard Worker %mul = mul nsw i32 %a, 7 17*9880d681SAndroid Build Coastguard Worker ret i32 %mul 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker; CHECK: sh %r6, 0x3, %r{{[0-9]+}} 20*9880d681SAndroid Build Coastguard Worker; CHECK: sub %r{{[0-9]+}}, %r6, %rv 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdefine i32 @f8(i32 inreg %a) #0 { 23*9880d681SAndroid Build Coastguard Workerentry: 24*9880d681SAndroid Build Coastguard Worker %mul = shl nsw i32 %a, 3 25*9880d681SAndroid Build Coastguard Worker ret i32 %mul 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker; CHECK: sh %r6, 0x3, %rv 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine i32 @fm6(i32 inreg %a) #0 { 30*9880d681SAndroid Build Coastguard Workerentry: 31*9880d681SAndroid Build Coastguard Worker %mul = mul nsw i32 %a, -6 32*9880d681SAndroid Build Coastguard Worker ret i32 %mul 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker; CHECK: sh %r6, 0x3, %r{{[0-9]+}} 35*9880d681SAndroid Build Coastguard Worker; CHECK: sh %r6, 0x1, %r{{[0-9]+}} 36*9880d681SAndroid Build Coastguard Worker; CHECK: sub %r{{[0-9]+}}, %r{{[0-9]+}}, %rv 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerdefine i32 @fm7(i32 inreg %a) #0 { 39*9880d681SAndroid Build Coastguard Workerentry: 40*9880d681SAndroid Build Coastguard Worker %mul = mul nsw i32 %a, -7 41*9880d681SAndroid Build Coastguard Worker ret i32 %mul 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker; CHECK: sh %r6, 0x3, %r{{[0-9]+}} 44*9880d681SAndroid Build Coastguard Worker; CHECK: sub %r6, %r{{[0-9]+}}, %rv 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerdefine i32 @fm8(i32 inreg %a) #0 { 47*9880d681SAndroid Build Coastguard Workerentry: 48*9880d681SAndroid Build Coastguard Worker %mul = mul nsw i32 %a, -8 49*9880d681SAndroid Build Coastguard Worker ret i32 %mul 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Worker; CHECK: sh %r6, 0x3, %r{{[0-9]+}} 52*9880d681SAndroid Build Coastguard Worker; CHECK: sub %r{{[0-9]+}}, %r{{[0-9]+}}, %rv 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine i32 @h1(i32 inreg %a) #0 { 55*9880d681SAndroid Build Coastguard Workerentry: 56*9880d681SAndroid Build Coastguard Worker %mul = mul i32 %a, -1431655765 57*9880d681SAndroid Build Coastguard Worker ret i32 %mul 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker; CHECK: h1 60*9880d681SAndroid Build Coastguard Worker; CHECK: mulsi3 61