1 ; RUN: llc < %s -mtriple=x86_64-pc-linux-gnu | FileCheck %s --check-prefix=X64
2 ; RUN: llc < %s -mtriple=x86_64-pc-linux-gnux32 | FileCheck %s --check-prefix=X64
3 ; RUN: llc < %s -mtriple=i686-pc-linux | FileCheck %s --check-prefix=X86
5 define i32 @mul4_32(i32 %A) {
14 define i64 @mul4_64(i64 %A) {
24 define i32 @mul4096_32(i32 %A) {
25 ; X64-LABEL: mul4096_32:
27 ; X86-LABEL: mul4096_32:
29 %mul = mul i32 %A, 4096
33 define i64 @mul4096_64(i64 %A) {
34 ; X64-LABEL: mul4096_64:
36 ; X86-LABEL: mul4096_64:
39 %mul = mul i64 %A, 4096
43 define i32 @mulmin4096_32(i32 %A) {
44 ; X64-LABEL: mulmin4096_32:
47 ; X86-LABEL: mulmin4096_32:
50 %mul = mul i32 %A, -4096
54 define i64 @mulmin4096_64(i64 %A) {
55 ; X64-LABEL: mulmin4096_64:
58 ; X86-LABEL: mulmin4096_64:
64 %mul = mul i64 %A, -4096
68 define i32 @mul3_32(i32 %A) {
78 define i64 @mul3_64(i64 %A) {
88 define i32 @mul40_32(i32 %A) {
89 ; X64-LABEL: mul40_32:
92 ; X86-LABEL: mul40_32:
99 define i64 @mul40_64(i64 %A) {
100 ; X64-LABEL: mul40_64:
103 ; X86-LABEL: mul40_64:
108 %mul = mul i64 %A, 40
112 define i32 @mul4_32_minsize(i32 %A) minsize {
113 ; X64-LABEL: mul4_32_minsize:
115 ; X86-LABEL: mul4_32_minsize:
121 define i32 @mul40_32_minsize(i32 %A) minsize {
122 ; X64-LABEL: mul40_32_minsize:
124 ; X86-LABEL: mul40_32_minsize:
126 %mul = mul i32 %A, 40
130 define i32 @mul33_32(i32 %A) {
131 ; X64-LABEL: mul33_32:
134 ; X86-LABEL: mul33_32:
137 %mul = mul i32 %A, 33
141 define i32 @mul31_32(i32 %A) {
142 ; X64-LABEL: mul31_32:
145 ; X86-LABEL: mul31_32:
148 %mul = mul i32 %A, 31
152 define i32 @mul0_32(i32 %A) {
153 ; X64-LABEL: mul0_32:
154 ; X64: xorl %eax, %eax
159 define i32 @mul4294967295_32(i32 %A) {
160 ; X64-LABEL: mul4294967295_32:
162 ; X64-NEXT: movl %edi, %eax
163 %mul = mul i32 %A, 4294967295
167 define i64 @mul18446744073709551615_64(i64 %A) {
168 ; X64-LABEL: mul18446744073709551615_64:
170 ; X64-NEXT: movq %rdi, %rax
171 %mul = mul i64 %A, 18446744073709551615