# 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

--- |

  define signext i8 @float_to_int8(float %val) {
  entry:
    %conv = fptosi float %val to i8
    ret i8 %conv
  }

  define signext i16 @float_to_int16(float %val) {
  entry:
    %conv = fptosi float %val to i16
    ret i16 %conv
  }

  define i32 @float_to_int32(float %val) {
  entry:
    %conv = fptosi float %val to i32
    ret i32 %conv
  }

  define i64 @float_to_int64(float %val) {
  entry:
    %conv = fptosi float %val to i64
    ret i64 %conv
  }

  define signext i8 @double_to_int8(double %val) {
  entry:
    %conv = fptosi double %val to i8
    ret i8 %conv
  }

  define signext i16 @double_to_int16(double %val) {
  entry:
    %conv = fptosi double %val to i16
    ret i16 %conv
  }

  define i32 @double_to_int32(double %val) {
  entry:
    %conv = fptosi double %val to i32
    ret i32 %conv
  }

  define i64 @double_to_int64(double %val) {
  entry:
    %conv = fptosi double %val to i64
    ret i64 %conv
  }

...
---
name:            float_to_int8
alignment:       16
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: vecr }
  - { id: 1, class: vecr }
  - { id: 2, class: gpr }
  - { id: 3, class: gpr }
body:             |
  bb.1.entry:
    liveins: $xmm0

    ; CHECK-LABEL: name: float_to_int8
    ; CHECK: liveins: $xmm0
    ; CHECK: [[COPY:%[0-9]+]]:vr128 = COPY $xmm0
    ; CHECK: [[COPY1:%[0-9]+]]:fr32 = COPY [[COPY]]
    ; CHECK: [[CVTTSS2SIrr:%[0-9]+]]:gr32 = CVTTSS2SIrr [[COPY1]]
    ; CHECK: [[COPY2:%[0-9]+]]:gr8 = COPY [[CVTTSS2SIrr]].sub_8bit
    ; CHECK: $al = COPY [[COPY2]]
    ; CHECK: RET 0, implicit $al
    %1:vecr(s128) = COPY $xmm0
    %0:vecr(s32) = G_TRUNC %1(s128)
    %3:gpr(s32) = G_FPTOSI %0(s32)
    %2:gpr(s8) = G_TRUNC %3(s32)
    $al = COPY %2(s8)
    RET 0, implicit $al

...
---
name:            float_to_int16
alignment:       16
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: vecr }
  - { id: 1, class: vecr }
  - { id: 2, class: gpr }
  - { id: 3, class: gpr }
body:             |
  bb.1.entry:
    liveins: $xmm0

    ; CHECK-LABEL: name: float_to_int16
    ; CHECK: liveins: $xmm0
    ; CHECK: [[COPY:%[0-9]+]]:vr128 = COPY $xmm0
    ; CHECK: [[COPY1:%[0-9]+]]:fr32 = COPY [[COPY]]
    ; CHECK: [[CVTTSS2SIrr:%[0-9]+]]:gr32 = CVTTSS2SIrr [[COPY1]]
    ; CHECK: [[COPY2:%[0-9]+]]:gr16 = COPY [[CVTTSS2SIrr]].sub_16bit
    ; CHECK: $ax = COPY [[COPY2]]
    ; CHECK: RET 0, implicit $ax
    %1:vecr(s128) = COPY $xmm0
    %0:vecr(s32) = G_TRUNC %1(s128)
    %3:gpr(s32) = G_FPTOSI %0(s32)
    %2:gpr(s16) = G_TRUNC %3(s32)
    $ax = COPY %2(s16)
    RET 0, implicit $ax

...
---
name:            float_to_int32
alignment:       16
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: vecr }
  - { id: 1, class: vecr }
  - { id: 2, class: gpr }
body:             |
  bb.1.entry:
    liveins: $xmm0

    ; CHECK-LABEL: name: float_to_int32
    ; CHECK: liveins: $xmm0
    ; CHECK: [[COPY:%[0-9]+]]:vr128 = COPY $xmm0
    ; CHECK: [[COPY1:%[0-9]+]]:fr32 = COPY [[COPY]]
    ; CHECK: [[CVTTSS2SIrr:%[0-9]+]]:gr32 = CVTTSS2SIrr [[COPY1]]
    ; CHECK: $eax = COPY [[CVTTSS2SIrr]]
    ; CHECK: RET 0, implicit $eax
    %1:vecr(s128) = COPY $xmm0
    %0:vecr(s32) = G_TRUNC %1(s128)
    %2:gpr(s32) = G_FPTOSI %0(s32)
    $eax = COPY %2(s32)
    RET 0, implicit $eax

...
---
name:            float_to_int64
alignment:       16
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: vecr }
  - { id: 1, class: vecr }
  - { id: 2, class: gpr }
