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