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