204 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -mattr=+a,+zabha -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3 4---5name: atomicrmw_add_i8_monotonic6legalized: true7regBankSelected: true8tracksRegLiveness: true9body: |10 bb.0.entry:11 liveins: $x10, $x1112 13 ; CHECK-LABEL: name: atomicrmw_add_i8_monotonic14 ; CHECK: liveins: $x10, $x1115 ; CHECK-NEXT: {{ $}}16 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1017 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x1118 ; CHECK-NEXT: [[AMOADD_B:%[0-9]+]]:gpr = AMOADD_B [[COPY1]], [[COPY]] :: (load store monotonic (s8))19 ; CHECK-NEXT: $x10 = COPY [[AMOADD_B]]20 ; CHECK-NEXT: PseudoRET implicit $x1021 %0:gprb(p0) = COPY $x1022 %1:gprb(s64) = COPY $x1123 %2:gprb(s64) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s8))24 $x10 = COPY %2(s64)25 PseudoRET implicit $x1026...27---28name: atomicrmw_add_i16_monotonic29legalized: true30regBankSelected: true31tracksRegLiveness: true32body: |33 bb.0.entry:34 liveins: $x10, $x1135 36 ; CHECK-LABEL: name: atomicrmw_add_i16_monotonic37 ; CHECK: liveins: $x10, $x1138 ; CHECK-NEXT: {{ $}}39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1040 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x1141 ; CHECK-NEXT: [[AMOADD_H:%[0-9]+]]:gpr = AMOADD_H [[COPY1]], [[COPY]] :: (load store monotonic (s16))42 ; CHECK-NEXT: $x10 = COPY [[AMOADD_H]]43 ; CHECK-NEXT: PseudoRET implicit $x1044 %0:gprb(p0) = COPY $x1045 %1:gprb(s64) = COPY $x1146 %2:gprb(s64) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s16))47 $x10 = COPY %2(s64)48 PseudoRET implicit $x1049...50---51name: atomicrmw_add_i32_monotonic52legalized: true53regBankSelected: true54tracksRegLiveness: true55body: |56 bb.0.entry:57 liveins: $x10, $x1158 59 ; CHECK-LABEL: name: atomicrmw_add_i32_monotonic60 ; CHECK: liveins: $x10, $x1161 ; CHECK-NEXT: {{ $}}62 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1063 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x1164 ; CHECK-NEXT: [[AMOADD_W:%[0-9]+]]:gpr = AMOADD_W [[COPY1]], [[COPY]] :: (load store monotonic (s32))65 ; CHECK-NEXT: $x10 = COPY [[AMOADD_W]]66 ; CHECK-NEXT: PseudoRET implicit $x1067 %0:gprb(p0) = COPY $x1068 %1:gprb(s64) = COPY $x1169 %2:gprb(s64) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s32))70 $x10 = COPY %2(s64)71 PseudoRET implicit $x1072...73---74name: atomicrmw_add_i64_monotonic75legalized: true76regBankSelected: true77tracksRegLiveness: true78body: |79 bb.0.entry:80 liveins: $x10, $x1181 82 ; CHECK-LABEL: name: atomicrmw_add_i64_monotonic83 ; CHECK: liveins: $x10, $x1184 ; CHECK-NEXT: {{ $}}85 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1086 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x1187 ; CHECK-NEXT: [[AMOADD_D:%[0-9]+]]:gpr = AMOADD_D [[COPY1]], [[COPY]] :: (load store monotonic (s64))88 ; CHECK-NEXT: $x10 = COPY [[AMOADD_D]]89 ; CHECK-NEXT: PseudoRET implicit $x1090 %0:gprb(p0) = COPY $x1091 %1:gprb(s64) = COPY $x1192 %2:gprb(s64) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s64))93 $x10 = COPY %2(s64)94 PseudoRET implicit $x1095...96---97name: atomicrmw_sub_i8_monotonic98legalized: true99regBankSelected: true100tracksRegLiveness: true101body: |102 bb.0.entry:103 liveins: $x10, $x11104 105 ; CHECK-LABEL: name: atomicrmw_sub_i8_monotonic106 ; CHECK: liveins: $x10, $x11107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10109 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11110 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0111 ; CHECK-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY2]], [[COPY1]]112 ; CHECK-NEXT: [[AMOADD_B:%[0-9]+]]:gpr = AMOADD_B [[SUB]], [[COPY]] :: (load store monotonic (s8))113 ; CHECK-NEXT: $x10 = COPY [[AMOADD_B]]114 ; CHECK-NEXT: PseudoRET implicit $x10115 %0:gprb(p0) = COPY $x10116 %1:gprb(s64) = COPY $x11117 %2:gprb(s64) = G_CONSTANT i64 0118 %3:gprb(s64) = G_SUB %2(s64), %1(s64)119 %4:gprb(s64) = G_ATOMICRMW_ADD %0(p0), %3 :: (load store monotonic (s8))120 $x10 = COPY %4(s64)121 PseudoRET implicit $x10122...123---124name: atomicrmw_sub_i16_monotonic125legalized: true126regBankSelected: true127tracksRegLiveness: true128body: |129 bb.0.entry:130 liveins: $x10, $x11131 132 ; CHECK-LABEL: name: atomicrmw_sub_i16_monotonic133 ; CHECK: liveins: $x10, $x11134 ; CHECK-NEXT: {{ $}}135 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10136 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11137 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0138 ; CHECK-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY2]], [[COPY1]]139 ; CHECK-NEXT: [[AMOADD_H:%[0-9]+]]:gpr = AMOADD_H [[SUB]], [[COPY]] :: (load store monotonic (s16))140 ; CHECK-NEXT: $x10 = COPY [[AMOADD_H]]141 ; CHECK-NEXT: PseudoRET implicit $x10142 %0:gprb(p0) = COPY $x10143 %1:gprb(s64) = COPY $x11144 %2:gprb(s64) = G_CONSTANT i64 0145 %3:gprb(s64) = G_SUB %2(s64), %1(s64)146 %4:gprb(s64) = G_ATOMICRMW_ADD %0(p0), %3 :: (load store monotonic (s16))147 $x10 = COPY %4(s64)148 PseudoRET implicit $x10149...150---151name: atomicrmw_sub_i32_monotonic152legalized: true153regBankSelected: true154tracksRegLiveness: true155body: |156 bb.0.entry:157 liveins: $x10, $x11158 159 ; CHECK-LABEL: name: atomicrmw_sub_i32_monotonic160 ; CHECK: liveins: $x10, $x11161 ; CHECK-NEXT: {{ $}}162 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10163 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11164 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0165 ; CHECK-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY2]], [[COPY1]]166 ; CHECK-NEXT: [[AMOADD_W:%[0-9]+]]:gpr = AMOADD_W [[SUB]], [[COPY]] :: (load store monotonic (s32))167 ; CHECK-NEXT: $x10 = COPY [[AMOADD_W]]168 ; CHECK-NEXT: PseudoRET implicit $x10169 %0:gprb(p0) = COPY $x10170 %1:gprb(s64) = COPY $x11171 %2:gprb(s64) = G_CONSTANT i64 0172 %3:gprb(s64) = G_SUB %2(s64), %1(s64)173 %4:gprb(s64) = G_ATOMICRMW_ADD %0(p0), %3 :: (load store monotonic (s32))174 $x10 = COPY %4(s64)175 PseudoRET implicit $x10176...177---178name: atomicrmw_sub_i64_monotonic179legalized: true180regBankSelected: true181tracksRegLiveness: true182body: |183 bb.0.entry:184 liveins: $x10, $x11185 186 ; CHECK-LABEL: name: atomicrmw_sub_i64_monotonic187 ; CHECK: liveins: $x10, $x11188 ; CHECK-NEXT: {{ $}}189 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10190 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11191 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0192 ; CHECK-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY2]], [[COPY1]]193 ; CHECK-NEXT: [[AMOADD_B:%[0-9]+]]:gpr = AMOADD_B [[SUB]], [[COPY]] :: (load store monotonic (s8))194 ; CHECK-NEXT: $x10 = COPY [[AMOADD_B]]195 ; CHECK-NEXT: PseudoRET implicit $x10196 %0:gprb(p0) = COPY $x10197 %1:gprb(s64) = COPY $x11198 %2:gprb(s64) = G_CONSTANT i64 0199 %3:gprb(s64) = G_SUB %2(s64), %1(s64)200 %4:gprb(s64) = G_ATOMICRMW_ADD %0(p0), %3 :: (load store monotonic (s8))201 $x10 = COPY %4(s64)202 PseudoRET implicit $x10203...204