1# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=AVX 2# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f,+avx512vl -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=AVX512VL 3 4--- | 5 define void @test_extract_128_idx0() { 6 ret void 7 } 8 9 define void @test_extract_128_idx1() { 10 ret void 11 } 12 13... 14--- 15name: test_extract_128_idx0 16# ALL-LABEL: name: test_extract_128_idx0 17alignment: 4 18legalized: true 19regBankSelected: true 20# AVX: registers: 21# AVX-NEXT: - { id: 0, class: vr256, preferred-register: '' } 22# AVX-NEXT: - { id: 1, class: vr128, preferred-register: '' } 23# 24# AVX512VL: registers: 25# AVX512VL-NEXT: - { id: 0, class: vr256x, preferred-register: '' } 26# AVX512VL-NEXT: - { id: 1, class: vr128x, preferred-register: '' } 27registers: 28 - { id: 0, class: vecr } 29 - { id: 1, class: vecr } 30# AVX: %0:vr256 = COPY $ymm1 31# AVX-NEXT: %1:vr128 = COPY %0.sub_xmm 32# AVX512VL: %0:vr256x = COPY $ymm1 33# AVX512VL-NEXT: %1:vr128x = COPY %0.sub_xmm 34# ALL-NEXT: $xmm0 = COPY %1 35# ALL-NEXT: RET 0, implicit $xmm0 36body: | 37 bb.1 (%ir-block.0): 38 liveins: $ymm1 39 40 %0(<8 x s32>) = COPY $ymm1 41 %1(<4 x s32>) = G_EXTRACT %0(<8 x s32>), 0 42 $xmm0 = COPY %1(<4 x s32>) 43 RET 0, implicit $xmm0 44 45... 46--- 47name: test_extract_128_idx1 48# ALL-LABEL: name: test_extract_128_idx1 49alignment: 4 50legalized: true 51regBankSelected: true 52# AVX: registers: 53# AVX-NEXT: - { id: 0, class: vr256, preferred-register: '' } 54# AVX-NEXT: - { id: 1, class: vr128, preferred-register: '' } 55# 56# AVX512VL: registers: 57# AVX512VL-NEXT: - { id: 0, class: vr256x, preferred-register: '' } 58# AVX512VL-NEXT: - { id: 1, class: vr128x, preferred-register: '' } 59registers: 60 - { id: 0, class: vecr } 61 - { id: 1, class: vecr } 62# AVX: %0:vr256 = COPY $ymm1 63# AVX-NEXT: %1:vr128 = VEXTRACTF128rr %0, 1 64# AVX-NEXT: $xmm0 = COPY %1 65# AVX-NEXT: RET 0, implicit $xmm0 66# 67# AVX512VL: %0:vr256x = COPY $ymm1 68# AVX512VL-NEXT: %1:vr128x = VEXTRACTF32x4Z256rr %0, 1 69# AVX512VL-NEXT: $xmm0 = COPY %1 70# AVX512VL-NEXT: RET 0, implicit $xmm0 71body: | 72 bb.1 (%ir-block.0): 73 liveins: $ymm1 74 75 %0(<8 x s32>) = COPY $ymm1 76 %1(<4 x s32>) = G_EXTRACT %0(<8 x s32>), 128 77 $xmm0 = COPY %1(<4 x s32>) 78 RET 0, implicit $xmm0 79 80... 81