173 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64-unknown-unknown -verify-machineinstrs -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=NO-FP163# RUN: llc -mtriple aarch64-unknown-unknown -verify-machineinstrs -mattr=+fullfp16 -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=FP164 5...6---7name: fadd8tracksRegLiveness: true9body: |10 bb.0:11 liveins: $h0, $h112 13 ; NO-FP16-LABEL: name: fadd14 ; NO-FP16: liveins: $h0, $h115 ; NO-FP16-NEXT: {{ $}}16 ; NO-FP16-NEXT: %x:_(s16) = COPY $h017 ; NO-FP16-NEXT: %y:_(s16) = COPY $h118 ; NO-FP16-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT %x(s16)19 ; NO-FP16-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT %y(s16)20 ; NO-FP16-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[FPEXT]], [[FPEXT1]]21 ; NO-FP16-NEXT: %op:_(s16) = G_FPTRUNC [[FADD]](s32)22 ; NO-FP16-NEXT: $h0 = COPY %op(s16)23 ; NO-FP16-NEXT: RET_ReallyLR implicit $h024 ;25 ; FP16-LABEL: name: fadd26 ; FP16: liveins: $h0, $h127 ; FP16-NEXT: {{ $}}28 ; FP16-NEXT: %x:_(s16) = COPY $h029 ; FP16-NEXT: %y:_(s16) = COPY $h130 ; FP16-NEXT: %op:_(s16) = G_FADD %x, %y31 ; FP16-NEXT: $h0 = COPY %op(s16)32 ; FP16-NEXT: RET_ReallyLR implicit $h033 %x:_(s16) = COPY $h034 %y:_(s16) = COPY $h135 %op:_(s16) = G_FADD %x, %y36 $h0 = COPY %op(s16)37 RET_ReallyLR implicit $h038 39...40---41name: fsub42tracksRegLiveness: true43body: |44 bb.0:45 liveins: $h0, $h146 47 ; NO-FP16-LABEL: name: fsub48 ; NO-FP16: liveins: $h0, $h149 ; NO-FP16-NEXT: {{ $}}50 ; NO-FP16-NEXT: %x:_(s16) = COPY $h051 ; NO-FP16-NEXT: %y:_(s16) = COPY $h152 ; NO-FP16-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT %x(s16)53 ; NO-FP16-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT %y(s16)54 ; NO-FP16-NEXT: [[FSUB:%[0-9]+]]:_(s32) = G_FSUB [[FPEXT]], [[FPEXT1]]55 ; NO-FP16-NEXT: %op:_(s16) = G_FPTRUNC [[FSUB]](s32)56 ; NO-FP16-NEXT: $h0 = COPY %op(s16)57 ; NO-FP16-NEXT: RET_ReallyLR implicit $h058 ;59 ; FP16-LABEL: name: fsub60 ; FP16: liveins: $h0, $h161 ; FP16-NEXT: {{ $}}62 ; FP16-NEXT: %x:_(s16) = COPY $h063 ; FP16-NEXT: %y:_(s16) = COPY $h164 ; FP16-NEXT: %op:_(s16) = G_FSUB %x, %y65 ; FP16-NEXT: $h0 = COPY %op(s16)66 ; FP16-NEXT: RET_ReallyLR implicit $h067 %x:_(s16) = COPY $h068 %y:_(s16) = COPY $h169 %op:_(s16) = G_FSUB %x, %y70 $h0 = COPY %op(s16)71 RET_ReallyLR implicit $h072 73...74---75name: fmul76tracksRegLiveness: true77body: |78 bb.0:79 liveins: $h0, $h180 81 ; NO-FP16-LABEL: name: fmul82 ; NO-FP16: liveins: $h0, $h183 ; NO-FP16-NEXT: {{ $}}84 ; NO-FP16-NEXT: %x:_(s16) = COPY $h085 ; NO-FP16-NEXT: %y:_(s16) = COPY $h186 ; NO-FP16-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT %x(s16)87 ; NO-FP16-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT %y(s16)88 ; NO-FP16-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[FPEXT]], [[FPEXT1]]89 ; NO-FP16-NEXT: %op:_(s16) = G_FPTRUNC [[FMUL]](s32)90 ; NO-FP16-NEXT: $h0 = COPY %op(s16)91 ; NO-FP16-NEXT: RET_ReallyLR implicit $h092 ;93 ; FP16-LABEL: name: fmul94 ; FP16: liveins: $h0, $h195 ; FP16-NEXT: {{ $}}96 ; FP16-NEXT: %x:_(s16) = COPY $h097 ; FP16-NEXT: %y:_(s16) = COPY $h198 ; FP16-NEXT: %op:_(s16) = G_FMUL %x, %y99 ; FP16-NEXT: $h0 = COPY %op(s16)100 ; FP16-NEXT: RET_ReallyLR implicit $h0101 %x:_(s16) = COPY $h0102 %y:_(s16) = COPY $h1103 %op:_(s16) = G_FMUL %x, %y104 $h0 = COPY %op(s16)105 RET_ReallyLR implicit $h0106 107...108---109name: fdiv110tracksRegLiveness: true111body: |112 bb.0:113 liveins: $h0, $h1114 115 ; NO-FP16-LABEL: name: fdiv116 ; NO-FP16: liveins: $h0, $h1117 ; NO-FP16-NEXT: {{ $}}118 ; NO-FP16-NEXT: %x:_(s16) = COPY $h0119 ; NO-FP16-NEXT: %y:_(s16) = COPY $h1120 ; NO-FP16-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT %x(s16)121 ; NO-FP16-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT %y(s16)122 ; NO-FP16-NEXT: [[FDIV:%[0-9]+]]:_(s32) = G_FDIV [[FPEXT]], [[FPEXT1]]123 ; NO-FP16-NEXT: %op:_(s16) = G_FPTRUNC [[FDIV]](s32)124 ; NO-FP16-NEXT: $h0 = COPY %op(s16)125 ; NO-FP16-NEXT: RET_ReallyLR implicit $h0126 ;127 ; FP16-LABEL: name: fdiv128 ; FP16: liveins: $h0, $h1129 ; FP16-NEXT: {{ $}}130 ; FP16-NEXT: %x:_(s16) = COPY $h0131 ; FP16-NEXT: %y:_(s16) = COPY $h1132 ; FP16-NEXT: %op:_(s16) = G_FDIV %x, %y133 ; FP16-NEXT: $h0 = COPY %op(s16)134 ; FP16-NEXT: RET_ReallyLR implicit $h0135 %x:_(s16) = COPY $h0136 %y:_(s16) = COPY $h1137 %op:_(s16) = G_FDIV %x, %y138 $h0 = COPY %op(s16)139 RET_ReallyLR implicit $h0140 141...142---143name: fneg144tracksRegLiveness: true145body: |146 bb.0:147 liveins: $h0148 149 ; NO-FP16-LABEL: name: fneg150 ; NO-FP16: liveins: $h0151 ; NO-FP16-NEXT: {{ $}}152 ; NO-FP16-NEXT: %x:_(s16) = COPY $h0153 ; NO-FP16-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %x(s16)154 ; NO-FP16-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -32768155 ; NO-FP16-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[ANYEXT]], [[C]]156 ; NO-FP16-NEXT: %op:_(s16) = G_TRUNC [[XOR]](s32)157 ; NO-FP16-NEXT: $h0 = COPY %op(s16)158 ; NO-FP16-NEXT: RET_ReallyLR implicit $h0159 ;160 ; FP16-LABEL: name: fneg161 ; FP16: liveins: $h0162 ; FP16-NEXT: {{ $}}163 ; FP16-NEXT: %x:_(s16) = COPY $h0164 ; FP16-NEXT: %op:_(s16) = G_FNEG %x165 ; FP16-NEXT: $h0 = COPY %op(s16)166 ; FP16-NEXT: RET_ReallyLR implicit $h0167 %x:_(s16) = COPY $h0168 %op:_(s16) = G_FNEG %x169 $h0 = COPY %op(s16)170 RET_ReallyLR implicit $h0171 172...173