brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.4 KiB · 0d7bd5f Raw
265 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -mattr=+a,+zabha -run-pass=legalizer %s -o - | FileCheck %s --check-prefixes=RV64IA-ZABHA3# RUN: llc -mtriple=riscv64 -mattr=+a -run-pass=legalizer %s -o - | FileCheck %s --check-prefixes=RV64IA4 5---6name:            atomicrmw_add_i8_monotonic7body:             |8  bb.0.entry:9    liveins: $x10, $x1110 11    ; RV64IA-ZABHA-LABEL: name: atomicrmw_add_i8_monotonic12    ; RV64IA-ZABHA: liveins: $x10, $x1113    ; RV64IA-ZABHA-NEXT: {{  $}}14    ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1015    ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1116    ; RV64IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s8))17    ; RV64IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)18    ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x1019    ;20    ; RV64IA-LABEL: name: atomicrmw_add_i8_monotonic21    ; RV64IA: liveins: $x10, $x1122    ; RV64IA-NEXT: {{  $}}23    ; RV64IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1024    ; RV64IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1125    ; RV64IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s8))26    ; RV64IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)27    ; RV64IA-NEXT: PseudoRET implicit $x1028    %0:_(p0) = COPY $x1029    %1:_(s64) = COPY $x1130    %2:_(s8) = G_TRUNC %1(s64)31    %3:_(s8) = G_ATOMICRMW_ADD %0(p0), %2 :: (load store monotonic (s8))32    %4:_(s64) = G_ANYEXT %3(s8)33    $x10 = COPY %4(s64)34    PseudoRET implicit $x1035...36---37name:            atomicrmw_add_i16_monotonic38body:             |39  bb.0.entry:40    liveins: $x10, $x1141 42    ; RV64IA-ZABHA-LABEL: name: atomicrmw_add_i16_monotonic43    ; RV64IA-ZABHA: liveins: $x10, $x1144    ; RV64IA-ZABHA-NEXT: {{  $}}45    ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1046    ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1147    ; RV64IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s16))48    ; RV64IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)49    ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x1050    ;51    ; RV64IA-LABEL: name: atomicrmw_add_i16_monotonic52    ; RV64IA: liveins: $x10, $x1153    ; RV64IA-NEXT: {{  $}}54    ; RV64IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1055    ; RV64IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1156    ; RV64IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s16))57    ; RV64IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)58    ; RV64IA-NEXT: PseudoRET implicit $x1059    %0:_(p0) = COPY $x1060    %1:_(s64) = COPY $x1161    %2:_(s16) = G_TRUNC %1(s64)62    %3:_(s16) = G_ATOMICRMW_ADD %0(p0), %2 :: (load store monotonic (s16))63    %4:_(s64) = G_ANYEXT %3(s16)64    $x10 = COPY %4(s64)65    PseudoRET implicit $x1066...67---68name:            atomicrmw_add_i32_monotonic69body:             |70  bb.0.entry:71    liveins: $x10, $x1172 73    ; RV64IA-ZABHA-LABEL: name: atomicrmw_add_i32_monotonic74    ; RV64IA-ZABHA: liveins: $x10, $x1175    ; RV64IA-ZABHA-NEXT: {{  $}}76    ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1077    ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1178    ; RV64IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s32))79    ; RV64IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)80    ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x1081    ;82    ; RV64IA-LABEL: name: atomicrmw_add_i32_monotonic83    ; RV64IA: liveins: $x10, $x1184    ; RV64IA-NEXT: {{  $}}85    ; RV64IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1086    ; RV64IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1187    ; RV64IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s32))88    ; RV64IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)89    ; RV64IA-NEXT: PseudoRET implicit $x1090    %0:_(p0) = COPY $x1091    %1:_(s64) = COPY $x1192    %2:_(s32) = G_TRUNC %1(s64)93    %3:_(s32) = G_ATOMICRMW_ADD %0(p0), %2 :: (load store monotonic (s32))94    %4:_(s64) = G_ANYEXT %3(s32)95    $x10 = COPY %4(s64)96    PseudoRET implicit $x1097...98---99name:            atomicrmw_add_i64_monotonic100body:             |101  bb.0.entry:102    liveins: $x10, $x11103 104    ; RV64IA-ZABHA-LABEL: name: atomicrmw_add_i64_monotonic105    ; RV64IA-ZABHA: liveins: $x10, $x11106    ; RV64IA-ZABHA-NEXT: {{  $}}107    ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10108    ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11109    ; RV64IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s64))110    ; RV64IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)111    ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x10112    ;113    ; RV64IA-LABEL: name: atomicrmw_add_i64_monotonic114    ; RV64IA: liveins: $x10, $x11115    ; RV64IA-NEXT: {{  $}}116    ; RV64IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10117    ; RV64IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11118    ; RV64IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[COPY1]] :: (load store monotonic (s64))119    ; RV64IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)120    ; RV64IA-NEXT: PseudoRET implicit $x10121    %0:_(p0) = COPY $x10122    %1:_(s64) = COPY $x11123    %2:_(s64) = G_ATOMICRMW_ADD %0(p0), %1 :: (load store monotonic (s64))124    $x10 = COPY %2(s64)125    PseudoRET implicit $x10126...127---128name:            atomicrmw_sub_i8_monotonic129body:             |130  bb.0.entry:131    liveins: $x10, $x11132 133    ; RV64IA-ZABHA-LABEL: name: atomicrmw_sub_i8_monotonic134    ; RV64IA-ZABHA: liveins: $x10, $x11135    ; RV64IA-ZABHA-NEXT: {{  $}}136    ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10137    ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11138    ; RV64IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0139    ; RV64IA-ZABHA-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY1]]140    ; RV64IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s8))141    ; RV64IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)142    ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x10143    ;144    ; RV64IA-LABEL: name: atomicrmw_sub_i8_monotonic145    ; RV64IA: liveins: $x10, $x11146    ; RV64IA-NEXT: {{  $}}147    ; RV64IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10148    ; RV64IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11149    ; RV64IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0150    ; RV64IA-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY1]]151    ; RV64IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s8))152    ; RV64IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)153    ; RV64IA-NEXT: PseudoRET implicit $x10154    %0:_(p0) = COPY $x10155    %1:_(s64) = COPY $x11156    %2:_(s8) = G_TRUNC %1(s64)157    %3:_(s8) = G_ATOMICRMW_SUB %0(p0), %2 :: (load store monotonic (s8))158    %4:_(s64) = G_ANYEXT %3(s8)159    $x10 = COPY %4(s64)160    PseudoRET implicit $x10161...162---163name:            atomicrmw_sub_i16_monotonic164body:             |165  bb.0.entry:166    liveins: $x10, $x11167 168    ; RV64IA-ZABHA-LABEL: name: atomicrmw_sub_i16_monotonic169    ; RV64IA-ZABHA: liveins: $x10, $x11170    ; RV64IA-ZABHA-NEXT: {{  $}}171    ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10172    ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11173    ; RV64IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0174    ; RV64IA-ZABHA-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY1]]175    ; RV64IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s16))176    ; RV64IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)177    ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x10178    ;179    ; RV64IA-LABEL: name: atomicrmw_sub_i16_monotonic180    ; RV64IA: liveins: $x10, $x11181    ; RV64IA-NEXT: {{  $}}182    ; RV64IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10183    ; RV64IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11184    ; RV64IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0185    ; RV64IA-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY1]]186    ; RV64IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s16))187    ; RV64IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)188    ; RV64IA-NEXT: PseudoRET implicit $x10189    %0:_(p0) = COPY $x10190    %1:_(s64) = COPY $x11191    %2:_(s16) = G_TRUNC %1(s64)192    %3:_(s16) = G_ATOMICRMW_SUB %0(p0), %2 :: (load store monotonic (s16))193    %4:_(s64) = G_ANYEXT %3(s16)194    $x10 = COPY %4(s64)195    PseudoRET implicit $x10196...197---198name:            atomicrmw_sub_i32_monotonic199body:             |200  bb.0.entry:201    liveins: $x10, $x11202 203    ; RV64IA-ZABHA-LABEL: name: atomicrmw_sub_i32_monotonic204    ; RV64IA-ZABHA: liveins: $x10, $x11205    ; RV64IA-ZABHA-NEXT: {{  $}}206    ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10207    ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11208    ; RV64IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0209    ; RV64IA-ZABHA-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY1]]210    ; RV64IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s32))211    ; RV64IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)212    ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x10213    ;214    ; RV64IA-LABEL: name: atomicrmw_sub_i32_monotonic215    ; RV64IA: liveins: $x10, $x11216    ; RV64IA-NEXT: {{  $}}217    ; RV64IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10218    ; RV64IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11219    ; RV64IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0220    ; RV64IA-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY1]]221    ; RV64IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s32))222    ; RV64IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)223    ; RV64IA-NEXT: PseudoRET implicit $x10224    %0:_(p0) = COPY $x10225    %1:_(s64) = COPY $x11226    %2:_(s32) = G_TRUNC %1(s64)227    %3:_(s32) = G_ATOMICRMW_SUB %0(p0), %2 :: (load store monotonic (s32))228    %4:_(s64) = G_ANYEXT %3(s32)229    $x10 = COPY %4(s64)230    PseudoRET implicit $x10231...232---233name:            atomicrmw_sub_i64_monotonic234body:             |235  bb.0.entry:236    liveins: $x10, $x11237 238    ; RV64IA-ZABHA-LABEL: name: atomicrmw_sub_i64_monotonic239    ; RV64IA-ZABHA: liveins: $x10, $x11240    ; RV64IA-ZABHA-NEXT: {{  $}}241    ; RV64IA-ZABHA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10242    ; RV64IA-ZABHA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11243    ; RV64IA-ZABHA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0244    ; RV64IA-ZABHA-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY1]]245    ; RV64IA-ZABHA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s64))246    ; RV64IA-ZABHA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)247    ; RV64IA-ZABHA-NEXT: PseudoRET implicit $x10248    ;249    ; RV64IA-LABEL: name: atomicrmw_sub_i64_monotonic250    ; RV64IA: liveins: $x10, $x11251    ; RV64IA-NEXT: {{  $}}252    ; RV64IA-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10253    ; RV64IA-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11254    ; RV64IA-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0255    ; RV64IA-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[COPY1]]256    ; RV64IA-NEXT: [[ATOMICRMW_ADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[SUB]] :: (load store monotonic (s64))257    ; RV64IA-NEXT: $x10 = COPY [[ATOMICRMW_ADD]](s64)258    ; RV64IA-NEXT: PseudoRET implicit $x10259    %0:_(p0) = COPY $x10260    %1:_(s64) = COPY $x11261    %2:_(s64) = G_ATOMICRMW_SUB %0(p0), %1 :: (load store monotonic (s64))262    $x10 = COPY %2(s64)263    PseudoRET implicit $x10264...265