# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+avx2 -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=ALL
# TODO: add tests for additional configuration after the legalization supported
--- |
  define void @test_sub_v32i8() {
    %ret = sub <32 x i8> undef, undef
    ret void
  }

  define void @test_sub_v16i16() {
    %ret = sub <16 x i16> undef, undef
    ret void
  }

  define void @test_sub_v8i32() {
    %ret = sub <8 x i32> undef, undef
    ret void
  }

  define void @test_sub_v4i64() {
    %ret = sub <4 x i64> undef, undef
    ret void
  }

...
---
name:            test_sub_v32i8
alignment:       16
legalized:       false
regBankSelected: false
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.1 (%ir-block.0):
    liveins: $ymm0, $ymm1

    ; ALL-LABEL: name: test_sub_v32i8
    ; ALL: [[DEF:%[0-9]+]]:_(<32 x s8>) = IMPLICIT_DEF
    ; ALL: [[DEF1:%[0-9]+]]:_(<32 x s8>) = IMPLICIT_DEF
    ; ALL: [[SUB:%[0-9]+]]:_(<32 x s8>) = G_SUB [[DEF]], [[DEF1]]
    ; ALL: $ymm0 = COPY [[SUB]](<32 x s8>)
    ; ALL: RET 0
    %0(<32 x s8>) = IMPLICIT_DEF
    %1(<32 x s8>) = IMPLICIT_DEF
    %2(<32 x s8>) = G_SUB %0, %1
    $ymm0 = COPY %2
    RET 0

...
---
name:            test_sub_v16i16
alignment:       16
legalized:       false
regBankSelected: false
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.1 (%ir-block.0):
    liveins: $ymm0, $ymm1

    ; ALL-LABEL: name: test_sub_v16i16
    ; ALL: [[DEF:%[0-9]+]]:_(<16 x s16>) = IMPLICIT_DEF
    ; ALL: [[DEF1:%[0-9]+]]:_(<16 x s16>) = IMPLICIT_DEF
    ; ALL: [[SUB:%[0-9]+]]:_(<16 x s16>) = G_SUB [[DEF]], [[DEF1]]
    ; ALL: $ymm0 = COPY [[SUB]](<16 x s16>)
    ; ALL: RET 0
    %0(<16 x s16>) = IMPLICIT_DEF
    %1(<16 x s16>) = IMPLICIT_DEF
    %2(<16 x s16>) = G_SUB %0, %1
    $ymm0 = COPY %2
    RET 0

...
---
name:            test_sub_v8i32
alignment:       16
legalized:       false
regBankSelected: false
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.1 (%ir-block.0):
    liveins: $ymm0, $ymm1

    ; ALL-LABEL: name: test_sub_v8i32
    ; ALL: [[DEF:%[0-9]+]]:_(<8 x s32>) = IMPLICIT_DEF
    ; ALL: [[DEF1:%[0-9]+]]:_(<8 x s32>) = IMPLICIT_DEF
    ; ALL: [[SUB:%[0-9]+]]:_(<8 x s32>) = G_SUB [[DEF]], [[DEF1]]
    ; ALL: $ymm0 = COPY [[SUB]](<8 x s32>)
    ; ALL: RET 0
    %0(<8 x s32>) = IMPLICIT_DEF
    %1(<8 x s32>) = IMPLICIT_DEF
    %2(<8 x s32>) = G_SUB %0, %1
    $ymm0 = COPY %2
    RET 0

...
---
name:            test_sub_v4i64
alignment:       16
legalized:       false
regBankSelected: false
registers:
  - { id: 0, class: _ }
  - { id: 1, class: _ }
  - { id: 2, class: _ }
body:             |
  bb.1 (%ir-block.0):
    liveins: $ymm0, $ymm1

    ; ALL-LABEL: name: test_sub_v4i64
    ; ALL: [[DEF:%[0-9]+]]:_(<4 x s64>) = IMPLICIT_DEF
    ; ALL: [[DEF1:%[0-9]+]]:_(<4 x s64>) = IMPLICIT_DEF
    ; ALL: [[SUB:%[0-9]+]]:_(<4 x s64>) = G_SUB [[DEF]], [[DEF1]]
    ; ALL: $ymm0 = COPY [[SUB]](<4 x s64>)
    ; ALL: RET 0
    %0(<4 x s64>) = IMPLICIT_DEF
    %1(<4 x s64>) = IMPLICIT_DEF
    %2(<4 x s64>) = G_SUB %0, %1
    $ymm0 = COPY %2
    RET 0

...
