[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / CodeGen / X86 / GlobalISel / legalize-mul-v512.mir
blobe7dbcb2d76c2ec4612d8155371acb0ce92694814
1 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL
3 --- |
4   define <32 x i16> @test_mul_v32i16(<32 x i16> %arg1, <32 x i16> %arg2) #0 {
5     %ret = mul <32 x i16> %arg1, %arg2
6     ret <32 x i16> %ret
7   }
9   define <16 x i32> @test_mul_v16i32(<16 x i32> %arg1, <16 x i32> %arg2) #1 {
10     %ret = mul <16 x i32> %arg1, %arg2
11     ret <16 x i32> %ret
12   }
14   define <8 x i64> @test_mul_v8i64(<8 x i64> %arg1, <8 x i64> %arg2) #2 {
15     %ret = mul <8 x i64> %arg1, %arg2
16     ret <8 x i64> %ret
17   }
19   attributes #0 = { "target-features"="+avx512f,+avx512bw" }
20   attributes #1 = { "target-features"="+avx512f" }
21   attributes #2 = { "target-features"="+avx512f,+avx512dq" }
23 ...
24 ---
25 name:            test_mul_v32i16
26 # ALL-LABEL: name:  test_mul_v32i16
27 alignment:       4
28 legalized:       false
29 regBankSelected: false
30 # ALL:      registers:
31 # ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
32 # ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
33 # ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
34 registers:
35   - { id: 0, class: _ }
36   - { id: 1, class: _ }
37   - { id: 2, class: _ }
38 # ALL:          %0:_(<32 x s16>) = COPY $zmm0
39 # ALL-NEXT:     %1:_(<32 x s16>) = COPY $zmm1
40 # ALL-NEXT:     %2:_(<32 x s16>) = G_MUL %0, %1
41 # ALL-NEXT:     $zmm0 = COPY %2(<32 x s16>)
42 # ALL-NEXT:     RET 0, implicit $zmm0
43 body:             |
44   bb.1 (%ir-block.0):
45     liveins: $zmm0, $zmm1
47     %0(<32 x s16>) = COPY $zmm0
48     %1(<32 x s16>) = COPY $zmm1
49     %2(<32 x s16>) = G_MUL %0, %1
50     $zmm0 = COPY %2(<32 x s16>)
51     RET 0, implicit $zmm0
53 ...
54 ---
55 name:            test_mul_v16i32
56 # ALL-LABEL: name:  test_mul_v16i32
57 alignment:       4
58 legalized:       false
59 regBankSelected: false
60 # ALL:      registers:
61 # ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
62 # ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
63 # ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
64 registers:
65   - { id: 0, class: _ }
66   - { id: 1, class: _ }
67   - { id: 2, class: _ }
68 # ALL:          %0:_(<16 x s32>) = COPY $zmm0
69 # ALL-NEXT:     %1:_(<16 x s32>) = COPY $zmm1
70 # ALL-NEXT:     %2:_(<16 x s32>) = G_MUL %0, %1
71 # ALL-NEXT:     $zmm0 = COPY %2(<16 x s32>)
72 # ALL-NEXT:     RET 0, implicit $zmm0
73 body:             |
74   bb.1 (%ir-block.0):
75     liveins: $zmm0, $zmm1
77     %0(<16 x s32>) = COPY $zmm0
78     %1(<16 x s32>) = COPY $zmm1
79     %2(<16 x s32>) = G_MUL %0, %1
80     $zmm0 = COPY %2(<16 x s32>)
81     RET 0, implicit $zmm0
83 ...
84 ---
85 name:            test_mul_v8i64
86 # ALL-LABEL: name:  test_mul_v8i64
87 alignment:       4
88 legalized:       false
89 regBankSelected: false
90 # ALL:      registers:
91 # ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
92 # ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
93 # ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
94 registers:
95   - { id: 0, class: _ }
96   - { id: 1, class: _ }
97   - { id: 2, class: _ }
98 # ALL:          %0:_(<8 x s64>) = COPY $zmm0
99 # ALL-NEXT:     %1:_(<8 x s64>) = COPY $zmm1
100 # ALL-NEXT:     %2:_(<8 x s64>) = G_MUL %0, %1
101 # ALL-NEXT:     $zmm0 = COPY %2(<8 x s64>)
102 # ALL-NEXT:     RET 0, implicit $zmm0
103 body:             |
104   bb.1 (%ir-block.0):
105     liveins: $zmm0, $zmm1
107     %0(<8 x s64>) = COPY $zmm0
108     %1(<8 x s64>) = COPY $zmm1
109     %2(<8 x s64>) = G_MUL %0, %1
110     $zmm0 = COPY %2(<8 x s64>)
111     RET 0, implicit $zmm0