154 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -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(s32) = COPY $x1123 %2:gprb(s32) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s8))24 $x10 = COPY %2(s32)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(s32) = COPY $x1146 %2:gprb(s32) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s16))47 $x10 = COPY %2(s32)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(s32) = COPY $x1169 %2:gprb(s32) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s32))70 $x10 = COPY %2(s32)71 PseudoRET implicit $x1072...73---74name: atomicrmw_sub_i8_monotonic75legalized: true76regBankSelected: true77tracksRegLiveness: true78body: |79 bb.0.entry:80 liveins: $x10, $x1181 82 ; CHECK-LABEL: name: atomicrmw_sub_i8_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: [[COPY2:%[0-9]+]]:gpr = COPY $x088 ; CHECK-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY2]], [[COPY1]]89 ; CHECK-NEXT: [[AMOADD_B:%[0-9]+]]:gpr = AMOADD_B [[SUB]], [[COPY]] :: (load store monotonic (s8))90 ; CHECK-NEXT: $x10 = COPY [[AMOADD_B]]91 ; CHECK-NEXT: PseudoRET implicit $x1092 %0:gprb(p0) = COPY $x1093 %1:gprb(s32) = COPY $x1194 %2:gprb(s32) = G_CONSTANT i32 095 %3:gprb(s32) = G_SUB %2(s32), %1(s32)96 %4:gprb(s32) = G_ATOMICRMW_ADD %0(p0), %3 :: (load store monotonic (s8))97 $x10 = COPY %4(s32)98 PseudoRET implicit $x1099...100---101name: atomicrmw_sub_i16_monotonic102legalized: true103regBankSelected: true104tracksRegLiveness: true105body: |106 bb.0.entry:107 liveins: $x10, $x11108 109 ; CHECK-LABEL: name: atomicrmw_sub_i16_monotonic110 ; CHECK: liveins: $x10, $x11111 ; CHECK-NEXT: {{ $}}112 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10113 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11114 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0115 ; CHECK-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY2]], [[COPY1]]116 ; CHECK-NEXT: [[AMOADD_H:%[0-9]+]]:gpr = AMOADD_H [[SUB]], [[COPY]] :: (load store monotonic (s16))117 ; CHECK-NEXT: $x10 = COPY [[AMOADD_H]]118 ; CHECK-NEXT: PseudoRET implicit $x10119 %0:gprb(p0) = COPY $x10120 %1:gprb(s32) = COPY $x11121 %2:gprb(s32) = G_CONSTANT i32 0122 %3:gprb(s32) = G_SUB %2(s32), %1(s32)123 %4:gprb(s32) = G_ATOMICRMW_ADD %0(p0), %3 :: (load store monotonic (s16))124 $x10 = COPY %4(s32)125 PseudoRET implicit $x10126...127---128name: atomicrmw_sub_i32_monotonic129legalized: true130regBankSelected: true131tracksRegLiveness: true132body: |133 bb.0.entry:134 liveins: $x10, $x11135 136 ; CHECK-LABEL: name: atomicrmw_sub_i32_monotonic137 ; CHECK: liveins: $x10, $x11138 ; CHECK-NEXT: {{ $}}139 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10140 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11141 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0142 ; CHECK-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY2]], [[COPY1]]143 ; CHECK-NEXT: [[AMOADD_B:%[0-9]+]]:gpr = AMOADD_B [[SUB]], [[COPY]] :: (load store monotonic (s8))144 ; CHECK-NEXT: $x10 = COPY [[AMOADD_B]]145 ; CHECK-NEXT: PseudoRET implicit $x10146 %0:gprb(p0) = COPY $x10147 %1:gprb(s32) = COPY $x11148 %2:gprb(s32) = G_CONSTANT i32 0149 %3:gprb(s32) = G_SUB %2(s32), %1(s32)150 %4:gprb(s32) = G_ATOMICRMW_ADD %0(p0), %3 :: (load store monotonic (s8))151 $x10 = COPY %4(s32)152 PseudoRET implicit $x10153...154