body:             |
  bb.1.entry:
    liveins: $xmm0

    ; CHECK-LABEL: name: float_to_int64
    ; CHECK: liveins: $xmm0
    ; CHECK: [[COPY:%[0-9]+]]:vr128 = COPY $xmm0
    ; CHECK: [[COPY1:%[0-9]+]]:fr32 = COPY [[COPY]]
    ; CHECK: [[CVTTSS2SI64rr:%[0-9]+]]:gr64 = CVTTSS2SI64rr [[COPY1]]
    ; CHECK: $rax = COPY [[CVTTSS2SI64rr]]
    ; CHECK: RET 0, implicit $rax
    %1:vecr(s128) = COPY $xmm0
    %0:vecr(s32) = G_TRUNC %1(s128)
    %2:gpr(s64) = G_FPTOSI %0(s32)
    $rax = COPY %2(s64)
    RET 0, implicit $rax

...
---
name:            double_to_int8
alignment:       16
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: vecr }
  - { id: 1, class: vecr }
  - { id: 2, class: gpr }
  - { id: 3, class: gpr }
body:             |
  bb.1.entry:
    liveins: $xmm0

    ; CHECK-LABEL: name: double_to_int8
    ; CHECK: liveins: $xmm0
    ; CHECK: [[COPY:%[0-9]+]]:vr128 = COPY $xmm0
    ; CHECK: [[COPY1:%[0-9]+]]:fr64 = COPY [[COPY]]
    ; CHECK: [[CVTTSD2SIrr:%[0-9]+]]:gr32 = CVTTSD2SIrr [[COPY1]]
    ; CHECK: [[COPY2:%[0-9]+]]:gr8 = COPY [[CVTTSD2SIrr]].sub_8bit
    ; CHECK: $al = COPY [[COPY2]]
    ; CHECK: RET 0, implicit $al
    %1:vecr(s128) = COPY $xmm0
    %0:vecr(s64) = G_TRUNC %1(s128)
    %3:gpr(s32) = G_FPTOSI %0(s64)
    %2:gpr(s8) = G_TRUNC %3(s32)
    $al = COPY %2(s8)
    RET 0, implicit $al

...
---
name:            double_to_int16
alignment:       16
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: vecr }
  - { id: 1, class: vecr }
  - { id: 2, class: gpr }
  - { id: 3, class: gpr }
body:             |
  bb.1.entry:
    liveins: $xmm0

    ; CHECK-LABEL: name: double_to_int16
    ; CHECK: liveins: $xmm0
    ; CHECK: [[COPY:%[0-9]+]]:vr128 = COPY $xmm0
    ; CHECK: [[COPY1:%[0-9]+]]:fr64 = COPY [[COPY]]
    ; CHECK: [[CVTTSD2SIrr:%[0-9]+]]:gr32 = CVTTSD2SIrr [[COPY1]]
    ; CHECK: [[COPY2:%[0-9]+]]:gr16 = COPY [[CVTTSD2SIrr]].sub_16bit
    ; CHECK: $ax = COPY [[COPY2]]
    ; CHECK: RET 0, implicit $ax
    %1:vecr(s128) = COPY $xmm0
    %0:vecr(s64) = G_TRUNC %1(s128)
    %3:gpr(s32) = G_FPTOSI %0(s64)
    %2:gpr(s16) = G_TRUNC %3(s32)
    $ax = COPY %2(s16)
    RET 0, implicit $ax

...
---
name:            double_to_int32
alignment:       16
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: vecr }
  - { id: 1, class: vecr }
  - { id: 2, class: gpr }
body:             |
  bb.1.entry:
    liveins: $xmm0

    ; CHECK-LABEL: name: double_to_int32
    ; CHECK: liveins: $xmm0
    ; CHECK: [[COPY:%[0-9]+]]:vr128 = COPY $xmm0
    ; CHECK: [[COPY1:%[0-9]+]]:fr64 = COPY [[COPY]]
    ; CHECK: [[CVTTSD2SIrr:%[0-9]+]]:gr32 = CVTTSD2SIrr [[COPY1]]
    ; CHECK: $eax = COPY [[CVTTSD2SIrr]]
    ; CHECK: RET 0, implicit $eax
    %1:vecr(s128) = COPY $xmm0
    %0:vecr(s64) = G_TRUNC %1(s128)
    %2:gpr(s32) = G_FPTOSI %0(s64)
    $eax = COPY %2(s32)
    RET 0, implicit $eax

...
---
name:            double_to_int64
alignment:       16
legalized:       true
regBankSelected: true
tracksRegLiveness: true
registers:
  - { id: 0, class: vecr }
  - { id: 1, class: vecr }
  - { id: 2, class: gpr }
body:             |
  bb.1.entry:
    liveins: $xmm0

    ; CHECK-LABEL: name: double_to_int64
    ; CHECK: liveins: $xmm0
    ; CHECK: [[COPY:%[0-9]+]]:vr128 = COPY $xmm0
    ; CHECK: [[COPY1:%[0-9]+]]:fr64 = COPY [[COPY]]
    ; CHECK: [[CVTTSD2SI64rr:%[0-9]+]]:gr64 = CVTTSD2SI64rr [[COPY1]]
    ; CHECK: $rax = COPY [[CVTTSD2SI64rr]]
    ; CHECK: RET 0, implicit $rax
    %1:vecr(s128) = COPY $xmm0
    %0:vecr(s64) = G_TRUNC %1(s128)
    %2:gpr(s64) = G_FPTOSI %0(s64)
    $rax = COPY %2(s64)
    RET 0, implicit $rax

...
