summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86
diff options
context:
space:
mode:
authorAndrew Kaylor <andrew.kaylor@intel.com>2018-01-02 21:04:38 +0000
committerAndrew Kaylor <andrew.kaylor@intel.com>2018-01-02 21:04:38 +0000
commit6ebc5abea99ad62ea9bc47368fc10a6c39aae3d9 (patch)
tree90a755a7021807f9d92251ae545892ee9f73508b /test/CodeGen/X86
parent0a935b3a906f834db646c728441cfe9c451e497b (diff)
Handle the case of live 16-bit subregisters in X86FixupBWInsts
Differential Revision: https://reviews.llvm.org/D40524 Change-Id: Ie3a405b28503ceae999f5f3ba07a68fa733a2400 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@321674 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r--test/CodeGen/X86/fixup-bw-inst.mir50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/CodeGen/X86/fixup-bw-inst.mir b/test/CodeGen/X86/fixup-bw-inst.mir
index cea483e1b9b..e5a5e16108f 100644
--- a/test/CodeGen/X86/fixup-bw-inst.mir
+++ b/test/CodeGen/X86/fixup-bw-inst.mir
@@ -26,6 +26,12 @@
ret i16 %i.0
}
+ define i16 @test4() {
+ entry:
+ %t1 = zext i1 undef to i16
+ %t2 = or i16 undef, %t1
+ ret i16 %t2
+ }
...
---
# CHECK-LABEL: name: test1
@@ -149,3 +155,47 @@ body: |
RETQ %ax
...
+---
+# CHECK-LABEL: name: test4
+name: test4
+alignment: 4
+exposesReturnsTwice: false
+legalized: false
+regBankSelected: false
+selected: false
+tracksRegLiveness: true
+registers:
+liveins:
+ - { reg: '%r9d' }
+frameInfo:
+ isFrameAddressTaken: false
+ isReturnAddressTaken: false
+ hasStackMap: false
+ hasPatchPoint: false
+ stackSize: 0
+ offsetAdjustment: 0
+ maxAlignment: 0
+ adjustsStack: false
+ hasCalls: false
+ stackProtector: ''
+ maxCallFrameSize: 0
+ hasOpaqueSPAdjustment: false
+ hasVAStart: false
+ hasMustTailInVarArgFunc: false
+ savePoint: ''
+ restorePoint: ''
+fixedStack:
+stack:
+constants:
+# This code copies r10b into r9b and then uses r9w. We would like to promote
+# the copy to a 32-bit copy, but because r9w is used this is not acceptable.
+body: |
+ bb.0.entry:
+ successors:
+ liveins: %r9d
+
+ %r9b = MOV8rr undef %r10b, implicit-def %r9d, implicit killed %r9d, implicit-def %eflags
+ ; CHECK-NOT: MOV32rr
+ %ax = OR16rr undef %ax, %r9w, implicit-def %eflags
+ RETQ %ax
+...