brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.1 KiB · 6899982 Raw
241 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -mattr=+a,+zacas,+zabha -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s --check-prefixes=RV32IA-ZABHA4# RUN: llc -mtriple=riscv64 -mattr=+a -run-pass=legalizer %s -o - \5# RUN: | FileCheck %s --check-prefixes=RV32IA6 7---8name:            cmpxchg_i89body:             |10  bb.0:11    liveins: $x1012 13    ; RV32IA-ZABHA-LABEL: name: cmpxchg_i814    ; RV32IA-ZABHA: liveins: $x1015    ; RV32IA-ZABHA-NEXT: {{  $}}16    ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1017    ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 018    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 119    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s8))20    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)21    ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x1022    ;23    ; RV32IA-LABEL: name: cmpxchg_i824    ; RV32IA: liveins: $x1025    ; RV32IA-NEXT: {{  $}}26    ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1027    ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 028    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 129    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s8))30    ; RV32IA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)31    ; RV32IA-NEXT: PseudoRET implicit $x1032    %0:_(p0) = COPY $x1033    %1:_(s8) = G_CONSTANT i8 034    %2:_(s8) = G_CONSTANT i8 135    %3:_(s8) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic (s8))36    %4:_(s64) = G_ANYEXT %337    $x10 = COPY %4(s64)38    PseudoRET implicit $x1039...40---41name:            cmpxchg_i1642body:             |43  bb.0:44    liveins: $x1045 46    ; RV32IA-ZABHA-LABEL: name: cmpxchg_i1647    ; RV32IA-ZABHA: liveins: $x1048    ; RV32IA-ZABHA-NEXT: {{  $}}49    ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1050    ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 051    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 152    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s16))53    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)54    ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x1055    ;56    ; RV32IA-LABEL: name: cmpxchg_i1657    ; RV32IA: liveins: $x1058    ; RV32IA-NEXT: {{  $}}59    ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1060    ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 061    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 162    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s16))63    ; RV32IA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)64    ; RV32IA-NEXT: PseudoRET implicit $x1065    %0:_(p0) = COPY $x1066    %1:_(s16) = G_CONSTANT i16 067    %2:_(s16) = G_CONSTANT i16 168    %3:_(s16) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic (s16))69    %4:_(s64) = G_ANYEXT %370    $x10 = COPY %4(s64)71    PseudoRET implicit $x1072...73---74name:            cmpxchg_i3275body:             |76  bb.0:77    liveins: $x1078 79    ; RV32IA-ZABHA-LABEL: name: cmpxchg_i3280    ; RV32IA-ZABHA: liveins: $x1081    ; RV32IA-ZABHA-NEXT: {{  $}}82    ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1083    ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 084    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 185    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s32))86    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)87    ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x1088    ;89    ; RV32IA-LABEL: name: cmpxchg_i3290    ; RV32IA: liveins: $x1091    ; RV32IA-NEXT: {{  $}}92    ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1093    ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 094    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 195    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s32))96    ; RV32IA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)97    ; RV32IA-NEXT: PseudoRET implicit $x1098    %0:_(p0) = COPY $x1099    %1:_(s32) = G_CONSTANT i32 0100    %2:_(s32) = G_CONSTANT i32 1101    %3:_(s32) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic (s32))102    %4:_(s64) = G_ANYEXT %3103    $x10 = COPY %4(s64)104    PseudoRET implicit $x10105...106---107name:            cmpxchg_i64108body:             |109  bb.0:110    liveins: $x10111 112    ; RV32IA-ZABHA-LABEL: name: cmpxchg_i64113    ; RV32IA-ZABHA: liveins: $x10114    ; RV32IA-ZABHA-NEXT: {{  $}}115    ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10116    ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0117    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1118    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s64))119    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)120    ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x10121    ;122    ; RV32IA-LABEL: name: cmpxchg_i64123    ; RV32IA: liveins: $x10124    ; RV32IA-NEXT: {{  $}}125    ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10126    ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0127    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1128    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s64))129    ; RV32IA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)130    ; RV32IA-NEXT: PseudoRET implicit $x10131    %0:_(p0) = COPY $x10132    %1:_(s64) = G_CONSTANT i64 0133    %2:_(s64) = G_CONSTANT i64 1134    %3:_(s64) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic (s64))135    $x10 = COPY %3(s64)136    PseudoRET implicit $x10137...138---139name:            cmpxchg_with_success_i32140 141body:             |142  bb.0:143    liveins: $x10144 145    ; RV32IA-ZABHA-LABEL: name: cmpxchg_with_success_i32146    ; RV32IA-ZABHA: liveins: $x10147    ; RV32IA-ZABHA-NEXT: {{  $}}148    ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10149    ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0150    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1151    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s32))152    ; RV32IA-ZABHA-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[ATOMIC_CMPXCHG]], 32153    ; RV32IA-ZABHA-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), [[SEXT_INREG]](s64), [[C]]154    ; RV32IA-ZABHA-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2155    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)156    ; RV32IA-ZABHA-NEXT: $x11 = COPY [[ICMP]](s64)157    ; RV32IA-ZABHA-NEXT: PseudoCALL target-flags(riscv-call) &__muldi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10158    ; RV32IA-ZABHA-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2159    ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x10160    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[COPY1]](s64)161    ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x10162    ;163    ; RV32IA-LABEL: name: cmpxchg_with_success_i32164    ; RV32IA: liveins: $x10165    ; RV32IA-NEXT: {{  $}}166    ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10167    ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0168    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1169    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s32))170    ; RV32IA-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[ATOMIC_CMPXCHG]], 32171    ; RV32IA-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), [[SEXT_INREG]](s64), [[C]]172    ; RV32IA-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2173    ; RV32IA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s64)174    ; RV32IA-NEXT: $x11 = COPY [[ICMP]](s64)175    ; RV32IA-NEXT: PseudoCALL target-flags(riscv-call) &__muldi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10176    ; RV32IA-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2177    ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x10178    ; RV32IA-NEXT: $x10 = COPY [[COPY1]](s64)179    ; RV32IA-NEXT: PseudoRET implicit $x10180    %0:_(p0) = COPY $x10181    %1:_(s32) = G_CONSTANT i32 0182    %2:_(s32) = G_CONSTANT i32 1183    %3:_(s32), %4:_(s1) = G_ATOMIC_CMPXCHG_WITH_SUCCESS %0, %1, %2 :: (load store monotonic (s32))184    %5:_(s32) = G_ANYEXT %4185    %6:_(s32) = G_MUL %3, %5186    %7:_(s64) = G_ANYEXT %6187    $x10 = COPY %7(s64)188    PseudoRET implicit $x10189...190---191name:            cmpxchg_with_success_i64192 193body:             |194  bb.0:195    liveins: $x10196 197    ; RV32IA-ZABHA-LABEL: name: cmpxchg_with_success_i64198    ; RV32IA-ZABHA: liveins: $x10199    ; RV32IA-ZABHA-NEXT: {{  $}}200    ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10201    ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0202    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1203    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s64))204    ; RV32IA-ZABHA-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), [[ATOMIC_CMPXCHG]](s64), [[C]]205    ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY [[ATOMIC_CMPXCHG]](s64)206    ; RV32IA-ZABHA-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2207    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[COPY1]](s64)208    ; RV32IA-ZABHA-NEXT: $x11 = COPY [[ICMP]](s64)209    ; RV32IA-ZABHA-NEXT: PseudoCALL target-flags(riscv-call) &__muldi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10210    ; RV32IA-ZABHA-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2211    ; RV32IA-ZABHA-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10212    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[COPY2]](s64)213    ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x10214    ;215    ; RV32IA-LABEL: name: cmpxchg_with_success_i64216    ; RV32IA: liveins: $x10217    ; RV32IA-NEXT: {{  $}}218    ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10219    ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0220    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1221    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s64))222    ; RV32IA-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(eq), [[ATOMIC_CMPXCHG]](s64), [[C]]223    ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY [[ATOMIC_CMPXCHG]](s64)224    ; RV32IA-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2225    ; RV32IA-NEXT: $x10 = COPY [[COPY1]](s64)226    ; RV32IA-NEXT: $x11 = COPY [[ICMP]](s64)227    ; RV32IA-NEXT: PseudoCALL target-flags(riscv-call) &__muldi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10228    ; RV32IA-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2229    ; RV32IA-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x10230    ; RV32IA-NEXT: $x10 = COPY [[COPY2]](s64)231    ; RV32IA-NEXT: PseudoRET implicit $x10232    %0:_(p0) = COPY $x10233    %1:_(s64) = G_CONSTANT i64 0234    %2:_(s64) = G_CONSTANT i64 1235    %3:_(s64), %4:_(s1) = G_ATOMIC_CMPXCHG_WITH_SUCCESS %0, %1, %2 :: (load store monotonic (s64))236    %5:_(s64) = G_ANYEXT %4237    %6:_(s64) = G_MUL %3, %5238    $x10 = COPY %6(s64)239    PseudoRET implicit $x10240...241