175 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK3--- |4 define i1 @trunc_i32toi1(i32 %a) {5 %r = trunc i32 %a to i16 ret i1 %r7 }8 9 define i8 @trunc_i32toi8(i32 %a) {10 %r = trunc i32 %a to i811 ret i8 %r12 }13 14 define i16 @trunc_i32toi16(i32 %a) {15 %r = trunc i32 %a to i1616 ret i16 %r17 }18 19 define i8 @trunc_i64toi8(i64 %a) {20 %r = trunc i64 %a to i821 ret i8 %r22 }23 24 define i16 @trunc_i64toi16(i64 %a) {25 %r = trunc i64 %a to i1626 ret i16 %r27 }28 29 define i32 @trunc_i64toi32(i64 %a) {30 %r = trunc i64 %a to i3231 ret i32 %r32 }33 34...35---36name: trunc_i32toi137alignment: 1638legalized: true39regBankSelected: true40registers:41 - { id: 0, class: gpr }42 - { id: 1, class: gpr }43 - { id: 2, class: gpr }44body: |45 bb.1 (%ir-block.0):46 liveins: $edi47 48 ; CHECK-LABEL: name: trunc_i32toi149 ; CHECK: [[COPY:%[0-9]+]]:gr32 = COPY $edi50 ; CHECK: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit51 ; CHECK: $al = COPY [[COPY1]]52 ; CHECK: RET 0, implicit $al53 %0(s32) = COPY $edi54 %1(s1) = G_TRUNC %0(s32)55 %2(s8) = G_ANYEXT %1(s1)56 $al = COPY %2(s8)57 RET 0, implicit $al58 59...60---61name: trunc_i32toi862alignment: 1663legalized: true64regBankSelected: true65registers:66 - { id: 0, class: gpr }67 - { id: 1, class: gpr }68body: |69 bb.1 (%ir-block.0):70 liveins: $edi71 72 ; CHECK-LABEL: name: trunc_i32toi873 ; CHECK: [[COPY:%[0-9]+]]:gr32 = COPY $edi74 ; CHECK: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit75 ; CHECK: $al = COPY [[COPY1]]76 ; CHECK: RET 0, implicit $al77 %0(s32) = COPY $edi78 %1(s8) = G_TRUNC %0(s32)79 $al = COPY %1(s8)80 RET 0, implicit $al81 82...83---84name: trunc_i32toi1685alignment: 1686legalized: true87regBankSelected: true88registers:89 - { id: 0, class: gpr }90 - { id: 1, class: gpr }91body: |92 bb.1 (%ir-block.0):93 liveins: $edi94 95 ; CHECK-LABEL: name: trunc_i32toi1696 ; CHECK: [[COPY:%[0-9]+]]:gr32 = COPY $edi97 ; CHECK: [[COPY1:%[0-9]+]]:gr16 = COPY [[COPY]].sub_16bit98 ; CHECK: $ax = COPY [[COPY1]]99 ; CHECK: RET 0, implicit $ax100 %0(s32) = COPY $edi101 %1(s16) = G_TRUNC %0(s32)102 $ax = COPY %1(s16)103 RET 0, implicit $ax104 105...106---107name: trunc_i64toi8108alignment: 16109legalized: true110regBankSelected: true111registers:112 - { id: 0, class: gpr }113 - { id: 1, class: gpr }114body: |115 bb.1 (%ir-block.0):116 liveins: $rdi117 118 ; CHECK-LABEL: name: trunc_i64toi8119 ; CHECK: [[COPY:%[0-9]+]]:gr64_with_sub_8bit = COPY $rdi120 ; CHECK: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit121 ; CHECK: $al = COPY [[COPY1]]122 ; CHECK: RET 0, implicit $al123 %0(s64) = COPY $rdi124 %1(s8) = G_TRUNC %0(s64)125 $al = COPY %1(s8)126 RET 0, implicit $al127 128...129---130name: trunc_i64toi16131alignment: 16132legalized: true133regBankSelected: true134registers:135 - { id: 0, class: gpr }136 - { id: 1, class: gpr }137body: |138 bb.1 (%ir-block.0):139 liveins: $rdi140 141 ; CHECK-LABEL: name: trunc_i64toi16142 ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi143 ; CHECK: [[COPY1:%[0-9]+]]:gr16 = COPY [[COPY]].sub_16bit144 ; CHECK: $ax = COPY [[COPY1]]145 ; CHECK: RET 0, implicit $ax146 %0(s64) = COPY $rdi147 %1(s16) = G_TRUNC %0(s64)148 $ax = COPY %1(s16)149 RET 0, implicit $ax150 151...152---153name: trunc_i64toi32154alignment: 16155legalized: true156regBankSelected: true157registers:158 - { id: 0, class: gpr }159 - { id: 1, class: gpr }160body: |161 bb.1 (%ir-block.0):162 liveins: $rdi163 164 ; CHECK-LABEL: name: trunc_i64toi32165 ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi166 ; CHECK: [[COPY1:%[0-9]+]]:gr32 = COPY [[COPY]].sub_32bit167 ; CHECK: $eax = COPY [[COPY1]]168 ; CHECK: RET 0, implicit $eax169 %0(s64) = COPY $rdi170 %1(s32) = G_TRUNC %0(s64)171 $eax = COPY %1(s32)172 RET 0, implicit $eax173 174...175