brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 3f50bc7 Raw
156 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -mattr=+a,+zacas,+zabha -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s --check-prefixes=RV32IA-ZABHA4# RUN: llc -mtriple=riscv32 -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]+]]:_(s32) = G_CONSTANT i32 018    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 119    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s8))20    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s32)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]+]]:_(s32) = G_CONSTANT i32 028    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 129    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s8))30    ; RV32IA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s32)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:_(s32) = G_ANYEXT %337    $x10 = COPY %4(s32)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]+]]:_(s32) = G_CONSTANT i32 051    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 152    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s16))53    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s32)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]+]]:_(s32) = G_CONSTANT i32 061    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 162    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s16))63    ; RV32IA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s32)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:_(s32) = G_ANYEXT %370    $x10 = COPY %4(s32)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]+]]:_(s32) = G_CONSTANT i32 084    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 185    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s32))86    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s32)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]+]]:_(s32) = G_CONSTANT i32 094    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 195    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s32))96    ; RV32IA-NEXT: $x10 = COPY [[ATOMIC_CMPXCHG]](s32)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    $x10 = COPY %3(s32)103    PseudoRET implicit $x10104...105---106name:            cmpxchg_with_success_i32107 108body:             |109  bb.0:110    liveins: $x10111 112    ; RV32IA-ZABHA-LABEL: name: cmpxchg_with_success_i32113    ; RV32IA-ZABHA: liveins: $x10114    ; RV32IA-ZABHA-NEXT: {{  $}}115    ; RV32IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10116    ; RV32IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0117    ; RV32IA-ZABHA-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1118    ; RV32IA-ZABHA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s32))119    ; RV32IA-ZABHA-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[ATOMIC_CMPXCHG]](s32), [[C]]120    ; RV32IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[ATOMIC_CMPXCHG]](s32)121    ; RV32IA-ZABHA-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2122    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[COPY1]](s32)123    ; RV32IA-ZABHA-NEXT: $x11 = COPY [[ICMP]](s32)124    ; RV32IA-ZABHA-NEXT: PseudoCALL target-flags(riscv-call) &__mulsi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10125    ; RV32IA-ZABHA-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2126    ; RV32IA-ZABHA-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x10127    ; RV32IA-ZABHA-NEXT: $x10 = COPY [[COPY2]](s32)128    ; RV32IA-ZABHA-NEXT: PseudoRET implicit $x10129    ;130    ; RV32IA-LABEL: name: cmpxchg_with_success_i32131    ; RV32IA: liveins: $x10132    ; RV32IA-NEXT: {{  $}}133    ; RV32IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10134    ; RV32IA-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0135    ; RV32IA-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1136    ; RV32IA-NEXT: [[ATOMIC_CMPXCHG:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[C]], [[C1]] :: (load store monotonic (s32))137    ; RV32IA-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[ATOMIC_CMPXCHG]](s32), [[C]]138    ; RV32IA-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[ATOMIC_CMPXCHG]](s32)139    ; RV32IA-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2140    ; RV32IA-NEXT: $x10 = COPY [[COPY1]](s32)141    ; RV32IA-NEXT: $x11 = COPY [[ICMP]](s32)142    ; RV32IA-NEXT: PseudoCALL target-flags(riscv-call) &__mulsi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10143    ; RV32IA-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2144    ; RV32IA-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x10145    ; RV32IA-NEXT: $x10 = COPY [[COPY2]](s32)146    ; RV32IA-NEXT: PseudoRET implicit $x10147    %0:_(p0) = COPY $x10148    %1:_(s32) = G_CONSTANT i32 0149    %2:_(s32) = G_CONSTANT i32 1150    %3:_(s32), %4:_(s1) = G_ATOMIC_CMPXCHG_WITH_SUCCESS %0, %1, %2 :: (load store monotonic (s32))151    %5:_(s32) = G_ANYEXT %4152    %6:_(s32) = G_MUL %3, %5153    $x10 = COPY %6(s32)154    PseudoRET implicit $x10155...156