# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -run-pass=regbankselect %s -o - | FileCheck %s # RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx512f -regbankselect-greedy -run-pass=regbankselect %s -o - | FileCheck %s --- | define void @test_mul_vec512() { ret void } define void @test_add_vec512() { ret void } define void @test_sub_vec512() { ret void } define <16 x i32> @test_load_v16i32_noalign(<16 x i32>* %p1) { %r = load <16 x i32>, <16 x i32>* %p1, align 1 ret <16 x i32> %r } define void @test_store_v16i32_noalign(<16 x i32> %val, <16 x i32>* %p1) { store <16 x i32> %val, <16 x i32>* %p1, align 1 ret void } ... --- name: test_mul_vec512 # CHECK-LABEL: name: test_mul_vec512 alignment: 16 legalized: true regBankSelected: false # CHECK: registers: # CHECK-NEXT: - { id: 0, class: vecr, preferred-register: '' } # CHECK-NEXT: - { id: 1, class: vecr, preferred-register: '' } registers: - { id: 0, class: _ } - { id: 1, class: _ } body: | bb.1 (%ir-block.0): %0(<16 x s32>) = IMPLICIT_DEF %1(<16 x s32>) = G_MUL %0, %0 RET 0 ... --- name: test_add_vec512 # CHECK-LABEL: name: test_add_vec512 alignment: 16 legalized: true regBankSelected: false # CHECK: registers: # CHECK-NEXT: - { id: 0, class: vecr, preferred-register: '' } # CHECK-NEXT: - { id: 1, class: vecr, preferred-register: '' } registers: - { id: 0, class: _ } - { id: 1, class: _ } body: | bb.1 (%ir-block.0): %0(<16 x s32>) = IMPLICIT_DEF %1(<16 x s32>) = G_ADD %0, %0 RET 0 ... --- name: test_sub_vec512 # CHECK-LABEL: name: test_sub_vec512 alignment: 16 legalized: true regBankSelected: false # CHECK: registers: # CHECK-NEXT: - { id: 0, class: vecr, preferred-register: '' } # CHECK-NEXT: - { id: 1, class: vecr, preferred-register: '' } registers: - { id: 0, class: _ } - { id: 1, class: _ } body: | bb.1 (%ir-block.0): %0(<16 x s32>) = IMPLICIT_DEF %1(<16 x s32>) = G_SUB %0, %0 RET 0 ... --- name: test_load_v16i32_noalign # CHECK-LABEL: name: test_load_v16i32_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(<16 x s32>) = G_LOAD %0(p0) :: (load 64 from %ir.p1, align 1) $zmm0 = COPY %1(<16 x s32>) RET 0, implicit $zmm0 ... --- name: test_store_v16i32_noalign # CHECK-LABEL: name: test_store_v16i32_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, $zmm0 %0(<16 x s32>) = COPY $zmm0 %1(p0) = COPY $rdi G_STORE %0(<16 x s32>), %1(p0) :: (store 64 into %ir.p1, align 1) RET 0 ...