brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · e700c83 Raw
181 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-apple-darwin -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s3 4...5---6name:            select_f327alignment:       48legalized:       true9tracksRegLiveness: true10machineFunctionInfo: {}11body:             |12  bb.0:13    liveins: $s0, $s1, $w014 15    ; CHECK-LABEL: name: select_f3216    ; CHECK: liveins: $s0, $s1, $w017    ; CHECK-NEXT: {{  $}}18    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w019    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr(s32) = COPY $s020    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr(s32) = COPY $s121    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:fpr(s32) = G_SELECT [[COPY]](s32), [[COPY1]], [[COPY2]]22    ; CHECK-NEXT: $s0 = COPY [[SELECT]](s32)23    ; CHECK-NEXT: RET_ReallyLR implicit $s024    %3:_(s32) = COPY $w025    %1:_(s32) = COPY $s026    %2:_(s32) = COPY $s127    %4:_(s32) = G_SELECT %3, %1, %228    $s0 = COPY %4(s32)29    RET_ReallyLR implicit $s030 31...32---33name:            select_f6434alignment:       435legalized:       true36tracksRegLiveness: true37machineFunctionInfo: {}38body:             |39  bb.0:40    liveins: $d0, $d1, $w041 42    ; CHECK-LABEL: name: select_f6443    ; CHECK: liveins: $d0, $d1, $w044    ; CHECK-NEXT: {{  $}}45    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w046    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr(s64) = COPY $d047    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr(s64) = COPY $d148    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:fpr(s64) = G_SELECT [[COPY]](s32), [[COPY1]], [[COPY2]]49    ; CHECK-NEXT: $d0 = COPY [[SELECT]](s64)50    ; CHECK-NEXT: RET_ReallyLR implicit $d051    %3:_(s32) = COPY $w052    %1:_(s64) = COPY $d053    %2:_(s64) = COPY $d154    %4:_(s64) = G_SELECT %3, %1, %255    $d0 = COPY %4(s64)56    RET_ReallyLR implicit $d057 58...59---60name:            two_fpr_inputs_gpr_output61alignment:       462legalized:       true63tracksRegLiveness: true64machineFunctionInfo: {}65body:             |66  bb.0:67    liveins: $d0, $d1, $w068 69    ; Verify that the G_SELECT only has FPRs.70    ; The only difference between fcsel and csel are the register banks. So,71    ; if we have two FPR inputs and a GPR output, we should do a floating point72    ; select anyway. This will cost one copy for the output, but that's less73    ; than doing two to put the inputs on GPRs.74 75    ; CHECK-LABEL: name: two_fpr_inputs_gpr_output76    ; CHECK: liveins: $d0, $d1, $w077    ; CHECK-NEXT: {{  $}}78    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w079    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr(s64) = COPY $d080    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr(s64) = COPY $d181    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:fpr(s64) = G_SELECT [[COPY]](s32), [[COPY1]], [[COPY2]]82    ; CHECK-NEXT: $x0 = COPY [[SELECT]](s64)83    ; CHECK-NEXT: RET_ReallyLR implicit $x084    %3:_(s32) = COPY $w085    %1:_(s64) = COPY $d086    %2:_(s64) = COPY $d187    %4:_(s64) = G_SELECT %3, %1, %288    $x0 = COPY %4(s64)89    RET_ReallyLR implicit $x090 91...92---93name:            one_fpr_input_fpr_output94alignment:       495legalized:       true96tracksRegLiveness: true97machineFunctionInfo: {}98body:             |99  bb.0:100    liveins: $d0, $x1, $w0101 102    ; Same idea as the above test. If the output is an FPR, and one of the103    ; inputs is an FPR, then it's fewer copies to just do a FCSEL.104 105    ; CHECK-LABEL: name: one_fpr_input_fpr_output106    ; CHECK: liveins: $d0, $x1, $w0107    ; CHECK-NEXT: {{  $}}108    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0109    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr(s64) = COPY $d0110    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr(s64) = COPY $x1111    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:fpr(s64) = COPY [[COPY2]](s64)112    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:fpr(s64) = G_SELECT [[COPY]](s32), [[COPY1]], [[COPY3]]113    ; CHECK-NEXT: $d0 = COPY [[SELECT]](s64)114    ; CHECK-NEXT: RET_ReallyLR implicit $d0115    %3:_(s32) = COPY $w0116    %1:_(s64) = COPY $d0117    %2:_(s64) = COPY $x1118    %4:_(s64) = G_SELECT %3, %1, %2119    $d0 = COPY %4(s64)120    RET_ReallyLR implicit $d0121 122...123---124name:            one_fpr_input_gpr_output125alignment:       4126legalized:       true127tracksRegLiveness: true128machineFunctionInfo: {}129body:             |130  bb.0:131    liveins: $d0, $x1, $w0132 133    ; Now we have more GPR registers on the G_SELECT. It's cheaper here to put134    ; everything on GPR.135 136    ; CHECK-LABEL: name: one_fpr_input_gpr_output137    ; CHECK: liveins: $d0, $x1, $w0138    ; CHECK-NEXT: {{  $}}139    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0140    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr(s64) = COPY $d0141    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr(s64) = COPY $x1142    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr(s64) = COPY [[COPY1]](s64)143    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:gpr(s64) = G_SELECT [[COPY]](s32), [[COPY3]], [[COPY2]]144    ; CHECK-NEXT: $x0 = COPY [[SELECT]](s64)145    ; CHECK-NEXT: RET_ReallyLR implicit $x0146    %3:_(s32) = COPY $w0147    %1:_(s64) = COPY $d0148    %2:_(s64) = COPY $x1149    %4:_(s64) = G_SELECT %3, %1, %2150    $x0 = COPY %4(s64)151    RET_ReallyLR implicit $x0152 153...154---155name:            two_gpr_input_fpr_output156alignment:       4157legalized:       true158tracksRegLiveness: true159machineFunctionInfo: {}160body:             |161  bb.0:162    liveins: $x0, $x1, $w0163 164    ; Same as above. The G_SELECT should get all GPRS.165 166    ; CHECK-LABEL: name: two_gpr_input_fpr_output167    ; CHECK: liveins: $x0, $x1, $w0168    ; CHECK-NEXT: {{  $}}169    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0170    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $x0171    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr(s64) = COPY $x1172    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:gpr(s64) = G_SELECT [[COPY]](s32), [[COPY1]], [[COPY2]]173    ; CHECK-NEXT: $d0 = COPY [[SELECT]](s64)174    ; CHECK-NEXT: RET_ReallyLR implicit $d0175    %3:_(s32) = COPY $w0176    %1:_(s64) = COPY $x0177    %2:_(s64) = COPY $x1178    %4:_(s64) = G_SELECT %3, %1, %2179    $d0 = COPY %4(s64)180    RET_ReallyLR implicit $d0181