Index: llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp =================================================================== --- llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp +++ llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp @@ -272,7 +272,12 @@ const MachineBasicBlock *MBB = MI->getParent(); MachineBasicBlock::const_instr_iterator I = ++MI->getIterator(); while (I != MBB->instr_end() && I->isInsideBundle()) { - emitInstruction(&*I); + if ((&*I)->getOpcode() == TargetOpcode::INLINEASM || + (&*I)->getOpcode() == TargetOpcode::INLINEASM_BR) { + emitInlineAsm(&*I); + } else { + emitInstruction(&*I); + } ++I; } } else { Index: llvm/test/CodeGen/AMDGPU/inline-asm.ll =================================================================== --- llvm/test/CodeGen/AMDGPU/inline-asm.ll +++ llvm/test/CodeGen/AMDGPU/inline-asm.ll @@ -316,3 +316,13 @@ tail call void asm sideeffect "; use $0", "v"(i64 %v1) ret void } + +; Check inline assembler in bundles. +; CHECK-LABEL: bundle +; CHECK: s_mov_b32 s0, 11 +; CHECK: s_mov_b64 s[0:1], 42 +define amdgpu_kernel void @bundle() { + call void asm sideeffect "s_mov_b32 s0, $0", "i"(i32 11) + call void asm sideeffect "s_mov_b64 s[0:1], $0", "i"(i64 42) + ret void +}