mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
[mips] Handle the emission of microMIPSr6 sll instruction when used as a nop.
This instruction is encoded as zero, so we have handle that case when checking for unimplemented opcodes when producing the encoding for an instruction. llvm-svn: 321066
This commit is contained in:
parent
c562c1f132
commit
9c259722df
@ -188,7 +188,7 @@ encodeInstruction(const MCInst &MI, raw_ostream &OS,
|
||||
// so we have to special check for them.
|
||||
unsigned Opcode = TmpInst.getOpcode();
|
||||
if ((Opcode != Mips::NOP) && (Opcode != Mips::SLL) &&
|
||||
(Opcode != Mips::SLL_MM) && !Binary)
|
||||
(Opcode != Mips::SLL_MM) && (Opcode != Mips::SLL_MMR6) && !Binary)
|
||||
llvm_unreachable("unimplemented opcode in encodeInstruction()");
|
||||
|
||||
int NewOpcode = -1;
|
||||
|
46
test/CodeGen/Mips/sll-micromips-r6-encoding.mir
Normal file
46
test/CodeGen/Mips/sll-micromips-r6-encoding.mir
Normal file
@ -0,0 +1,46 @@
|
||||
# RUN: llc -march=mips -mcpu=mips32r6 -mattr=+micromips %s -start-after=xray-instrumentation -o - -show-mc-encoding | FileCheck %s
|
||||
|
||||
# Test that the 'sll $zero, $zero, 0' is correctly recognized as a real
|
||||
# instruction rather than some unimplemented opcode for the purposes of
|
||||
# encoding an instruction.
|
||||
|
||||
# CHECK-LABEL: a:
|
||||
# CHECK: nop # encoding: [0x00,0x00,0x00,0x00]
|
||||
# CHECK: jrc $ra # encoding: [0x45,0xbf]
|
||||
---
|
||||
name: a
|
||||
alignment: 2
|
||||
exposesReturnsTwice: false
|
||||
legalized: false
|
||||
regBankSelected: false
|
||||
selected: false
|
||||
tracksRegLiveness: false
|
||||
registers:
|
||||
liveins:
|
||||
- { reg: '%a0', virtual-reg: '' }
|
||||
frameInfo:
|
||||
isFrameAddressTaken: false
|
||||
isReturnAddressTaken: false
|
||||
hasStackMap: false
|
||||
hasPatchPoint: false
|
||||
stackSize: 0
|
||||
offsetAdjustment: 0
|
||||
maxAlignment: 1
|
||||
adjustsStack: false
|
||||
hasCalls: false
|
||||
stackProtector: ''
|
||||
maxCallFrameSize: 0
|
||||
hasOpaqueSPAdjustment: false
|
||||
hasVAStart: false
|
||||
hasMustTailInVarArgFunc: false
|
||||
savePoint: ''
|
||||
restorePoint: ''
|
||||
fixedStack:
|
||||
stack:
|
||||
constants:
|
||||
body: |
|
||||
bb.0.entry:
|
||||
renamable %zero = SLL_MMR6 killed renamable %zero, 0
|
||||
JRC16_MM undef %ra, implicit %v0
|
||||
|
||||
...
|
Loading…
Reference in New Issue
Block a user