| ; RUN: llc -march=lanai < %s | FileCheck %s | |
| ; Test the in place lowering of mul i32. | |
| define i32 @f6(i32 inreg %a) #0 { | |
| entry: | |
| %mul = mul nsw i32 %a, 6 | |
| ret i32 %mul | |
| } | |
| ; CHECK: sh %r6, 0x1, %r{{[0-9]+}} | |
| ; CHECK: sh %r6, 0x3, %r{{[0-9]+}} | |
| ; CHECK: sub %r{{[0-9]+}}, %r{{[0-9]+}}, %rv | |
| define i32 @f7(i32 inreg %a) #0 { | |
| entry: | |
| %mul = mul nsw i32 %a, 7 | |
| ret i32 %mul | |
| } | |
| ; CHECK: sh %r6, 0x3, %r{{[0-9]+}} | |
| ; CHECK: sub %r{{[0-9]+}}, %r6, %rv | |
| define i32 @f8(i32 inreg %a) #0 { | |
| entry: | |
| %mul = shl nsw i32 %a, 3 | |
| ret i32 %mul | |
| } | |
| ; CHECK: sh %r6, 0x3, %rv | |
| define i32 @fm6(i32 inreg %a) #0 { | |
| entry: | |
| %mul = mul nsw i32 %a, -6 | |
| ret i32 %mul | |
| } | |
| ; CHECK: sh %r6, 0x3, %r{{[0-9]+}} | |
| ; CHECK: sh %r6, 0x1, %r{{[0-9]+}} | |
| ; CHECK: sub %r{{[0-9]+}}, %r{{[0-9]+}}, %rv | |
| define i32 @fm7(i32 inreg %a) #0 { | |
| entry: | |
| %mul = mul nsw i32 %a, -7 | |
| ret i32 %mul | |
| } | |
| ; CHECK: sh %r6, 0x3, %r{{[0-9]+}} | |
| ; CHECK: sub %r6, %r{{[0-9]+}}, %rv | |
| define i32 @fm8(i32 inreg %a) #0 { | |
| entry: | |
| %mul = mul nsw i32 %a, -8 | |
| ret i32 %mul | |
| } | |
| ; CHECK: sh %r6, 0x3, %r{{[0-9]+}} | |
| ; CHECK: sub %r{{[0-9]+}}, %r{{[0-9]+}}, %rv | |
| define i32 @h1(i32 inreg %a) #0 { | |
| entry: | |
| %mul = mul i32 %a, -1431655765 | |
| ret i32 %mul | |
| } | |
| ; CHECK: h1 | |
| ; CHECK: mulsi3 |