# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=ALL --check-prefix=X64

--- |
  define i64 @test_zext_i1(i8 %a) {
    %val = trunc i8 %a to i1
    %r = zext i1 %val to i64
    ret i64 %r
  }

  define i64 @test_sext_i8(i8 %val) {
    %r = sext i8 %val to i64
    ret i64 %r
  }

  define i64 @test_sext_i16(i16 %val) {
    %r = sext i16 %val to i64
    ret i64 %r
  }

  define void @anyext_s64_from_s1() { ret void }
  define void @anyext_s64_from_s8() { ret void }
  define void @anyext_s64_from_s16() { ret void }
  define void @anyext_s64_from_s32() { ret void }
...
---
name:            test_zext_i1
alignment:       16
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    liveins: $edi

    ; ALL-LABEL: name: test_zext_i1
    ; ALL: [[COPY:%[0-9]+]]:gr8 = COPY $dil
    ; ALL: [[SUBREG_TO_REG:%[0-9]+]]:gr64 = SUBREG_TO_REG 0, [[COPY]], %subreg.sub_8bit
    ; ALL: [[AND64ri8_:%[0-9]+]]:gr64 = AND64ri8 [[SUBREG_TO_REG]], 1, implicit-def $eflags
    ; ALL: $rax = COPY [[AND64ri8_]]
    ; ALL: RET 0, implicit $rax
    %0(s8) = COPY $dil
    %1(s1) = G_TRUNC %0(s8)
    %2(s64) = G_ZEXT %1(s1)
    $rax = COPY %2(s64)
    RET 0, implicit $rax

...
---
name:            test_sext_i8
alignment:       16
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    liveins: $edi

    ; ALL-LABEL: name: test_sext_i8
    ; ALL: [[COPY:%[0-9]+]]:gr8 = COPY $dil
    ; ALL: [[MOVSX64rr8_:%[0-9]+]]:gr64 = MOVSX64rr8 [[COPY]]
    ; ALL: $rax = COPY [[MOVSX64rr8_]]
    ; ALL: RET 0, implicit $rax
    %0(s8) = COPY $dil
    %1(s64) = G_SEXT %0(s8)
    $rax = COPY %1(s64)
    RET 0, implicit $rax

...
---
name:            test_sext_i16
alignment:       16
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    liveins: $edi

    ; ALL-LABEL: name: test_sext_i16
    ; ALL: [[COPY:%[0-9]+]]:gr16 = COPY $di
    ; ALL: [[MOVSX64rr16_:%[0-9]+]]:gr64 = MOVSX64rr16 [[COPY]]
    ; ALL: $rax = COPY [[MOVSX64rr16_]]
    ; ALL: RET 0, implicit $rax
    %0(s16) = COPY $di
    %1(s64) = G_SEXT %0(s16)
    $rax = COPY %1(s64)
    RET 0, implicit $rax

...
---
name:            anyext_s64_from_s1
alignment:       16
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    liveins: $edi

    ; ALL-LABEL: name: anyext_s64_from_s1
    ; ALL: [[COPY:%[0-9]+]]:gr64_with_sub_8bit = COPY $rdi
    ; ALL: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit
    ; ALL: [[SUBREG_TO_REG:%[0-9]+]]:gr64 = SUBREG_TO_REG 0, [[COPY1]], %subreg.sub_8bit
    ; ALL: $rax = COPY [[SUBREG_TO_REG]]
    ; ALL: RET 0, implicit $rax
    %0(s64) = COPY $rdi
    %1(s1) = G_TRUNC %0(s64)
    %2(s64) = G_ANYEXT %1(s1)
    $rax = COPY %2(s64)
    RET 0, implicit $rax
...
---
name:            anyext_s64_from_s8
alignment:       16
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    liveins: $edi

    ; ALL-LABEL: name: anyext_s64_from_s8
    ; ALL: [[COPY:%[0-9]+]]:gr64_with_sub_8bit = COPY $rdi
    ; ALL: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit
    ; ALL: [[MOVZX32rr8_:%[0-9]+]]:gr32 = MOVZX32rr8 [[COPY1]]
    ; ALL: [[SUBREG_TO_REG:%[0-9]+]]:gr64 = SUBREG_TO_REG 0, [[MOVZX32rr8_]], %subreg.sub_32bit
    ; ALL: $rax = COPY [[SUBREG_TO_REG]]
    ; ALL: RET 0, implicit $rax
    %0(s64) = COPY $rdi
    %1(s8) = G_TRUNC %0(s64)
    %2(s64) = G_ANYEXT %1(s8)
    $rax = COPY %2(s64)
    RET 0, implicit $rax
...
---
name:            anyext_s64_from_s16
alignment:       16
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    liveins: $edi

    ; ALL-LABEL: name: anyext_s64_from_s16
    ; ALL: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
    ; ALL: [[COPY1:%[0-9]+]]:gr16 = COPY [[COPY]].sub_16bit
    ; ALL: [[MOVZX32rr16_:%[0-9]+]]:gr32 = MOVZX32rr16 [[COPY1]]
    ; ALL: [[SUBREG_TO_REG:%[0-9]+]]:gr64 = SUBREG_TO_REG 0, [[MOVZX32rr16_]], %subreg.sub_32bit
    ; ALL: $rax = COPY [[SUBREG_TO_REG]]
    ; ALL: RET 0, implicit $rax
    %0(s64) = COPY $rdi
    %1(s16) = G_TRUNC %0(s64)
    %2(s64) = G_ANYEXT %1(s16)
    $rax = COPY %2(s64)
    RET 0, implicit $rax
...
---
name:            anyext_s64_from_s32
alignment:       16
legalized:       true
regBankSelected: true
registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }
body:             |
  bb.1 (%ir-block.0):
    liveins: $edi

    ; ALL-LABEL: name: anyext_s64_from_s32
    ; ALL: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
    ; ALL: [[COPY1:%[0-9]+]]:gr32 = COPY [[COPY]].sub_32bit
    ; ALL: [[DEF:%[0-9]+]]:gr64 = IMPLICIT_DEF
    ; ALL: [[INSERT_SUBREG:%[0-9]+]]:gr64 = INSERT_SUBREG [[DEF]], [[COPY1]], %subreg.sub_32bit
    ; ALL: $rax = COPY [[INSERT_SUBREG]]
    ; ALL: RET 0, implicit $rax
    %0(s64) = COPY $rdi
    %1(s32) = G_TRUNC %0(s64)
    %2(s64) = G_ANYEXT %1(s32)
    $rax = COPY %2(s64)
    RET 0, implicit $rax
...
