From 8d5475546b2a08b0a1dccd4bcaf6f4abd654c2f5 Mon Sep 17 00:00:00 2001 From: Leslie Zhai Date: Mon, 16 Dec 2019 09:49:33 +0800 Subject: [PATCH 1/6] [ARM64] Change INS_bkpt to INS_brk for INS_BREAKPOINT https://github.com/dotnet/runtime/issues/606 --- src/coreclr/src/jit/compiler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/src/jit/compiler.h b/src/coreclr/src/jit/compiler.h index 869267dc227d04..fc0d76da4f0caf 100644 --- a/src/coreclr/src/jit/compiler.h +++ b/src/coreclr/src/jit/compiler.h @@ -10607,7 +10607,7 @@ const instruction INS_SQRT = INS_vsqrt; #ifdef _TARGET_ARM64_ const instruction INS_MULADD = INS_madd; -const instruction INS_BREAKPOINT = INS_bkpt; +const instruction INS_BREAKPOINT = INS_brk; const instruction INS_ABS = INS_fabs; const instruction INS_SQRT = INS_fsqrt; From a1381dca62b628212ce40b4978d92691f735a5a4 Mon Sep 17 00:00:00 2001 From: Leslie Zhai Date: Mon, 16 Dec 2019 09:49:33 +0800 Subject: [PATCH 2/6] [ARM64] Change INS_bkpt to INS_brk for INS_BREAKPOINT https://github.com/dotnet/runtime/issues/606 --- src/coreclr/src/jit/compiler.h | 2 +- src/coreclr/src/jit/emitarm64.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/coreclr/src/jit/compiler.h b/src/coreclr/src/jit/compiler.h index 869267dc227d04..fc0d76da4f0caf 100644 --- a/src/coreclr/src/jit/compiler.h +++ b/src/coreclr/src/jit/compiler.h @@ -10607,7 +10607,7 @@ const instruction INS_SQRT = INS_vsqrt; #ifdef _TARGET_ARM64_ const instruction INS_MULADD = INS_madd; -const instruction INS_BREAKPOINT = INS_bkpt; +const instruction INS_BREAKPOINT = INS_brk; const instruction INS_ABS = INS_fabs; const instruction INS_SQRT = INS_fsqrt; diff --git a/src/coreclr/src/jit/emitarm64.cpp b/src/coreclr/src/jit/emitarm64.cpp index ad88954a25036e..c23d25fa6a6d57 100644 --- a/src/coreclr/src/jit/emitarm64.cpp +++ b/src/coreclr/src/jit/emitarm64.cpp @@ -3368,7 +3368,10 @@ void emitter::emitIns(instruction ins) instrDesc* id = emitNewInstrSmall(EA_8BYTE); insFormat fmt = emitInsFormat(ins); - assert(fmt == IF_SN_0A); + if (ins != INS_brk) + { + assert(fmt == IF_SN_0A); + } id->idIns(ins); id->idInsFmt(fmt); From d045a2959912e2444f7121894645030d21fb3831 Mon Sep 17 00:00:00 2001 From: Leslie Zhai Date: Tue, 17 Dec 2019 09:20:00 +0800 Subject: [PATCH 3/6] [ARM64] Change INS_bkpt to INS_brk for INS_BREAKPOINT https://github.com/dotnet/runtime/issues/606 --- src/coreclr/src/jit/codegenarm64.cpp | 2 +- src/coreclr/src/jit/emitarm64.cpp | 2 +- src/coreclr/src/jit/instrsarm64.h | 3 --- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/coreclr/src/jit/codegenarm64.cpp b/src/coreclr/src/jit/codegenarm64.cpp index 77e12efd4117ec..9e2284d5cafacd 100644 --- a/src/coreclr/src/jit/codegenarm64.cpp +++ b/src/coreclr/src/jit/codegenarm64.cpp @@ -1526,7 +1526,7 @@ BasicBlock* CodeGen::genCallFinally(BasicBlock* block) if ((block->bbNext == nullptr) || !BasicBlock::sameEHRegion(block, block->bbNext)) { - instGen(INS_bkpt); // This should never get executed + instGen(INS_brk); // This should never get executed } } else diff --git a/src/coreclr/src/jit/emitarm64.cpp b/src/coreclr/src/jit/emitarm64.cpp index c23d25fa6a6d57..97d8be66b91785 100644 --- a/src/coreclr/src/jit/emitarm64.cpp +++ b/src/coreclr/src/jit/emitarm64.cpp @@ -12550,7 +12550,7 @@ emitter::insExecutionCharacteristics emitter::getInsExecutionCharacteristics(ins } break; - case IF_SN_0A: // bkpt, nop + case IF_SN_0A: // nop result.insThroughput = PERFSCORE_THROUGHPUT_2X; result.insLatency = PERFSCORE_LATENCY_ZERO; break; diff --git a/src/coreclr/src/jit/instrsarm64.h b/src/coreclr/src/jit/instrsarm64.h index d7a3837e74ac85..07ad51115d5edb 100644 --- a/src/coreclr/src/jit/instrsarm64.h +++ b/src/coreclr/src/jit/instrsarm64.h @@ -1150,9 +1150,6 @@ INST1(uxth, "uxth", 0, 0, IF_DR_2H, 0x53003C00) INST1(nop, "nop", 0, 0, IF_SN_0A, 0xD503201F) // nop SN_0A 1101010100000011 0010000000011111 D503 201F -INST1(bkpt, "bkpt", 0, 0, IF_SN_0A, 0xD43E0000) - // brpt SN_0A 1101010000111110 0000000000000000 D43E 0000 0xF000 - INST1(brk, "brk", 0, 0, IF_SI_0A, 0xD4200000) // brk imm16 SI_0A 11010100001iiiii iiiiiiiiiii00000 D420 0000 imm16 From cfadb823dcc5ce07d8049b4160067ddf15b2050c Mon Sep 17 00:00:00 2001 From: Leslie Zhai Date: Wed, 18 Dec 2019 09:33:00 +0800 Subject: [PATCH 4/6] [ARM64] Change INS_bkpt to INS_brk for TARGET_UNIX https://github.com/dotnet/runtime/issues/606 --- src/coreclr/src/jit/codegenarm64.cpp | 2 +- src/coreclr/src/jit/compiler.h | 4 ++++ src/coreclr/src/jit/emitarm64.cpp | 4 ++-- src/coreclr/src/jit/instrsarm64.h | 3 +++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/coreclr/src/jit/codegenarm64.cpp b/src/coreclr/src/jit/codegenarm64.cpp index 9e2284d5cafacd..717341ee2a7efe 100644 --- a/src/coreclr/src/jit/codegenarm64.cpp +++ b/src/coreclr/src/jit/codegenarm64.cpp @@ -1526,7 +1526,7 @@ BasicBlock* CodeGen::genCallFinally(BasicBlock* block) if ((block->bbNext == nullptr) || !BasicBlock::sameEHRegion(block, block->bbNext)) { - instGen(INS_brk); // This should never get executed + instGen(INS_BREAKPOINT); // This should never get executed } } else diff --git a/src/coreclr/src/jit/compiler.h b/src/coreclr/src/jit/compiler.h index fc0d76da4f0caf..042a01d5bc2e06 100644 --- a/src/coreclr/src/jit/compiler.h +++ b/src/coreclr/src/jit/compiler.h @@ -10607,7 +10607,11 @@ const instruction INS_SQRT = INS_vsqrt; #ifdef _TARGET_ARM64_ const instruction INS_MULADD = INS_madd; +#if defined(_TARGET_UNIX_) const instruction INS_BREAKPOINT = INS_brk; +#else +const instruction INS_BREAKPOINT = INS_bkpt; +#endif const instruction INS_ABS = INS_fabs; const instruction INS_SQRT = INS_fsqrt; diff --git a/src/coreclr/src/jit/emitarm64.cpp b/src/coreclr/src/jit/emitarm64.cpp index 97d8be66b91785..9607ffb5363418 100644 --- a/src/coreclr/src/jit/emitarm64.cpp +++ b/src/coreclr/src/jit/emitarm64.cpp @@ -3368,7 +3368,7 @@ void emitter::emitIns(instruction ins) instrDesc* id = emitNewInstrSmall(EA_8BYTE); insFormat fmt = emitInsFormat(ins); - if (ins != INS_brk) + if (ins != INS_BREAKPOINT) { assert(fmt == IF_SN_0A); } @@ -12550,7 +12550,7 @@ emitter::insExecutionCharacteristics emitter::getInsExecutionCharacteristics(ins } break; - case IF_SN_0A: // nop + case IF_SN_0A: // bkpt or brk, nop result.insThroughput = PERFSCORE_THROUGHPUT_2X; result.insLatency = PERFSCORE_LATENCY_ZERO; break; diff --git a/src/coreclr/src/jit/instrsarm64.h b/src/coreclr/src/jit/instrsarm64.h index 07ad51115d5edb..d7a3837e74ac85 100644 --- a/src/coreclr/src/jit/instrsarm64.h +++ b/src/coreclr/src/jit/instrsarm64.h @@ -1150,6 +1150,9 @@ INST1(uxth, "uxth", 0, 0, IF_DR_2H, 0x53003C00) INST1(nop, "nop", 0, 0, IF_SN_0A, 0xD503201F) // nop SN_0A 1101010100000011 0010000000011111 D503 201F +INST1(bkpt, "bkpt", 0, 0, IF_SN_0A, 0xD43E0000) + // brpt SN_0A 1101010000111110 0000000000000000 D43E 0000 0xF000 + INST1(brk, "brk", 0, 0, IF_SI_0A, 0xD4200000) // brk imm16 SI_0A 11010100001iiiii iiiiiiiiiii00000 D420 0000 imm16 From a878bae4462089a2bc5b9a7242076e32b3174789 Mon Sep 17 00:00:00 2001 From: Leslie Zhai Date: Mon, 23 Dec 2019 11:22:30 +0800 Subject: [PATCH 5/6] [ARM64] Change INS_bkpt to INS_brk for TARGET_UNIX https://github.com/dotnet/runtime/issues/606 --- src/coreclr/src/jit/emitarm64.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/src/jit/emitarm64.cpp b/src/coreclr/src/jit/emitarm64.cpp index 9607ffb5363418..b432a8716cf902 100644 --- a/src/coreclr/src/jit/emitarm64.cpp +++ b/src/coreclr/src/jit/emitarm64.cpp @@ -12550,7 +12550,7 @@ emitter::insExecutionCharacteristics emitter::getInsExecutionCharacteristics(ins } break; - case IF_SN_0A: // bkpt or brk, nop + case IF_SN_0A: // bkpt, brk, nop result.insThroughput = PERFSCORE_THROUGHPUT_2X; result.insLatency = PERFSCORE_LATENCY_ZERO; break; From ee69ee4c88eda3b71a2cdda08f599f1863e90d05 Mon Sep 17 00:00:00 2001 From: Leslie Zhai Date: Fri, 3 Jan 2020 12:40:50 +0800 Subject: [PATCH 6/6] Fix formatting errors for INS_MULADD --- src/coreclr/src/jit/compiler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/src/jit/compiler.h b/src/coreclr/src/jit/compiler.h index 042a01d5bc2e06..cdc23b318c1b89 100644 --- a/src/coreclr/src/jit/compiler.h +++ b/src/coreclr/src/jit/compiler.h @@ -10606,7 +10606,7 @@ const instruction INS_SQRT = INS_vsqrt; #ifdef _TARGET_ARM64_ -const instruction INS_MULADD = INS_madd; +const instruction INS_MULADD = INS_madd; #if defined(_TARGET_UNIX_) const instruction INS_BREAKPOINT = INS_brk; #else