2
2
# RUN: llc -O0 -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s
3
3
4
4
--- |
5
- define void @test_mul_i1() { ret void}
5
+ define void @test_mul_i1() { ret void }
6
+
7
+ define i8 @test_mul_i8(i8 %arg1, i8 %arg2) {
8
+ %ret = mul i8 %arg1, %arg2
9
+ ret i8 %ret
10
+ }
6
11
7
12
define i16 @test_mul_i16(i16 %arg1, i16 %arg2) {
8
13
%ret = mul i16 %arg1, %arg2
18
23
%ret = mul i64 %arg1, %arg2
19
24
ret i64 %ret
20
25
}
21
-
22
26
...
23
27
---
24
28
name : test_mul_i1
@@ -34,14 +38,14 @@ body: |
34
38
35
39
; CHECK-LABEL: name: test_mul_i1
36
40
; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $edx
37
- ; CHECK: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
38
- ; CHECK: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
39
- ; CHECK: [[MUL:%[0-9]+]]:_(s8) = G_MUL [[TRUNC]], [[TRUNC1]]
40
- ; CHECK: [[DEF:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF
41
- ; CHECK: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 1
42
- ; CHECK: [[AND:%[0-9]+]]:_(s8) = G_AND [[MUL]], [[C]]
43
- ; CHECK: G_STORE [[AND]](s8), [[DEF]](p0) :: (store (s1))
44
- ; CHECK: RET 0
41
+ ; CHECK-NEXT : [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
42
+ ; CHECK-NEXT : [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
43
+ ; CHECK-NEXT : [[MUL:%[0-9]+]]:_(s8) = G_MUL [[TRUNC]], [[TRUNC1]]
44
+ ; CHECK-NEXT : [[DEF:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF
45
+ ; CHECK-NEXT : [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 1
46
+ ; CHECK-NEXT : [[AND:%[0-9]+]]:_(s8) = G_AND [[MUL]], [[C]]
47
+ ; CHECK-NEXT : G_STORE [[AND]](s8), [[DEF]](p0) :: (store (s1))
48
+ ; CHECK-NEXT : RET 0
45
49
%0(s32) = COPY $edx
46
50
%1(s1) = G_TRUNC %0(s32)
47
51
%2(s1) = G_MUL %1, %1
@@ -50,6 +54,33 @@ body: |
50
54
RET 0
51
55
...
52
56
---
57
+ name : test_mul_i8
58
+ alignment : 16
59
+ legalized : false
60
+ regBankSelected : false
61
+ registers :
62
+ - { id: 0, class: _ }
63
+ - { id: 1, class: _ }
64
+ - { id: 2, class: _ }
65
+ body : |
66
+ bb.1 (%ir-block.0):
67
+ liveins: $edi, $esi
68
+
69
+ ; CHECK-LABEL: name: test_mul_i8
70
+ ; CHECK: liveins: $edi, $esi
71
+ ; CHECK-NEXT: {{ $}}
72
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dl
73
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s8) = COPY $sil
74
+ ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s8) = G_MUL [[COPY]], [[COPY1]]
75
+ ; CHECK-NEXT: $al = COPY [[MUL]](s8)
76
+ ; CHECK-NEXT: RET 0, implicit $al
77
+ %0(s8) = COPY $dl
78
+ %1(s8) = COPY $sil
79
+ %2(s8) = G_MUL %0, %1
80
+ $al = COPY %2(s8)
81
+ RET 0, implicit $al
82
+ ...
83
+ ---
53
84
name : test_mul_i16
54
85
alignment : 16
55
86
legalized : false
@@ -63,17 +94,18 @@ body: |
63
94
liveins: $edi, $esi
64
95
65
96
; CHECK-LABEL: name: test_mul_i16
66
- ; CHECK: [[COPY:%[0-9]+]]:_(s16) = COPY $di
67
- ; CHECK: [[COPY1:%[0-9]+]]:_(s16) = COPY $si
68
- ; CHECK: [[MUL:%[0-9]+]]:_(s16) = G_MUL [[COPY]], [[COPY1]]
69
- ; CHECK: $ax = COPY [[MUL]](s16)
70
- ; CHECK: RET 0, implicit $ax
97
+ ; CHECK: liveins: $edi, $esi
98
+ ; CHECK-NEXT: {{ $}}
99
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
100
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s16) = COPY $si
101
+ ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s16) = G_MUL [[COPY]], [[COPY1]]
102
+ ; CHECK-NEXT: $ax = COPY [[MUL]](s16)
103
+ ; CHECK-NEXT: RET 0, implicit $ax
71
104
%0(s16) = COPY $di
72
105
%1(s16) = COPY $si
73
106
%2(s16) = G_MUL %0, %1
74
107
$ax = COPY %2(s16)
75
108
RET 0, implicit $ax
76
-
77
109
...
78
110
---
79
111
name : test_mul_i32
@@ -89,17 +121,18 @@ body: |
89
121
liveins: $edi, $esi
90
122
91
123
; CHECK-LABEL: name: test_mul_i32
92
- ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
93
- ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $esi
94
- ; CHECK: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[COPY]], [[COPY1]]
95
- ; CHECK: $eax = COPY [[MUL]](s32)
96
- ; CHECK: RET 0, implicit $eax
124
+ ; CHECK: liveins: $edi, $esi
125
+ ; CHECK-NEXT: {{ $}}
126
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
127
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $esi
128
+ ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[COPY]], [[COPY1]]
129
+ ; CHECK-NEXT: $eax = COPY [[MUL]](s32)
130
+ ; CHECK-NEXT: RET 0, implicit $eax
97
131
%0(s32) = COPY $edi
98
132
%1(s32) = COPY $esi
99
133
%2(s32) = G_MUL %0, %1
100
134
$eax = COPY %2(s32)
101
135
RET 0, implicit $eax
102
-
103
136
...
104
137
---
105
138
name : test_mul_i64
@@ -115,15 +148,16 @@ body: |
115
148
liveins: $rdi, $rsi
116
149
117
150
; CHECK-LABEL: name: test_mul_i64
118
- ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $rdi
119
- ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $rsi
120
- ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[COPY]], [[COPY1]]
121
- ; CHECK: $rax = COPY [[MUL]](s64)
122
- ; CHECK: RET 0, implicit $rax
151
+ ; CHECK: liveins: $rdi, $rsi
152
+ ; CHECK-NEXT: {{ $}}
153
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $rdi
154
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $rsi
155
+ ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[COPY]], [[COPY1]]
156
+ ; CHECK-NEXT: $rax = COPY [[MUL]](s64)
157
+ ; CHECK-NEXT: RET 0, implicit $rax
123
158
%0(s64) = COPY $rdi
124
159
%1(s64) = COPY $rsi
125
160
%2(s64) = G_MUL %0, %1
126
161
$rax = COPY %2(s64)
127
162
RET 0, implicit $rax
128
-
129
163
...
0 commit comments