207 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z13 -run-pass=peephole-opt -o - %s | FileCheck %s3 4---5name: fold_vgbm_0_copyvr128_to_gr128_virtreg6tracksRegLiveness: true7body: |8 bb.0:9 liveins: $r2d10 ; CHECK-LABEL: name: fold_vgbm_0_copyvr128_to_gr128_virtreg11 ; CHECK: liveins: $r2d12 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d14 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]15 ; CHECK-NEXT: [[LGHI:%[0-9]+]]:gr64bit = LGHI 016 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:gr128bit = REG_SEQUENCE [[LGHI]], %subreg.subreg_h64, [[LGHI]], %subreg.subreg_l6417 ; CHECK-NEXT: $r0q = COPY [[REG_SEQUENCE]]18 ; CHECK-NEXT: Return implicit $r0q19 %0:gr64bit = COPY $r2d20 %1:addr64bit = COPY %021 %2:vr128bit = VGBM 022 %3:gr128bit = COPY %223 $r0q = COPY %324 Return implicit $r0q25...26 27---28name: fold_vgbm_0_copyvr128_to_gr128_virtreg_dbg_use29tracksRegLiveness: true30body: |31 bb.0:32 liveins: $r2d33 ; CHECK-LABEL: name: fold_vgbm_0_copyvr128_to_gr128_virtreg_dbg_use34 ; CHECK: liveins: $r2d35 ; CHECK-NEXT: {{ $}}36 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d37 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]38 ; CHECK-NEXT: [[LGHI:%[0-9]+]]:gr64bit = LGHI 039 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:gr128bit = REG_SEQUENCE [[LGHI]], %subreg.subreg_h64, [[LGHI]], %subreg.subreg_l6440 ; CHECK-NEXT: DBG_VALUE %2:vr128bit41 ; CHECK-NEXT: $r0q = COPY [[REG_SEQUENCE]]42 ; CHECK-NEXT: Return implicit $r0q43 %0:gr64bit = COPY $r2d44 %1:addr64bit = COPY %045 %2:vr128bit = VGBM 046 %3:gr128bit = COPY %247 DBG_VALUE %248 $r0q = COPY %349 Return implicit $r0q50...51 52---53name: fold_vgbm_0_copyvr128_to_gr128_virtreg_multi_use54tracksRegLiveness: true55body: |56 bb.0:57 liveins: $r2d58 ; CHECK-LABEL: name: fold_vgbm_0_copyvr128_to_gr128_virtreg_multi_use59 ; CHECK: liveins: $r2d60 ; CHECK-NEXT: {{ $}}61 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d62 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]63 ; CHECK-NEXT: [[VGBM:%[0-9]+]]:vr128bit = VGBM 064 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gr128bit = COPY [[VGBM]]65 ; CHECK-NEXT: $r0q = COPY [[COPY2]]66 ; CHECK-NEXT: $r2q = COPY [[COPY2]]67 ; CHECK-NEXT: Return implicit $r0q, implicit $r2q68 %0:gr64bit = COPY $r2d69 %1:addr64bit = COPY %070 %2:vr128bit = VGBM 071 %3:gr128bit = COPY %272 %4:gr128bit = COPY %273 $r0q = COPY %374 $r2q = COPY %475 Return implicit $r0q, implicit $r2q76...77 78---79name: fold_vgbm_0_copyvr128_to_gr128_physreg80tracksRegLiveness: true81body: |82 bb.0:83 liveins: $r2d84 ; CHECK-LABEL: name: fold_vgbm_0_copyvr128_to_gr128_physreg85 ; CHECK: liveins: $r2d86 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d88 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]89 ; CHECK-NEXT: [[VGBM:%[0-9]+]]:vr128bit = VGBM 090 ; CHECK-NEXT: $r0q = COPY [[VGBM]]91 ; CHECK-NEXT: Return implicit $r0q92 %0:gr64bit = COPY $r2d93 %1:addr64bit = COPY %094 %2:vr128bit = VGBM 095 $r0q = COPY %296 Return implicit $r0q97...98 99---100name: no_fold_vgbm_0_copyvr128_to_vr128_virtreg101tracksRegLiveness: true102body: |103 bb.0:104 liveins: $r2d105 ; CHECK-LABEL: name: no_fold_vgbm_0_copyvr128_to_vr128_virtreg106 ; CHECK: liveins: $r2d107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d109 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]110 ; CHECK-NEXT: [[VGBM:%[0-9]+]]:vr128bit = VGBM 0111 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vr128bit = COPY [[VGBM]]112 ; CHECK-NEXT: $v0 = COPY [[COPY2]]113 ; CHECK-NEXT: Return implicit $v0114 %0:gr64bit = COPY $r2d115 %1:addr64bit = COPY %0116 %2:vr128bit = VGBM 0117 %3:vr128bit = COPY %2118 $v0 = COPY %3119 Return implicit $v0120...121 122---123name: no_fold_vgbm_0_copyvr128_to_vr128_physreg124tracksRegLiveness: true125body: |126 bb.0:127 liveins: $r2d128 ; CHECK-LABEL: name: no_fold_vgbm_0_copyvr128_to_vr128_physreg129 ; CHECK: liveins: $r2d130 ; CHECK-NEXT: {{ $}}131 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d132 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]133 ; CHECK-NEXT: [[VGBM:%[0-9]+]]:vr128bit = VGBM 0134 ; CHECK-NEXT: $v0 = COPY [[VGBM]]135 ; CHECK-NEXT: Return implicit $v0136 %0:gr64bit = COPY $r2d137 %1:addr64bit = COPY %0138 %2:vr128bit = VGBM 0139 $v0 = COPY %2140 Return implicit $v0141...142 143---144name: fold_vgbm_1_copyvr128_to_gr128_virtreg145tracksRegLiveness: true146body: |147 bb.0:148 liveins: $r2d149 ; CHECK-LABEL: name: fold_vgbm_1_copyvr128_to_gr128_virtreg150 ; CHECK: liveins: $r2d151 ; CHECK-NEXT: {{ $}}152 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d153 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]154 ; CHECK-NEXT: [[VGBM:%[0-9]+]]:vr128bit = VGBM 1155 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gr128bit = COPY [[VGBM]]156 ; CHECK-NEXT: $r0q = COPY [[COPY2]]157 ; CHECK-NEXT: Return implicit $r0q158 %0:gr64bit = COPY $r2d159 %1:addr64bit = COPY %0160 %2:vr128bit = VGBM 1161 %3:gr128bit = COPY %2162 $r0q = COPY %3163 Return implicit $r0q164...165 166---167name: no_fold_vgbm_0_noncopy_use168tracksRegLiveness: true169body: |170 bb.0:171 liveins: $r2d172 ; CHECK-LABEL: name: no_fold_vgbm_0_noncopy_use173 ; CHECK: liveins: $r2d174 ; CHECK-NEXT: {{ $}}175 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d176 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]177 ; CHECK-NEXT: [[VGBM:%[0-9]+]]:vr128bit = VGBM 0178 ; CHECK-NEXT: Return implicit [[VGBM]]179 %0:gr64bit = COPY $r2d180 %1:addr64bit = COPY %0181 %2:vr128bit = VGBM 0182 Return implicit %2183...184 185---186name: fold_vgbm_0_copyvr128_to_gr64_subreg_h64187tracksRegLiveness: true188body: |189 bb.0:190 liveins: $r2d191 ; CHECK-LABEL: name: fold_vgbm_0_copyvr128_to_gr64_subreg_h64192 ; CHECK: liveins: $r2d193 ; CHECK-NEXT: {{ $}}194 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gr64bit = COPY $r2d195 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:addr64bit = COPY [[COPY]]196 ; CHECK-NEXT: [[VGBM:%[0-9]+]]:vr128bit = VGBM 0197 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gr64bit = COPY [[VGBM]].subreg_h64198 ; CHECK-NEXT: $r0d = COPY [[COPY2]]199 ; CHECK-NEXT: Return implicit $r0d200 %0:gr64bit = COPY $r2d201 %1:addr64bit = COPY %0202 %2:vr128bit = VGBM 0203 %3:gr64bit = COPY %2.subreg_h64204 $r0d = COPY %3205 Return implicit $r0d206...207