Index: lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp =================================================================== --- lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp +++ lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp @@ -173,7 +173,8 @@ // Unfortunately in MIPS both NOP and SLL will come in with Binary == 0 // so we have to special check for them. unsigned Opcode = TmpInst.getOpcode(); - if ((Opcode != Mips::NOP) && (Opcode != Mips::SLL) && !Binary) + if ((Opcode != Mips::NOP) && (Opcode != Mips::SLL) && + (Opcode != Mips::SLL_MM) && !Binary) llvm_unreachable("unimplemented opcode in EncodeInstruction()"); if (STI.getFeatureBits() & Mips::FeatureMicroMips) { Index: lib/Target/Mips/MicroMipsInstrInfo.td =================================================================== --- lib/Target/Mips/MicroMipsInstrInfo.td +++ lib/Target/Mips/MicroMipsInstrInfo.td @@ -697,4 +697,6 @@ //===----------------------------------------------------------------------===// def : MipsInstAlias<"wait", (WAIT_MM 0x0), 1>; + def : MipsInstAlias<"nop", (SLL_MM ZERO, ZERO, 0), 1>; + def : MipsInstAlias<"nop", (MOVE16_MM ZERO, ZERO), 1>; } Index: test/MC/Disassembler/Mips/micromips.txt =================================================================== --- test/MC/Disassembler/Mips/micromips.txt +++ test/MC/Disassembler/Mips/micromips.txt @@ -331,6 +331,9 @@ # CHECK: swm32 $16, $17, 8($4) 0x20 0x44 0xd0 0x08 +# CHECK: nop +0x00 0x00 0x00 0x00 + # CHECK: addu16 $6, $17, $4 0x07 0x42 @@ -399,3 +402,6 @@ # CHECK: addius5 $7, -2 0x4c 0xfc + +# CHECK: nop +0x0c 0x00 Index: test/MC/Disassembler/Mips/micromips_le.txt =================================================================== --- test/MC/Disassembler/Mips/micromips_le.txt +++ test/MC/Disassembler/Mips/micromips_le.txt @@ -331,6 +331,9 @@ # CHECK: swm32 $16, $17, 8($4) 0x44 0x20 0x08 0xd0 +# CHECK: nop +0x00 0x00 0x00 0x00 + # CHECK: addu16 $6, $17, $4 0x42 0x07 @@ -399,3 +402,6 @@ # CHECK: addius5 $7, -2 0xfc 0x4c + +# CHECK: nop +0x00 0x0c Index: test/MC/Mips/micromips-16-bit-instructions.s =================================================================== --- test/MC/Mips/micromips-16-bit-instructions.s +++ test/MC/Mips/micromips-16-bit-instructions.s @@ -42,7 +42,7 @@ # CHECK-EL: jraddiusp 20 # encoding: [0x05,0x47] # CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00] # CHECK-EL: jalrs16 $9 # encoding: [0xe9,0x45] -# CHECK-EL: move $zero, $zero # encoding: [0x00,0x0c] +# CHECK-EL: nop # encoding: [0x00,0x0c] # CHECK-EL: jr16 $9 # encoding: [0x89,0x45] # CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00] #------------------------------------------------------------------------------ @@ -81,7 +81,7 @@ # CHECK-EB: jraddiusp 20 # encoding: [0x47,0x05] # CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00] # CHECK-EB: jalrs16 $9 # encoding: [0x45,0xe9] -# CHECK-EB: move $zero, $zero # encoding: [0x0c,0x00] +# CHECK-EB: nop # encoding: [0x0c,0x00] # CHECK-EB: jr16 $9 # encoding: [0x45,0x89] # CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00] Index: test/MC/Mips/micromips-branch-instructions.s =================================================================== --- test/MC/Mips/micromips-branch-instructions.s +++ test/MC/Mips/micromips-branch-instructions.s @@ -30,9 +30,9 @@ # CHECK-EL: bltz $6, 1332 # encoding: [0x06,0x40,0x9a,0x02] # CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00] # CHECK-EL: bgezals $6, 1332 # encoding: [0x66,0x42,0x9a,0x02] -# CHECK-EL: move $zero, $zero # encoding: [0x00,0x0c] +# CHECK-EL: nop # encoding: [0x00,0x0c] # CHECK-EL: bltzals $6, 1332 # encoding: [0x26,0x42,0x9a,0x02] -# CHECK-EL: move $zero, $zero # encoding: [0x00,0x0c] +# CHECK-EL: nop # encoding: [0x00,0x0c] #------------------------------------------------------------------------------ # Big endian #------------------------------------------------------------------------------ @@ -57,9 +57,9 @@ # CHECK-EB: bltz $6, 1332 # encoding: [0x40,0x06,0x02,0x9a] # CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00] # CHECK-EB: bgezals $6, 1332 # encoding: [0x42,0x66,0x02,0x9a] -# CHECK-EB: move $zero, $zero # encoding: [0x0c,0x00] +# CHECK-EB: nop # encoding: [0x0c,0x00] # CHECK-EB: bltzals $6, 1332 # encoding: [0x42,0x26,0x02,0x9a] -# CHECK-EB: move $zero, $zero # encoding: [0x0c,0x00] +# CHECK-EB: nop # encoding: [0x0c,0x00] b 1332 beq $9,$6,1332 Index: test/MC/Mips/micromips-jump-instructions.s =================================================================== --- test/MC/Mips/micromips-jump-instructions.s +++ test/MC/Mips/micromips-jump-instructions.s @@ -20,9 +20,9 @@ # CHECK-EL: jr $7 # encoding: [0x07,0x00,0x3c,0x0f] # CHECK-EL: nop # encoding: [0x00,0x00,0x00,0x00] # CHECK-EL: jals 1328 # encoding: [0x00,0x74,0x98,0x02] -# CHECK-EL: move $zero, $zero # encoding: [0x00,0x0c] +# CHECK-EL: nop # encoding: [0x00,0x0c] # CHECK-EL: jalrs $ra, $6 # encoding: [0xe6,0x03,0x3c,0x4f] -# CHECK-EL: move $zero, $zero # encoding: [0x00,0x0c] +# CHECK-EL: nop # encoding: [0x00,0x0c] #------------------------------------------------------------------------------ # Big endian #------------------------------------------------------------------------------ @@ -37,9 +37,9 @@ # CHECK-EB: jr $7 # encoding: [0x00,0x07,0x0f,0x3c] # CHECK-EB: nop # encoding: [0x00,0x00,0x00,0x00] # CHECK-EB: jals 1328 # encoding: [0x74,0x00,0x02,0x98] -# CHECK-EB: move $zero, $zero # encoding: [0x0c,0x00] +# CHECK-EB: nop # encoding: [0x0c,0x00] # CHECK-EB: jalrs $ra, $6 # encoding: [0x03,0xe6,0x4f,0x3c] -# CHECK-EB: move $zero, $zero # encoding: [0x0c,0x00] +# CHECK-EB: nop # encoding: [0x0c,0x00] j 1328 jal 1328