mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
[globalisel][tablegen] Add a GIM_CheckIsSameOperand test where OtherInsnID and OtherOpIdx differ
llvm-svn: 315972
This commit is contained in:
parent
09415eba32
commit
9581497d78
61
test/CodeGen/X86/GlobalISel/select-blsi.mir
Normal file
61
test/CodeGen/X86/GlobalISel/select-blsi.mir
Normal file
@ -0,0 +1,61 @@
|
||||
# RUN: llc -mtriple=x86_64-linux-gnu -mattr=+bmi -global-isel -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
|
||||
#
|
||||
# Test that rules where multiple operands must be the same operand successfully
|
||||
# match. Also test that the rules do not match when they're not the same
|
||||
# operand.
|
||||
#
|
||||
# This test covers the case when OtherInsnID and OtherOpIdx are different in a
|
||||
# GIM_CheckIsSameOperand.
|
||||
|
||||
---
|
||||
name: test_blsi32rr
|
||||
# CHECK-LABEL: name: test_blsi32rr
|
||||
alignment: 4
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
# CHECK: registers:
|
||||
# CHECK-NEXT: - { id: 0, class: gr32, preferred-register: '' }
|
||||
# CHECK-NEXT: - { id: 1, class: gpr, preferred-register: '' }
|
||||
# CHECK-NEXT: - { id: 2, class: gpr, preferred-register: '' }
|
||||
# CHECK-NEXT: - { id: 3, class: gr32, preferred-register: '' }
|
||||
registers:
|
||||
- { id: 0, class: gpr }
|
||||
- { id: 1, class: gpr }
|
||||
- { id: 2, class: gpr }
|
||||
- { id: 3, class: gpr }
|
||||
# G_SUB and G_AND both use %0 so we should match this.
|
||||
# CHECK: %3 = BLSI32rr %0
|
||||
body: |
|
||||
bb.1:
|
||||
liveins: %edi
|
||||
|
||||
%0(s32) = COPY %edi
|
||||
%1(s32) = G_CONSTANT i32 0
|
||||
%2(s32) = G_SUB %1, %0
|
||||
%3(s32) = G_AND %2, %0
|
||||
%edi = COPY %3
|
||||
|
||||
...
|
||||
---
|
||||
name: test_blsi32rr_nomatch
|
||||
# CHECK-LABEL: name: test_blsi32rr_nomatch
|
||||
alignment: 4
|
||||
legalized: true
|
||||
regBankSelected: true
|
||||
registers:
|
||||
- { id: 0, class: gpr }
|
||||
- { id: 1, class: gpr }
|
||||
- { id: 2, class: gpr }
|
||||
- { id: 3, class: gpr }
|
||||
# G_SUB and G_AND use different operands so we shouldn't match this.
|
||||
# CHECK-NOT: BLSI32rr
|
||||
body: |
|
||||
bb.1:
|
||||
liveins: %edi
|
||||
|
||||
%0(s32) = COPY %edi
|
||||
%1(s32) = G_CONSTANT i32 0
|
||||
%2(s32) = G_SUB %1, %1
|
||||
%3(s32) = G_AND %2, %0
|
||||
%edi = COPY %3
|
||||
...
|
Loading…
Reference in New Issue
Block a user