brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 6465e9a Raw
161 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3 4--- |5  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"6 7  define void @xor_s32_gpr() { ret void }8  define void @xor_s64_gpr() { ret void }9  define void @xor_constant_n1_s32_gpr() { ret void }10  define void @xor_constant_n1_s64_gpr() { ret void }11  define void @xor_constant_n1_s32_gpr_2bb() { ret void }12 13...14 15---16# Check that we select a 32-bit GPR G_XOR into EORWrr on GPR32.17# Also check that we constrain the register class of the COPY to GPR32.18name:            xor_s32_gpr19legalized:       true20regBankSelected: true21 22registers:23  - { id: 0, class: gpr }24  - { id: 1, class: gpr }25  - { id: 2, class: gpr }26 27body:             |28  bb.0:29    liveins: $w0, $w130 31    ; CHECK-LABEL: name: xor_s32_gpr32    ; CHECK: liveins: $w0, $w133    ; CHECK-NEXT: {{  $}}34    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w035    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w136    ; CHECK-NEXT: [[EORWrr:%[0-9]+]]:gpr32 = EORWrr [[COPY]], [[COPY1]]37    ; CHECK-NEXT: $w0 = COPY [[EORWrr]]38    %0(s32) = COPY $w039    %1(s32) = COPY $w140    %2(s32) = G_XOR %0, %141    $w0 = COPY %2(s32)42...43 44---45# Same as xor_s64_gpr, for 64-bit operations.46name:            xor_s64_gpr47legalized:       true48regBankSelected: true49 50registers:51  - { id: 0, class: gpr }52  - { id: 1, class: gpr }53  - { id: 2, class: gpr }54 55body:             |56  bb.0:57    liveins: $x0, $x158 59    ; CHECK-LABEL: name: xor_s64_gpr60    ; CHECK: liveins: $x0, $x161    ; CHECK-NEXT: {{  $}}62    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x063    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x164    ; CHECK-NEXT: [[EORXrr:%[0-9]+]]:gpr64 = EORXrr [[COPY]], [[COPY1]]65    ; CHECK-NEXT: $x0 = COPY [[EORXrr]]66    %0(s64) = COPY $x067    %1(s64) = COPY $x168    %2(s64) = G_XOR %0, %169    $x0 = COPY %2(s64)70...71 72---73# Check that we select a 32-bit GPR G_XOR into EORWrr on GPR32.74# Also check that we constrain the register class of the COPY to GPR32.75name:            xor_constant_n1_s32_gpr76legalized:       true77regBankSelected: true78 79registers:80  - { id: 0, class: gpr }81  - { id: 1, class: gpr }82  - { id: 2, class: gpr }83 84body:             |85  bb.0:86    liveins: $w087 88    ; CHECK-LABEL: name: xor_constant_n1_s32_gpr89    ; CHECK: liveins: $w090    ; CHECK-NEXT: {{  $}}91    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w092    ; CHECK-NEXT: [[ORNWrr:%[0-9]+]]:gpr32 = ORNWrr $wzr, [[COPY]]93    ; CHECK-NEXT: $w0 = COPY [[ORNWrr]]94    %0(s32) = COPY $w095    %1(s32) = G_CONSTANT i32 -196    %2(s32) = G_XOR %0, %197    $w0 = COPY %2(s32)98...99 100---101# Same as xor_constant_n1_s64_gpr, for 64-bit operations.102name:            xor_constant_n1_s64_gpr103legalized:       true104regBankSelected: true105 106registers:107  - { id: 0, class: gpr }108  - { id: 1, class: gpr }109  - { id: 2, class: gpr }110 111body:             |112  bb.0:113    liveins: $x0114 115    ; CHECK-LABEL: name: xor_constant_n1_s64_gpr116    ; CHECK: liveins: $x0117    ; CHECK-NEXT: {{  $}}118    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0119    ; CHECK-NEXT: [[ORNXrr:%[0-9]+]]:gpr64 = ORNXrr $xzr, [[COPY]]120    ; CHECK-NEXT: $x0 = COPY [[ORNXrr]]121    %0(s64) = COPY $x0122    %1(s64) = G_CONSTANT i64 -1123    %2(s64) = G_XOR %0, %1124    $x0 = COPY %2(s64)125...126 127---128# Check that we can obtain constants from other basic blocks.129name:            xor_constant_n1_s32_gpr_2bb130legalized:       true131regBankSelected: true132 133registers:134  - { id: 0, class: gpr }135  - { id: 1, class: gpr }136  - { id: 2, class: gpr }137 138 139body:             |140  ; CHECK-LABEL: name: xor_constant_n1_s32_gpr_2bb141  ; CHECK: bb.0:142  ; CHECK-NEXT:   successors: %bb.1(0x80000000)143  ; CHECK-NEXT:   liveins: $w0, $w1144  ; CHECK-NEXT: {{  $}}145  ; CHECK-NEXT:   B %bb.1146  ; CHECK-NEXT: {{  $}}147  ; CHECK-NEXT: bb.1:148  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr32 = COPY $w0149  ; CHECK-NEXT:   [[ORNWrr:%[0-9]+]]:gpr32 = ORNWrr $wzr, [[COPY]]150  ; CHECK-NEXT:   $w0 = COPY [[ORNWrr]]151  bb.0:152    liveins: $w0, $w1153    successors: %bb.1154    %1(s32) = G_CONSTANT i32 -1155    G_BR %bb.1156  bb.1:157    %0(s32) = COPY $w0158    %2(s32) = G_XOR %0, %1159    $w0 = COPY %2(s32)160...161