# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx2 --global-isel -run-pass=regbankselect %s -o - | FileCheck %s # RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx2 --global-isel -regbankselect-greedy -run-pass=regbankselect %s -o - | FileCheck %s --- | define void @test_mul_vec256() { ret void } define void @test_add_vec256() { ret void } define void @test_sub_vec256() { ret void } define <8 x i32> @test_load_v8i32_noalign(<8 x i32>* %p1) { %r = load <8 x i32>, <8 x i32>* %p1, align 1 ret <8 x i32> %r } define void @test_store_v8i32_noalign(<8 x i32> %val, <8 x i32>* %p1) { store <8 x i32> %val, <8 x i32>* %p1, align 1 ret void } --- name: test_mul_vec256 alignment: 16 legalized: true regBankSelected: false selected: false tracksRegLiveness: true # CHECK-LABEL: name: test_mul_vec256 # CHECK: registers: # CHECK: - { id: 0, class: vecr, preferred-register: '' } # CHECK: - { id: 1, class: vecr, preferred-register: '' } registers: - { id: 0, class: _ } - { id: 1, class: _ } - { id: 2, class: _ } body: | bb.1 (%ir-block.0): %0(<8 x s32>) = IMPLICIT_DEF %1(<8 x s32>) = G_MUL %0, %0 RET 0 ... --- name: test_add_vec256 alignment: 16 legalized: true regBankSelected: false selected: false tracksRegLiveness: true # CHECK-LABEL: name: test_add_vec256 # CHECK: registers: # CHECK: - { id: 0, class: vecr, preferred-register: '' } # CHECK: - { id: 1, class: vecr, preferred-register: '' } registers: - { id: 0, class: _ } - { id: 1, class: _ } - { id: 2, class: _ } body: | bb.1 (%ir-block.0): %0(<8 x s32>) = IMPLICIT_DEF %1(<8 x s32>) = G_ADD %0, %0 RET 0 ... --- name: test_sub_vec256 alignment: 16 legalized: true regBankSelected: false selected: false tracksRegLiveness: true # CHECK-LABEL: name: test_sub_vec256 # CHECK: registers: # CHECK: - { id: 0, class: vecr, preferred-register: '' } # CHECK: - { id: 1, class: vecr, preferred-register: '' } registers: - { id: 0, class: _ } - { id: 1, class: _ } - { id: 2, class: _ } body: | bb.1 (%ir-block.0): %0(<8 x s32>) = IMPLICIT_DEF %1(<8 x s32>) = G_SUB %0, %0 RET 0 ... --- name: test_load_v8i32_noalign # CHECK-LABEL: name: test_load_v8i32_noalign alignment: 16 legalized: true regBankSelected: false # CHECK: registers: # CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' } # CHECK-NEXT: - { id: 1, class: vecr, preferred-register: '' } registers: - { id: 0, class: _ } - { id: 1, class: _ } body: | bb.1 (%ir-block.0): liveins: $rdi %0(p0) = COPY $rdi %1(<8 x s32>) = G_LOAD %0(p0) :: (load 32 from %ir.p1, align 1) $ymm0 = COPY %1(<8 x s32>) RET 0, implicit $ymm0 ... --- name: test_store_v8i32_noalign # CHECK-LABEL: name: test_store_v8i32_noalign alignment: 16 legalized: true regBankSelected: false # CHECK: registers: # CHECK-NEXT: - { id: 0, class: vecr, preferred-register: '' } # CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' } registers: - { id: 0, class: _ } - { id: 1, class: _ } body: | bb.1 (%ir-block.0): liveins: $rdi, $ymm0 %0(<8 x s32>) = COPY $ymm0 %1(p0) = COPY $rdi G_STORE %0(<8 x s32>), %1(p0) :: (store 32 into %ir.p1, align 1) RET 0 ...