[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / Lanai / multiply.ll
blobdd6e70f28636b8e590a8bd96bc9adb0fc5fc8569
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 {
6 entry:
7   %mul = mul nsw i32 %a, 6
8   ret i32 %mul
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 {
15 entry:
16   %mul = mul nsw i32 %a, 7
17   ret i32 %mul
19 ; CHECK: sh %r6, 0x3, %r{{[0-9]+}}
20 ; CHECK: sub %r{{[0-9]+}}, %r6, %rv
22 define i32 @f8(i32 inreg %a) #0 {
23 entry:
24   %mul = shl nsw i32 %a, 3
25   ret i32 %mul
27 ; CHECK: sh %r6, 0x3, %rv
29 define i32 @fm6(i32 inreg %a) #0 {
30 entry:
31   %mul = mul nsw i32 %a, -6
32   ret i32 %mul
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 {
39 entry:
40   %mul = mul nsw i32 %a, -7
41   ret i32 %mul
43 ; CHECK: sh %r6, 0x3, %r{{[0-9]+}}
44 ; CHECK: sub %r6, %r{{[0-9]+}}, %rv
46 define i32 @fm8(i32 inreg %a) #0 {
47 entry:
48   %mul = mul nsw i32 %a, -8
49   ret i32 %mul
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 {
55 entry:
56   %mul = mul i32 %a, -1431655765
57   ret i32 %mul
59 ; CHECK: h1
60 ; CHECK: mulsi3