1 ; RUN: llc -mtriple=lanai < %s | FileCheck %s
3 ; Test the in place lowering of mul i32.
5 define i32 @f6(i32 inreg %a) #0 {
7 %mul = mul nsw i32 %a, 6
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
14 define i32 @f7(i32 inreg %a) #0 {
16 %mul = mul nsw i32 %a, 7
19 ; CHECK: sh %r6, 0x3, %r{{[0-9]+}}
20 ; CHECK: sub %r{{[0-9]+}}, %r6, %rv
22 define i32 @f8(i32 inreg %a) #0 {
24 %mul = shl nsw i32 %a, 3
27 ; CHECK: sh %r6, 0x3, %rv
29 define i32 @fm6(i32 inreg %a) #0 {
31 %mul = mul nsw i32 %a, -6
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
38 define i32 @fm7(i32 inreg %a) #0 {
40 %mul = mul nsw i32 %a, -7
43 ; CHECK: sh %r6, 0x3, %r{{[0-9]+}}
44 ; CHECK: sub %r6, %r{{[0-9]+}}, %rv
46 define i32 @fm8(i32 inreg %a) #0 {
48 %mul = mul nsw i32 %a, -8
51 ; CHECK: sh %r6, 0x3, %r{{[0-9]+}}
52 ; CHECK: sub %r{{[0-9]+}}, %r{{[0-9]+}}, %rv
54 define i32 @h1(i32 inreg %a) #0 {
56 %mul = mul i32 %a, -1431655765