138 lines · plain
1# RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve -run-pass=aarch64-expand-pseudo -simplify-mir -verify-machineinstrs %s -o - | FileCheck %s2---3name: add_x4alignment: 45tracksRegLiveness: true6liveins:7 - { reg: '$p0' }8 - { reg: '$z0' }9frameInfo:10 maxCallFrameSize: 011body: |12 bb.0:13 liveins: $p0, $z014 15 ; CHECK: name: add_x16 ; CHECK-NOT: MOVPRFX17 ; CHECK: $z0 = FADD_ZPmZ_S renamable $p0, killed $z0, renamable $z018 ; CHECK-NEXT: RET19 renamable $z0 = FADD_ZPZZ_S_UNDEF renamable $p0, renamable $z0, killed renamable $z020 RET_ReallyLR21 22...23 24---25name: expand_mls_to_msb26body: |27 bb.0:28 ; CHECK: name: expand_mls_to_msb29 ; CHECK: {{.*}} MSB_ZPmZZ_B {{.*}}30 renamable $p0 = PTRUE_B 31, implicit $vg31 renamable $z0 = MLS_ZPZZZ_B_UNDEF killed renamable $p0, killed renamable $z2, killed renamable $z0, killed renamable $z132 RET_ReallyLR implicit $z033...34 35---36name: expand_mla_to_mad37body: |38 bb.0:39 ; CHECK: name: expand_mla_to_mad40 ; CHECK: {{.*}} MAD_ZPmZZ_B {{.*}}41 renamable $p0 = PTRUE_B 31, implicit $vg42 renamable $z0 = MLA_ZPZZZ_B_UNDEF killed renamable $p0, killed renamable $z2, killed renamable $z0, killed renamable $z143 RET_ReallyLR implicit $z044...45 46---47name: expand_transfer_implicit_defs48body: |49 bb.0:50 ; CHECK: name: expand_transfer_implicit_defs51 ; CHECK: BUNDLE52 ; CHECK-SAME: implicit-def $z0_z1_z2_z353 liveins: $z1, $z2, $p054 renamable $z0 = FADD_ZPZZ_D_UNDEF killed $p0, killed $z1, killed $z2, implicit-def $z0_z1_z2_z355 RET_ReallyLR implicit $z0_z1_z2_z356...57 58---59name: unary_undef_operand60body: |61 bb.0:62 liveins: $p0, $z063 64 ; CHECK: name: unary_undef_operand65 ; CHECK: $z0 = MOVPRFX_ZZ undef $z166 ; CHECK: $z0 = ABS_ZPmZ_S internal killed $z0, renamable $p0, killed undef renamable $z167 ; NOTE: Unary _UNDEF psuedo instructions ignore the passthru operand.68 renamable $z0 = ABS_ZPmZ_S_UNDEF renamable $z0, renamable $p0, killed undef renamable $z169 RET_ReallyLR70 71...72 73---74name: binop_undef_operand75body: |76 bb.0:77 liveins: $p0, $z178 79 ; CHECK: name: binop_undef_operand80 ; CHECK-NOT: MOVPRFX81 ; CHECK: $z0 = SMIN_ZPmZ_S renamable $p0, killed undef $z0, killed renamable $z182 renamable $z0 = SMIN_ZPZZ_S_UNDEF renamable $p0, undef renamable $z0, killed renamable $z183 RET_ReallyLR84 85...86 87---88name: binop_undef_operand_requires_movpfrx89body: |90 bb.0:91 liveins: $p0, $z192 93 ; CHECK: name: binop_undef_operand_requires_movpfrx94 ; CHECK: $z0 = MOVPRFX_ZZ undef $z295 ; CHECK: $z0 = SMIN_ZPmZ_S renamable $p0, internal killed $z0, killed renamable $z196 renamable $z0 = SMIN_ZPZZ_S_UNDEF renamable $p0, undef renamable $z2, killed renamable $z197 RET_ReallyLR98 99...100 101---102name: binop_undef_operand_requires_zeroing_movpfrx103body: |104 bb.0:105 liveins: $p0, $z1106 107 ; CHECK: name: binop_undef_operand_requires_zeroing_movpfrx108 ; CHECK: $z0 = MOVPRFX_ZPzZ_S $p0, undef $z2109 ; CHECK: $z0 = ADD_ZPmZ_S renamable $p0, internal killed $z0, killed renamable $z1110 renamable $z0 = ADD_ZPZZ_S_ZERO renamable $p0, undef renamable $z2, killed renamable $z1111 RET_ReallyLR112 113...114 115---116name: ternaryop_undef_operand117body: |118 bb.0:119 liveins: $p0, $z1, $z2120 ; CHECK: name: ternaryop_undef_operand121 ; CHECK-NOT: MOVPRFX122 ; CHECK: $z0 = MLA_ZPmZZ_B killed renamable $p0, killed undef $z0, killed renamable $z1, killed renamable $z2123 renamable $z0 = MLA_ZPZZZ_B_UNDEF killed renamable $p0, killed undef renamable $z0, killed renamable $z1, killed renamable $z2124 RET_ReallyLR implicit $z0125...126 127---128name: ternaryop_undef_operand_requires_movprfx129body: |130 bb.0:131 liveins: $p0, $z1, $z2132 ; CHECK: name: ternaryop_undef_operand_requires_movprfx133 ; CHECK: $z0 = MOVPRFX_ZZ undef $z3134 ; CHECK: $z0 = MLA_ZPmZZ_B killed renamable $p0, internal killed $z0, killed renamable $z1, killed renamable $z2135 renamable $z0 = MLA_ZPZZZ_B_UNDEF killed renamable $p0, killed undef renamable $z3, killed renamable $z1, killed renamable $z2136 RET_ReallyLR implicit $z0137...138