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