199 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -mattr=+a,+zabha -run-pass=legalizer %s -o - | FileCheck %s --check-prefixes=RV32IA-ZABHA3# RUN: llc -mtriple=riscv32 -mattr=+a -run-pass=legalizer %s -o - | FileCheck %s --check-prefixes=RV32IA4 5---6name: atomicrmw_add_i8_monotonic7body: |8 bb.0.entry:9 liveins: $x10, $x1110 11 ; RV32IA-ZABHA-LABEL: name: atomicrmw_add_i8_monotonic12 ; RV32IA-ZABHA: liveins: $x10, $x1113 ; RV32IA-ZABHA-NEXT: {{ $}}14 ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1015 ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1116 ; RV32IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s8))17 ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)18 ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x1019 ;20 ; RV32IA-LABEL: name: atomicrmw_add_i8_monotonic21 ; RV32IA: liveins: $x10, $x1122 ; RV32IA-NEXT: {{ $}}23 ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1024 ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1125 ; RV32IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s8))26 ; RV32IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)27 ; RV32IA-NEXT: PseudoRET implicit $x1028 %0:_(p0) = COPY $x1029 %1:_(s32) = COPY $x1130 %2:_(s8) = G_TRUNC %1(s32)31 %3:_(s8) = G_ATOMICRMW_ADD %0(p0), %2 :: (load store monotonic (s8))32 %4:_(s32) = G_ANYEXT %3(s8)33 $x10 = COPY %4(s32)34 PseudoRET implicit $x1035...36---37name: atomicrmw_add_i16_monotonic38body: |39 bb.0.entry:40 liveins: $x10, $x1141 42 ; RV32IA-ZABHA-LABEL: name: atomicrmw_add_i16_monotonic43 ; RV32IA-ZABHA: liveins: $x10, $x1144 ; RV32IA-ZABHA-NEXT: {{ $}}45 ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1046 ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1147 ; RV32IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s16))48 ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)49 ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x1050 ;51 ; RV32IA-LABEL: name: atomicrmw_add_i16_monotonic52 ; RV32IA: liveins: $x10, $x1153 ; RV32IA-NEXT: {{ $}}54 ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1055 ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1156 ; RV32IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s16))57 ; RV32IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)58 ; RV32IA-NEXT: PseudoRET implicit $x1059 %0:_(p0) = COPY $x1060 %1:_(s32) = COPY $x1161 %2:_(s16) = G_TRUNC %1(s32)62 %3:_(s16) = G_ATOMICRMW_ADD %0(p0), %2 :: (load store monotonic (s16))63 %4:_(s32) = G_ANYEXT %3(s16)64 $x10 = COPY %4(s32)65 PseudoRET implicit $x1066...67---68name: atomicrmw_add_i32_monotonic69body: |70 bb.0.entry:71 liveins: $x10, $x1172 73 ; RV32IA-ZABHA-LABEL: name: atomicrmw_add_i32_monotonic74 ; RV32IA-ZABHA: liveins: $x10, $x1175 ; RV32IA-ZABHA-NEXT: {{ $}}76 ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1077 ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1178 ; RV32IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s32))79 ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)80 ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x1081 ;82 ; RV32IA-LABEL: name: atomicrmw_add_i32_monotonic83 ; RV32IA: liveins: $x10, $x1184 ; RV32IA-NEXT: {{ $}}85 ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1086 ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1187 ; RV32IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s32))88 ; RV32IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)89 ; RV32IA-NEXT: PseudoRET implicit $x1090 %0:_(p0) = COPY $x1091 %1:_(s32) = COPY $x1192 %2:_(s32) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s32))93 $x10 = COPY %2(s32)94 PseudoRET implicit $x1095...96---97name: atomicrmw_sub_i8_monotonic98body: |99 bb.0.entry:100 liveins: $x10, $x11101 102 ; RV32IA-ZABHA-LABEL: name: atomicrmw_sub_i8_monotonic103 ; RV32IA-ZABHA: liveins: $x10, $x11104 ; RV32IA-ZABHA-NEXT: {{ $}}105 ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10106 ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11107 ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0108 ; RV32IA-ZABHA-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[COPY1]]109 ; RV32IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s8))110 ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)111 ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x10112 ;113 ; RV32IA-LABEL: name: atomicrmw_sub_i8_monotonic114 ; RV32IA: liveins: $x10, $x11115 ; RV32IA-NEXT: {{ $}}116 ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10117 ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11118 ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0119 ; RV32IA-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[COPY1]]120 ; RV32IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s8))121 ; RV32IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)122 ; RV32IA-NEXT: PseudoRET implicit $x10123 %0:_(p0) = COPY $x10124 %1:_(s32) = COPY $x11125 %2:_(s8) = G_TRUNC %1(s32)126 %3:_(s8) = G_ATOMICRMW_SUB %0(p0), %2 :: (load store monotonic (s8))127 %4:_(s32) = G_ANYEXT %3(s8)128 $x10 = COPY %4(s32)129 PseudoRET implicit $x10130...131---132name: atomicrmw_sub_i16_monotonic133body: |134 bb.0.entry:135 liveins: $x10, $x11136 137 ; RV32IA-ZABHA-LABEL: name: atomicrmw_sub_i16_monotonic138 ; RV32IA-ZABHA: liveins: $x10, $x11139 ; RV32IA-ZABHA-NEXT: {{ $}}140 ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10141 ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11142 ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0143 ; RV32IA-ZABHA-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[COPY1]]144 ; RV32IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s16))145 ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)146 ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x10147 ;148 ; RV32IA-LABEL: name: atomicrmw_sub_i16_monotonic149 ; RV32IA: liveins: $x10, $x11150 ; RV32IA-NEXT: {{ $}}151 ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10152 ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11153 ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0154 ; RV32IA-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[COPY1]]155 ; RV32IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s16))156 ; RV32IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)157 ; RV32IA-NEXT: PseudoRET implicit $x10158 %0:_(p0) = COPY $x10159 %1:_(s32) = COPY $x11160 %2:_(s16) = G_TRUNC %1(s32)161 %3:_(s16) = G_ATOMICRMW_SUB %0(p0), %2 :: (load store monotonic (s16))162 %4:_(s32) = G_ANYEXT %3(s16)163 $x10 = COPY %4(s32)164 PseudoRET implicit $x10165...166---167name: atomicrmw_sub_i32_monotonic168body: |169 bb.0.entry:170 liveins: $x10, $x11171 172 ; RV32IA-ZABHA-LABEL: name: atomicrmw_sub_i32_monotonic173 ; RV32IA-ZABHA: liveins: $x10, $x11174 ; RV32IA-ZABHA-NEXT: {{ $}}175 ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10176 ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11177 ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0178 ; RV32IA-ZABHA-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[COPY1]]179 ; RV32IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s32))180 ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)181 ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x10182 ;183 ; RV32IA-LABEL: name: atomicrmw_sub_i32_monotonic184 ; RV32IA: liveins: $x10, $x11185 ; RV32IA-NEXT: {{ $}}186 ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10187 ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11188 ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0189 ; RV32IA-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[COPY1]]190 ; RV32IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s32))191 ; RV32IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s32)192 ; RV32IA-NEXT: PseudoRET implicit $x10193 %0:_(p0) = COPY $x10194 %1:_(s32) = COPY $x11195 %2:_(s32) = G_ATOMICRMW_SUB %0(p0), %1 :: (load store monotonic (s32))196 $x10 = COPY %2(s32)197 PseudoRET implicit $x10198...199