# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
--- |
  define void @truncating_f32(double %x) {
    %alloca = alloca i32, align 4
    %bitcast = bitcast double %x to i64
    %trunc = trunc i64 %bitcast to i32
    store i32 %trunc, i32* %alloca, align 4
    ret void
  }

  define void @truncating_f16(double %x) {
    %alloca = alloca i16, align 2
    %bitcast = bitcast double %x to i64
    %trunc = trunc i64 %bitcast to i16
    store i16 %trunc, i16* %alloca, align 2
    ret void
  }

  define void @truncating_f8(double %x) {
    %alloca = alloca i8, align 1
    %bitcast = bitcast double %x to i64
    %trunc = trunc i64 %bitcast to i8
    store i8 %trunc, i8* %alloca, align 1
    ret void
  }

...
---
name:            truncating_f32
alignment:       4
legalized:       true
regBankSelected: true
tracksRegLiveness: true
liveins:
  - { reg: '$d0' }
frameInfo:
  maxAlignment:    4
stack:
  - { id: 0, name: alloca, size: 4, alignment: 4 }
machineFunctionInfo: {}
body:             |
  bb.1 (%ir-block.0):
    liveins: $d0

    ; CHECK-LABEL: name: truncating_f32
    ; CHECK: liveins: $d0
    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
    ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY [[COPY]].ssub
    ; CHECK: STRSui [[COPY1]], %stack.0.alloca, 0 :: (store (s32) into %ir.alloca)
    ; CHECK: RET_ReallyLR
    %0:fpr(s64) = COPY $d0
    %1:gpr(p0) = G_FRAME_INDEX %stack.0.alloca
    G_STORE %0(s64), %1(p0) :: (store (s32) into %ir.alloca)
    RET_ReallyLR

...
---
name:            truncating_f16
alignment:       4
legalized:       true
regBankSelected: true
tracksRegLiveness: true
liveins:
  - { reg: '$d0' }
frameInfo:
  maxAlignment:    2
stack:
  - { id: 0, name: alloca, size: 2, alignment: 2 }
machineFunctionInfo: {}
body:             |
  bb.1 (%ir-block.0):
    liveins: $d0

    ; CHECK-LABEL: name: truncating_f16
    ; CHECK: liveins: $d0
    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
    ; CHECK: [[COPY1:%[0-9]+]]:fpr16 = COPY [[COPY]].hsub
    ; CHECK: STRHui [[COPY1]], %stack.0.alloca, 0 :: (store (s16) into %ir.alloca)
    ; CHECK: RET_ReallyLR
    %0:fpr(s64) = COPY $d0
    %1:gpr(p0) = G_FRAME_INDEX %stack.0.alloca
    G_STORE %0(s64), %1(p0) :: (store (s16) into %ir.alloca)
    RET_ReallyLR

...
---
name:            truncating_f8
alignment:       4
legalized:       true
regBankSelected: true
tracksRegLiveness: true
liveins:
  - { reg: '$d0' }
frameInfo:
  maxAlignment:    1
stack:
  - { id: 0, name: alloca, size: 1, alignment: 1 }
machineFunctionInfo: {}
body:             |
  bb.1 (%ir-block.0):
    liveins: $d0

    ; CHECK-LABEL: name: truncating_f8
    ; CHECK: liveins: $d0
    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
    ; CHECK: [[COPY1:%[0-9]+]]:fpr8 = COPY [[COPY]].bsub
    ; CHECK: STRBui [[COPY1]], %stack.0.alloca, 0 :: (store (s8) into %ir.alloca)
    ; CHECK: RET_ReallyLR
    %0:fpr(s64) = COPY $d0
    %1:gpr(p0) = G_FRAME_INDEX %stack.0.alloca
    G_STORE %0(s64), %1(p0) :: (store (s8) into %ir.alloca)
    RET_ReallyLR

...
