145 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=instruction-select %s -o - \3# RUN: | FileCheck %s --check-prefixes=RV64IA-ZABHA4 5---6name: cmpxchg_i87legalized: true8regBankSelected: true9 10body: |11 bb.0:12 liveins: $x1013 14 ; RV64IA-ZABHA-LABEL: name: cmpxchg_i815 ; RV64IA-ZABHA: liveins: $x1016 ; RV64IA-ZABHA-NEXT: {{ $}}17 ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1018 ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x019 ; RV64IA-ZABHA-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 120 ; RV64IA-ZABHA-NEXT: [[AMOCAS_B:%[0-9]+]]:gpr = AMOCAS_B [[COPY1]], [[ADDI]], [[COPY]] :: (load store monotonic (s8))21 ; RV64IA-ZABHA-NEXT: $x10 = COPY [[AMOCAS_B]]22 ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x1023 %0:gpr(p0) = COPY $x1024 %1:gpr(s64) = G_CONSTANT i64 025 %2:gpr(s64) = G_CONSTANT i64 126 %3:gpr(s64) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic (s8))27 $x10 = COPY %3(s64)28 PseudoRET implicit $x1029...30---31name: cmpxchg_i1632legalized: true33regBankSelected: true34 35body: |36 bb.0:37 liveins: $x1038 39 ; RV64IA-ZABHA-LABEL: name: cmpxchg_i1640 ; RV64IA-ZABHA: liveins: $x1041 ; RV64IA-ZABHA-NEXT: {{ $}}42 ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1043 ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x044 ; RV64IA-ZABHA-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 145 ; RV64IA-ZABHA-NEXT: [[AMOCAS_H:%[0-9]+]]:gpr = AMOCAS_H [[COPY1]], [[ADDI]], [[COPY]] :: (load store monotonic (s16))46 ; RV64IA-ZABHA-NEXT: $x10 = COPY [[AMOCAS_H]]47 ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x1048 %0:gpr(p0) = COPY $x1049 %1:gpr(s64) = G_CONSTANT i64 050 %2:gpr(s64) = G_CONSTANT i64 151 %3:gpr(s64) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic (s16))52 $x10 = COPY %3(s64)53 PseudoRET implicit $x1054...55---56name: cmpxchg_i3257legalized: true58regBankSelected: true59 60body: |61 bb.0:62 liveins: $x1063 64 ; RV64IA-ZABHA-LABEL: name: cmpxchg_i3265 ; RV64IA-ZABHA: liveins: $x1066 ; RV64IA-ZABHA-NEXT: {{ $}}67 ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1068 ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x069 ; RV64IA-ZABHA-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 170 ; RV64IA-ZABHA-NEXT: [[AMOCAS_W:%[0-9]+]]:gpr = AMOCAS_W [[COPY1]], [[ADDI]], [[COPY]] :: (load store monotonic (s32))71 ; RV64IA-ZABHA-NEXT: $x10 = COPY [[AMOCAS_W]]72 ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x1073 %0:gpr(p0) = COPY $x1074 %1:gpr(s64) = G_CONSTANT i64 075 %2:gpr(s64) = G_CONSTANT i64 176 %3:gpr(s64) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic (s32))77 $x10 = COPY %3(s64)78 PseudoRET implicit $x1079...80---81name: cmpxchg_i6482legalized: true83regBankSelected: true84 85body: |86 bb.0:87 liveins: $x1088 89 ; RV64IA-ZABHA-LABEL: name: cmpxchg_i6490 ; RV64IA-ZABHA: liveins: $x1091 ; RV64IA-ZABHA-NEXT: {{ $}}92 ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1093 ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x094 ; RV64IA-ZABHA-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 195 ; RV64IA-ZABHA-NEXT: [[AMOCAS_D_RV64_:%[0-9]+]]:gpr = AMOCAS_D_RV64 [[COPY1]], [[ADDI]], [[COPY]] :: (load store monotonic (s64))96 ; RV64IA-ZABHA-NEXT: $x10 = COPY [[AMOCAS_D_RV64_]]97 ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x1098 %0:gpr(p0) = COPY $x1099 %1:gpr(s64) = G_CONSTANT i64 0100 %2:gpr(s64) = G_CONSTANT i64 1101 %3:gpr(s64) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic (s64))102 $x10 = COPY %3(s64)103 PseudoRET implicit $x10104...105---106name: cmpxchg_with_success_i64107legalized: true108regBankSelected: true109body: |110 bb.0:111 liveins: $x10112 113 ; RV64IA-ZABHA-LABEL: name: cmpxchg_with_success_i64114 ; RV64IA-ZABHA: liveins: $x10115 ; RV64IA-ZABHA-NEXT: {{ $}}116 ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10117 ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x0118 ; RV64IA-ZABHA-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 1119 ; RV64IA-ZABHA-NEXT: [[AMOCAS_D_RV64_:%[0-9]+]]:gpr = AMOCAS_D_RV64 [[COPY1]], [[ADDI]], [[COPY]] :: (load store monotonic (s64))120 ; RV64IA-ZABHA-NEXT: [[SLTIU:%[0-9]+]]:gpr = SLTIU [[AMOCAS_D_RV64_]], 1121 ; RV64IA-ZABHA-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2122 ; RV64IA-ZABHA-NEXT: $x10 = COPY [[AMOCAS_D_RV64_]]123 ; RV64IA-ZABHA-NEXT: $x11 = COPY [[SLTIU]]124 ; RV64IA-ZABHA-NEXT: PseudoCALL target-flags(riscv-call) &__muldi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10125 ; RV64IA-ZABHA-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2126 ; RV64IA-ZABHA-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x10127 ; RV64IA-ZABHA-NEXT: $x10 = COPY [[COPY2]]128 ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x10129 %0:gprb(p0) = COPY $x10130 %1:gprb(s64) = G_CONSTANT i64 0131 %2:gprb(s64) = G_CONSTANT i64 1132 %3:gprb(s64) = G_ATOMIC_CMPXCHG %0(p0), %1, %2 :: (load store monotonic (s64))133 %4:gprb(s64) = G_ICMP intpred(eq), %3(s64), %1134 %5:gprb(s64) = COPY %3(s64)135 %6:gprb(s64) = COPY %4(s64)136 ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2137 $x10 = COPY %5(s64)138 $x11 = COPY %6(s64)139 PseudoCALL target-flags(riscv-call) &__muldi3, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit-def $x10140 ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2141 %7:gprb(s64) = COPY $x10142 $x10 = COPY %7(s64)143 PseudoRET implicit $x10144...145