119 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3--- |4 define void @truncating_f32(double %x) {5 %alloca = alloca i32, align 46 %bitcast = bitcast double %x to i647 %trunc = trunc i64 %bitcast to i328 store i32 %trunc, ptr %alloca, align 49 ret void10 }11 12 define void @truncating_f16(double %x) {13 %alloca = alloca i16, align 214 %bitcast = bitcast double %x to i6415 %trunc = trunc i64 %bitcast to i1616 store i16 %trunc, ptr %alloca, align 217 ret void18 }19 20 define void @truncating_f8(double %x) {21 %alloca = alloca i8, align 122 %bitcast = bitcast double %x to i6423 %trunc = trunc i64 %bitcast to i824 store i8 %trunc, ptr %alloca, align 125 ret void26 }27 28...29---30name: truncating_f3231alignment: 432legalized: true33regBankSelected: true34tracksRegLiveness: true35liveins:36 - { reg: '$d0' }37frameInfo:38 maxAlignment: 439stack:40 - { id: 0, name: alloca, size: 4, alignment: 4 }41machineFunctionInfo: {}42body: |43 bb.1 (%ir-block.0):44 liveins: $d045 46 ; CHECK-LABEL: name: truncating_f3247 ; CHECK: liveins: $d048 ; CHECK-NEXT: {{ $}}49 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d050 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr32 = COPY [[COPY]].ssub51 ; CHECK-NEXT: STRSui [[COPY1]], %stack.0.alloca, 0 :: (store (s32) into %ir.alloca)52 ; CHECK-NEXT: RET_ReallyLR53 %0:fpr(s64) = COPY $d054 %1:gpr(p0) = G_FRAME_INDEX %stack.0.alloca55 G_STORE %0(s64), %1(p0) :: (store (s32) into %ir.alloca)56 RET_ReallyLR57 58...59---60name: truncating_f1661alignment: 462legalized: true63regBankSelected: true64tracksRegLiveness: true65liveins:66 - { reg: '$d0' }67frameInfo:68 maxAlignment: 269stack:70 - { id: 0, name: alloca, size: 2, alignment: 2 }71machineFunctionInfo: {}72body: |73 bb.1 (%ir-block.0):74 liveins: $d075 76 ; CHECK-LABEL: name: truncating_f1677 ; CHECK: liveins: $d078 ; CHECK-NEXT: {{ $}}79 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d080 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY [[COPY]].hsub81 ; CHECK-NEXT: STRHui [[COPY1]], %stack.0.alloca, 0 :: (store (s16) into %ir.alloca)82 ; CHECK-NEXT: RET_ReallyLR83 %0:fpr(s64) = COPY $d084 %1:gpr(p0) = G_FRAME_INDEX %stack.0.alloca85 G_STORE %0(s64), %1(p0) :: (store (s16) into %ir.alloca)86 RET_ReallyLR87 88...89---90name: truncating_f891alignment: 492legalized: true93regBankSelected: true94tracksRegLiveness: true95liveins:96 - { reg: '$d0' }97frameInfo:98 maxAlignment: 199stack:100 - { id: 0, name: alloca, size: 1, alignment: 1 }101machineFunctionInfo: {}102body: |103 bb.1 (%ir-block.0):104 liveins: $d0105 106 ; CHECK-LABEL: name: truncating_f8107 ; CHECK: liveins: $d0108 ; CHECK-NEXT: {{ $}}109 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0110 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr8 = COPY [[COPY]].bsub111 ; CHECK-NEXT: STRBui [[COPY1]], %stack.0.alloca, 0 :: (store (s8) into %ir.alloca)112 ; CHECK-NEXT: RET_ReallyLR113 %0:fpr(s64) = COPY $d0114 %1:gpr(p0) = G_FRAME_INDEX %stack.0.alloca115 G_STORE %0(s64), %1(p0) :: (store (s8) into %ir.alloca)116 RET_ReallyLR117 118...119