brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · d688561 Raw
161 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64-unknown-unknown -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3#4# Test that we can produce a tbz when we have a sgt compare against -1.5#6# The bit tested should be the size of the test register minus 1.7#8 9...10---11name:            tbzx_sgt12alignment:       413legalized:       true14regBankSelected: true15body:             |16  ; CHECK-LABEL: name: tbzx_sgt17  ; CHECK: bb.0:18  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)19  ; CHECK-NEXT:   liveins: $x020  ; CHECK-NEXT: {{  $}}21  ; CHECK-NEXT:   %copy:gpr64 = COPY $x022  ; CHECK-NEXT:   TBZX %copy, 63, %bb.123  ; CHECK-NEXT:   B %bb.024  ; CHECK-NEXT: {{  $}}25  ; CHECK-NEXT: bb.1:26  ; CHECK-NEXT:   RET_ReallyLR27  bb.0:28    successors: %bb.0, %bb.129    liveins: $x030    %copy:gpr(s64) = COPY $x031    %negative_one:gpr(s64) = G_CONSTANT i64 -132    %cmp:gpr(s32) = G_ICMP intpred(sgt), %copy(s64), %negative_one33    G_BRCOND %cmp, %bb.134    G_BR %bb.035  bb.1:36    RET_ReallyLR37 38...39---40name:            tbzw_sgt41alignment:       442legalized:       true43regBankSelected: true44body:             |45  ; CHECK-LABEL: name: tbzw_sgt46  ; CHECK: bb.0:47  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)48  ; CHECK-NEXT:   liveins: $x049  ; CHECK-NEXT: {{  $}}50  ; CHECK-NEXT:   %copy:gpr32 = COPY $w051  ; CHECK-NEXT:   TBZW %copy, 31, %bb.152  ; CHECK-NEXT:   B %bb.053  ; CHECK-NEXT: {{  $}}54  ; CHECK-NEXT: bb.1:55  ; CHECK-NEXT:   RET_ReallyLR56  bb.0:57    successors: %bb.0, %bb.158    liveins: $x059    %copy:gpr(s32) = COPY $w060    %negative_one:gpr(s32) = G_CONSTANT i32 -161    %cmp:gpr(s32) = G_ICMP intpred(sgt), %copy(s32), %negative_one62    G_BRCOND %cmp, %bb.163    G_BR %bb.064  bb.1:65    RET_ReallyLR66 67...68---69name:            no_tbz_not_negative_one70alignment:       471legalized:       true72regBankSelected: true73body:             |74  ; CHECK-LABEL: name: no_tbz_not_negative_one75  ; CHECK: bb.0:76  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)77  ; CHECK-NEXT:   liveins: $x078  ; CHECK-NEXT: {{  $}}79  ; CHECK-NEXT:   %copy:gpr32sp = COPY $w080  ; CHECK-NEXT:   [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri %copy, 1, 0, implicit-def $nzcv81  ; CHECK-NEXT:   Bcc 12, %bb.1, implicit $nzcv82  ; CHECK-NEXT:   B %bb.083  ; CHECK-NEXT: {{  $}}84  ; CHECK-NEXT: bb.1:85  ; CHECK-NEXT:   RET_ReallyLR86  bb.0:87    successors: %bb.0, %bb.188    liveins: $x089    %copy:gpr(s32) = COPY $w090    %one:gpr(s32) = G_CONSTANT i32 191    %cmp:gpr(s32) = G_ICMP intpred(sgt), %copy(s32), %one92    G_BRCOND %cmp, %bb.193    G_BR %bb.094  bb.1:95    RET_ReallyLR96 97...98---99name:            dont_fold_and100alignment:       4101legalized:       true102regBankSelected: true103body:             |104  ; CHECK-LABEL: name: dont_fold_and105  ; CHECK: bb.0:106  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)107  ; CHECK-NEXT:   liveins: $x0108  ; CHECK-NEXT: {{  $}}109  ; CHECK-NEXT:   %copy:gpr64 = COPY $x0110  ; CHECK-NEXT:   %and:gpr64sp = ANDXri %copy, 8000111  ; CHECK-NEXT:   [[ADDSXri:%[0-9]+]]:gpr64 = ADDSXri %and, 1, 0, implicit-def $nzcv112  ; CHECK-NEXT:   Bcc 12, %bb.1, implicit $nzcv113  ; CHECK-NEXT:   B %bb.0114  ; CHECK-NEXT: {{  $}}115  ; CHECK-NEXT: bb.1:116  ; CHECK-NEXT:   RET_ReallyLR117  bb.0:118    successors: %bb.0, %bb.1119    liveins: $x0120    %copy:gpr(s64) = COPY $x0121    %bit:gpr(s64) = G_CONSTANT i64 8122    %negative_one:gpr(s64) = G_CONSTANT i64 -1123    %c:gpr(s64) = G_CONSTANT i64 8124    %and:gpr(s64) = G_AND %copy, %bit125    %cmp:gpr(s32) = G_ICMP intpred(sgt), %and(s64), %negative_one126    G_BRCOND %cmp, %bb.1127    G_BR %bb.0128  bb.1:129    RET_ReallyLR130 131...132---133name:            dont_commute134alignment:       4135legalized:       true136regBankSelected: true137body:             |138  ; CHECK-LABEL: name: dont_commute139  ; CHECK: bb.0:140  ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)141  ; CHECK-NEXT:   liveins: $x0142  ; CHECK-NEXT: {{  $}}143  ; CHECK-NEXT:   %copy:gpr64 = COPY $x0144  ; CHECK-NEXT:   %negative_one:gpr64 = MOVi64imm -1145  ; CHECK-NEXT:   [[SUBSXrr:%[0-9]+]]:gpr64 = SUBSXrr %negative_one, %copy, implicit-def $nzcv146  ; CHECK-NEXT:   Bcc 12, %bb.1, implicit $nzcv147  ; CHECK-NEXT:   B %bb.0148  ; CHECK-NEXT: {{  $}}149  ; CHECK-NEXT: bb.1:150  ; CHECK-NEXT:   RET_ReallyLR151  bb.0:152    successors: %bb.0, %bb.1153    liveins: $x0154    %copy:gpr(s64) = COPY $x0155    %negative_one:gpr(s64) = G_CONSTANT i64 -1156    %cmp:gpr(s32) = G_ICMP intpred(sgt), %negative_one, %copy(s64)157    G_BRCOND %cmp, %bb.1158    G_BR %bb.0159  bb.1:160    RET_ReallyLR161