[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / CodeGen / X86 / GlobalISel / legalize-mul-scalar.mir
blob122c45212a80d927519c644d2c6c6895e472b4c1
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s
4 --- |
5   define void @test_mul_i1() { ret void}
7   define i16 @test_mul_i16(i16 %arg1, i16 %arg2) {
8     %ret = mul i16 %arg1, %arg2
9     ret i16 %ret
10   }
12   define i32 @test_mul_i32(i32 %arg1, i32 %arg2) {
13     %ret = mul i32 %arg1, %arg2
14     ret i32 %ret
15   }
17   define i64 @test_mul_i64(i64 %arg1, i64 %arg2) {
18     %ret = mul i64 %arg1, %arg2
19     ret i64 %ret
20   }
22 ...
23 ---
24 name:            test_mul_i1
25 alignment:       4
26 legalized:       false
27 regBankSelected: false
28 registers:
29   - { id: 0, class: _, preferred-register: '' }
30   - { id: 1, class: _, preferred-register: '' }
31   - { id: 2, class: _, preferred-register: '' }
32 body:             |
33   bb.1 (%ir-block.0):
35     ; CHECK-LABEL: name: test_mul_i1
36     ; 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: [[COPY1:%[0-9]+]]:_(s8) = COPY [[MUL]](s8)
43     ; CHECK: [[AND:%[0-9]+]]:_(s8) = G_AND [[COPY1]], [[C]]
44     ; CHECK: G_STORE [[AND]](s8), [[DEF]](p0) :: (store 1)
45     ; CHECK: RET 0
46     %0(s32) = COPY $edx
47     %1(s1) = G_TRUNC %0(s32)
48     %2(s1) = G_MUL %1, %1
49     %3:_(p0) = G_IMPLICIT_DEF
50     G_STORE %2, %3 :: (store 1)
51     RET 0
52 ...
53 ---
54 name:            test_mul_i16
55 alignment:       4
56 legalized:       false
57 regBankSelected: false
58 registers:
59   - { id: 0, class: _ }
60   - { id: 1, class: _ }
61   - { id: 2, class: _ }
62 body:             |
63   bb.1 (%ir-block.0):
64     liveins: $edi, $esi
66     ; CHECK-LABEL: name: test_mul_i16
67     ; CHECK: [[COPY:%[0-9]+]]:_(s16) = COPY $di
68     ; CHECK: [[COPY1:%[0-9]+]]:_(s16) = COPY $si
69     ; CHECK: [[MUL:%[0-9]+]]:_(s16) = G_MUL [[COPY]], [[COPY1]]
70     ; CHECK: $ax = COPY [[MUL]](s16)
71     ; CHECK: RET 0, implicit $ax
72     %0(s16) = COPY $di
73     %1(s16) = COPY $si
74     %2(s16) = G_MUL %0, %1
75     $ax = COPY %2(s16)
76     RET 0, implicit $ax
78 ...
79 ---
80 name:            test_mul_i32
81 alignment:       4
82 legalized:       false
83 regBankSelected: false
84 registers:
85   - { id: 0, class: _ }
86   - { id: 1, class: _ }
87   - { id: 2, class: _ }
88 body:             |
89   bb.1 (%ir-block.0):
90     liveins: $edi, $esi
92     ; CHECK-LABEL: name: test_mul_i32
93     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
94     ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $esi
95     ; CHECK: [[MUL:%[0-9]+]]:_(s32) = G_MUL [[COPY]], [[COPY1]]
96     ; CHECK: $eax = COPY [[MUL]](s32)
97     ; CHECK: RET 0, implicit $eax
98     %0(s32) = COPY $edi
99     %1(s32) = COPY $esi
100     %2(s32) = G_MUL %0, %1
101     $eax = COPY %2(s32)
102     RET 0, implicit $eax
106 name:            test_mul_i64
107 alignment:       4
108 legalized:       false
109 regBankSelected: false
110 registers:
111   - { id: 0, class: _ }
112   - { id: 1, class: _ }
113   - { id: 2, class: _ }
114 body:             |
115   bb.1 (%ir-block.0):
116     liveins: $rdi, $rsi
118     ; CHECK-LABEL: name: test_mul_i64
119     ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $rdi
120     ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $rsi
121     ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[COPY]], [[COPY1]]
122     ; CHECK: $rax = COPY [[MUL]](s64)
123     ; CHECK: RET 0, implicit $rax
124     %0(s64) = COPY $rdi
125     %1(s64) = COPY $rsi
126     %2(s64) = G_MUL %0, %1
127     $rax = COPY %2(s64)
128     RET 0, implicit $rax