• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL
2
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  }
8
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  }
13
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  }
18
19  attributes #0 = { "target-features"="+avx512f,+avx512bw" }
20  attributes #1 = { "target-features"="+avx512f" }
21  attributes #2 = { "target-features"="+avx512f,+avx512dq" }
22
23...
24---
25name:            test_mul_v32i16
26# ALL-LABEL: name:  test_mul_v32i16
27alignment:       4
28legalized:       false
29regBankSelected: 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: '' }
34registers:
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
43body:             |
44  bb.1 (%ir-block.0):
45    liveins: $zmm0, $zmm1
46
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
52
53...
54---
55name:            test_mul_v16i32
56# ALL-LABEL: name:  test_mul_v16i32
57alignment:       4
58legalized:       false
59regBankSelected: 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: '' }
64registers:
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
73body:             |
74  bb.1 (%ir-block.0):
75    liveins: $zmm0, $zmm1
76
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
82
83...
84---
85name:            test_mul_v8i64
86# ALL-LABEL: name:  test_mul_v8i64
87alignment:       4
88legalized:       false
89regBankSelected: 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: '' }
94registers:
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
103body:             |
104  bb.1 (%ir-block.0):
105    liveins: $zmm0, $zmm1
106
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
112
113...
114