mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
[SystemZ] Allow selects with a high-word destination
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191751 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4c8feae136
commit
4708657097
@ -2874,6 +2874,7 @@ SystemZTargetLowering::emitStringWrapper(MachineInstr *MI,
|
||||
MachineBasicBlock *SystemZTargetLowering::
|
||||
EmitInstrWithCustomInserter(MachineInstr *MI, MachineBasicBlock *MBB) const {
|
||||
switch (MI->getOpcode()) {
|
||||
case SystemZ::Select32Mux:
|
||||
case SystemZ::Select32:
|
||||
case SystemZ::SelectF32:
|
||||
case SystemZ::Select64:
|
||||
|
@ -198,8 +198,9 @@ let Defs = [CC] in {
|
||||
// Select instructions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
def Select32 : SelectWrapper<GR32>;
|
||||
def Select64 : SelectWrapper<GR64>;
|
||||
def Select32Mux : SelectWrapper<GRX32>, Requires<[FeatureHighWord]>;
|
||||
def Select32 : SelectWrapper<GR32>;
|
||||
def Select64 : SelectWrapper<GR64>;
|
||||
|
||||
defm CondStore8 : CondStores<GR32, nonvolatile_truncstorei8,
|
||||
nonvolatile_anyextloadi8, bdxaddr20only>;
|
||||
|
@ -287,3 +287,31 @@ define void @f12() {
|
||||
i32 1000000000, i32 400000)
|
||||
ret void
|
||||
}
|
||||
|
||||
; Test selects involving high registers.
|
||||
define void @f13(i32 %x, i32 %y) {
|
||||
; CHECK-LABEL: f13:
|
||||
; CHECK: llihl [[REG:%r[0-5]]], 0
|
||||
; CHECK: cije %r2, 0
|
||||
; CHECK: iihf [[REG]], 2102030405
|
||||
; CHECK: blah [[REG]]
|
||||
; CHECK: br %r14
|
||||
%cmp = icmp eq i32 %x, 0
|
||||
%val = select i1 %cmp, i32 0, i32 2102030405
|
||||
call void asm sideeffect "blah $0", "h"(i32 %val)
|
||||
ret void
|
||||
}
|
||||
|
||||
; Test selects involving low registers.
|
||||
define void @f14(i32 %x, i32 %y) {
|
||||
; CHECK-LABEL: f14:
|
||||
; CHECK: lhi [[REG:%r[0-5]]], 0
|
||||
; CHECK: cije %r2, 0
|
||||
; CHECK: iilf [[REG]], 2102030405
|
||||
; CHECK: blah [[REG]]
|
||||
; CHECK: br %r14
|
||||
%cmp = icmp eq i32 %x, 0
|
||||
%val = select i1 %cmp, i32 0, i32 2102030405
|
||||
call void asm sideeffect "blah $0", "r"(i32 %val)
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user