mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Add a new llvm.x86.int intrinsic, allowing access to the
x86 int and int3 instructions. Patch by Peter Housel! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111831 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
00a5b5b2e9
commit
d80c7e1232
@ -11,6 +11,11 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Interrupt traps
|
||||
let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
|
||||
def int_x86_int : Intrinsic<[], [llvm_i8_ty]>;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// SSE1
|
||||
|
@ -595,10 +595,14 @@ let neverHasSideEffects = 1 in {
|
||||
}
|
||||
|
||||
// Trap
|
||||
def INTO : I<0xce, RawFrm, (outs), (ins), "into", []>;
|
||||
def INT3 : I<0xcc, RawFrm, (outs), (ins), "int3", []>;
|
||||
let Uses = [EFLAGS] in {
|
||||
def INTO : I<0xce, RawFrm, (outs), (ins), "into", []>;
|
||||
}
|
||||
def INT3 : I<0xcc, RawFrm, (outs), (ins), "int3",
|
||||
[(int_x86_int (i8 3))]>;
|
||||
// FIXME: need to make sure that "int $3" matches int3
|
||||
def INT : Ii8<0xcd, RawFrm, (outs), (ins i8imm:$trap), "int\t$trap", []>;
|
||||
def INT : Ii8<0xcd, RawFrm, (outs), (ins i8imm:$trap), "int\t$trap",
|
||||
[(int_x86_int imm:$trap)]>;
|
||||
def IRET16 : I<0xcf, RawFrm, (outs), (ins), "iret{w}", []>, OpSize;
|
||||
def IRET32 : I<0xcf, RawFrm, (outs), (ins), "iret{l}", []>;
|
||||
|
||||
|
20
test/CodeGen/X86/int-intrinsic.ll
Normal file
20
test/CodeGen/X86/int-intrinsic.ll
Normal file
@ -0,0 +1,20 @@
|
||||
; RUN: llc < %s -march=x86 | FileCheck %s
|
||||
; RUN: llc < %s -march=x86-64 | FileCheck %s
|
||||
|
||||
declare void @llvm.x86.int(i8) nounwind
|
||||
|
||||
; CHECK: int3
|
||||
; CHECK: ret
|
||||
define void @primitive_int3 () {
|
||||
bb.entry:
|
||||
call void @llvm.x86.int(i8 3) nounwind
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: int $-128
|
||||
; CHECK: ret
|
||||
define void @primitive_int128 () {
|
||||
bb.entry:
|
||||
call void @llvm.x86.int(i8 128) nounwind
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user