From 5182b9263d311f91035abcd1bd8d469c9533f7d6 Mon Sep 17 00:00:00 2001 From: Dawid Jurczak Date: Thu, 29 Feb 2024 11:58:46 +0100 Subject: [PATCH 1/5] JIT: Deduplicate CodeGen::genJumpTable Moving same code used across all architectures to common codegen should simplify things and reduce possibility of future regressions as noted in #98992. --- src/coreclr/jit/codegen.h | 1 + src/coreclr/jit/codegenarm.cpp | 25 +--------------- src/coreclr/jit/codegenarm64.cpp | 28 +----------------- src/coreclr/jit/codegencommon.cpp | 40 ++++++++++++++++++++++++++ src/coreclr/jit/codegenloongarch64.cpp | 28 +----------------- src/coreclr/jit/codegenriscv64.cpp | 28 +----------------- src/coreclr/jit/codegenxarch.cpp | 28 +----------------- 7 files changed, 46 insertions(+), 132 deletions(-) mode change 100644 => 100755 src/coreclr/jit/codegen.h mode change 100644 => 100755 src/coreclr/jit/codegenarm.cpp mode change 100644 => 100755 src/coreclr/jit/codegenarm64.cpp mode change 100644 => 100755 src/coreclr/jit/codegencommon.cpp mode change 100644 => 100755 src/coreclr/jit/codegenloongarch64.cpp mode change 100644 => 100755 src/coreclr/jit/codegenriscv64.cpp mode change 100644 => 100755 src/coreclr/jit/codegenxarch.cpp diff --git a/src/coreclr/jit/codegen.h b/src/coreclr/jit/codegen.h old mode 100644 new mode 100755 index 4d17e291d0c8ae..36e0f4da8e82e9 --- a/src/coreclr/jit/codegen.h +++ b/src/coreclr/jit/codegen.h @@ -1260,6 +1260,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX void genCodeForInitBlkLoop(GenTreeBlk* initBlkNode); void genCodeForInitBlkRepStos(GenTreeBlk* initBlkNode); void genCodeForInitBlkUnroll(GenTreeBlk* initBlkNode); + unsigned getBaseOffsetOfGeneratedJumpTable(GenTree* treeNode); void genJumpTable(GenTree* tree); void genTableBasedSwitch(GenTree* tree); #if defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) diff --git a/src/coreclr/jit/codegenarm.cpp b/src/coreclr/jit/codegenarm.cpp old mode 100644 new mode 100755 index eefee0e6912cf9..e1f5da5e4a146f --- a/src/coreclr/jit/codegenarm.cpp +++ b/src/coreclr/jit/codegenarm.cpp @@ -647,30 +647,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // void CodeGen::genJumpTable(GenTree* treeNode) { - noway_assert(compiler->compCurBB->KindIs(BBJ_SWITCH)); - assert(treeNode->OperGet() == GT_JMPTABLE); - - unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; - FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; - unsigned jmpTabBase; - - jmpTabBase = GetEmitter()->emitBBTableDataGenBeg(jumpCount, false); - - JITDUMP("\n J_M%03u_DS%02u LABEL DWORD\n", compiler->compMethodID, jmpTabBase); - - for (unsigned i = 0; i < jumpCount; i++) - { - BasicBlock* target = (*jumpTable)->getDestinationBlock(); - jumpTable++; - noway_assert(target->HasFlag(BBF_HAS_LABEL)); - - JITDUMP(" DD L_M%03u_" FMT_BB "\n", compiler->compMethodID, target->bbNum); - - GetEmitter()->emitDataGenData(i, target); - } - - GetEmitter()->emitDataGenEnd(); - + unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); genMov32RelocatableDataLabel(jmpTabBase, treeNode->GetRegNum()); genProduceReg(treeNode); diff --git a/src/coreclr/jit/codegenarm64.cpp b/src/coreclr/jit/codegenarm64.cpp old mode 100644 new mode 100755 index 4587bace1697ab..3c19d2dfbfc1d6 --- a/src/coreclr/jit/codegenarm64.cpp +++ b/src/coreclr/jit/codegenarm64.cpp @@ -3750,33 +3750,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // emits the table and an instruction to get the address of the first element void CodeGen::genJumpTable(GenTree* treeNode) { - noway_assert(compiler->compCurBB->KindIs(BBJ_SWITCH)); - assert(treeNode->OperGet() == GT_JMPTABLE); - - unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; - FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; - unsigned jmpTabOffs; - unsigned jmpTabBase; - - jmpTabBase = GetEmitter()->emitBBTableDataGenBeg(jumpCount, true); - - jmpTabOffs = 0; - - JITDUMP("\n J_M%03u_DS%02u LABEL DWORD\n", compiler->compMethodID, jmpTabBase); - - for (unsigned i = 0; i < jumpCount; i++) - { - BasicBlock* target = (*jumpTable)->getDestinationBlock(); - jumpTable++; - noway_assert(target->HasFlag(BBF_HAS_LABEL)); - - JITDUMP(" DD L_M%03u_" FMT_BB "\n", compiler->compMethodID, target->bbNum); - - GetEmitter()->emitDataGenData(i, target); - }; - - GetEmitter()->emitDataGenEnd(); - + unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); // Access to inline data is 'abstracted' by a special type of static member // (produced by eeFindJitDataOffs) which the emitter recognizes as being a reference // to constant data, not a real static field. diff --git a/src/coreclr/jit/codegencommon.cpp b/src/coreclr/jit/codegencommon.cpp old mode 100644 new mode 100755 index 9d7992ea4efe27..d9db6f9faa322d --- a/src/coreclr/jit/codegencommon.cpp +++ b/src/coreclr/jit/codegencommon.cpp @@ -6452,6 +6452,46 @@ void CodeGen::genFnProlog() #pragma warning(pop) #endif +//---------------------------------------------------------------------------------- +// getBaseOffsetOfGeneratedJumpTable: get base offset of generated jump table +// +// Arguments: +// treeNode - the GT_JMPTABLE node +// +// Return Value: +// base offset to jump table +// +// Assumption: +// The current basic block in process ends with a switch statement +// +unsigned CodeGen::getBaseOffsetOfGeneratedJumpTable(GenTree* treeNode) +{ + noway_assert(compiler->compCurBB->KindIs(BBJ_SWITCH)); + assert(treeNode->OperGet() == GT_JMPTABLE); + + emitter* emit = GetEmitter(); + const unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; + FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; + const unsigned jmpTabBase = emit->emitBBTableDataGenBeg(jumpCount, true); + + JITDUMP("\n J_M%03u_DS%02u LABEL DWORD\n", compiler->compMethodID, jmpTabBase); + + for (unsigned i = 0; i < jumpCount; i++) + { + BasicBlock* target = (*jumpTable)->getDestinationBlock(); + jumpTable++; + noway_assert(target->HasFlag(BBF_HAS_LABEL)); + + JITDUMP(" DD L_M%03u_" FMT_BB "\n", compiler->compMethodID, target->bbNum); + + emit->emitDataGenData(i, target); + }; + + emit->emitDataGenEnd(); + return jmpTabBase; +} + + //------------------------------------------------------------------------ // getCallTarget - Get the node that evaluates to the call target // diff --git a/src/coreclr/jit/codegenloongarch64.cpp b/src/coreclr/jit/codegenloongarch64.cpp old mode 100644 new mode 100755 index e894d987633317..f9a7ccefec8bd0 --- a/src/coreclr/jit/codegenloongarch64.cpp +++ b/src/coreclr/jit/codegenloongarch64.cpp @@ -2927,33 +2927,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // emits the table and an instruction to get the address of the first element void CodeGen::genJumpTable(GenTree* treeNode) { - noway_assert(compiler->compCurBB->KindIs(BBJ_SWITCH)); - assert(treeNode->OperGet() == GT_JMPTABLE); - - unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; - FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; - unsigned jmpTabOffs; - unsigned jmpTabBase; - - jmpTabBase = GetEmitter()->emitBBTableDataGenBeg(jumpCount, true); - - jmpTabOffs = 0; - - JITDUMP("\n J_M%03u_DS%02u LABEL DWORD\n", compiler->compMethodID, jmpTabBase); - - for (unsigned i = 0; i < jumpCount; i++) - { - BasicBlock* target = (*jumpTable)->getDestinationBlock(); - jumpTable++; - noway_assert(target->HasFlag(BBF_HAS_LABEL)); - - JITDUMP(" DD L_M%03u_" FMT_BB "\n", compiler->compMethodID, target->bbNum); - - GetEmitter()->emitDataGenData(i, target); - }; - - GetEmitter()->emitDataGenEnd(); - + unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); // Access to inline data is 'abstracted' by a special type of static member // (produced by eeFindJitDataOffs) which the emitter recognizes as being a reference // to constant data, not a real static field. diff --git a/src/coreclr/jit/codegenriscv64.cpp b/src/coreclr/jit/codegenriscv64.cpp old mode 100644 new mode 100755 index 90429b89584fd2..0ebf12d0aba1a3 --- a/src/coreclr/jit/codegenriscv64.cpp +++ b/src/coreclr/jit/codegenriscv64.cpp @@ -2850,33 +2850,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // emits the table and an instruction to get the address of the first element void CodeGen::genJumpTable(GenTree* treeNode) { - noway_assert(compiler->compCurBB->KindIs(BBJ_SWITCH)); - assert(treeNode->OperGet() == GT_JMPTABLE); - - unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; - FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; - unsigned jmpTabOffs; - unsigned jmpTabBase; - - jmpTabBase = GetEmitter()->emitBBTableDataGenBeg(jumpCount, true); - - jmpTabOffs = 0; - - JITDUMP("\n J_M%03u_DS%02u LABEL DWORD\n", compiler->compMethodID, jmpTabBase); - - for (unsigned i = 0; i < jumpCount; i++) - { - BasicBlock* target = (*jumpTable)->getDestinationBlock(); - jumpTable++; - noway_assert(target->HasFlag(BBF_HAS_LABEL)); - - JITDUMP(" DD L_M%03u_" FMT_BB "\n", compiler->compMethodID, target->bbNum); - - GetEmitter()->emitDataGenData(i, target); - }; - - GetEmitter()->emitDataGenEnd(); - + unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); // Access to inline data is 'abstracted' by a special type of static member // (produced by eeFindJitDataOffs) which the emitter recognizes as being a reference // to constant data, not a real static field. diff --git a/src/coreclr/jit/codegenxarch.cpp b/src/coreclr/jit/codegenxarch.cpp old mode 100644 new mode 100755 index 584cb3aab19bb3..bd4057a5b8c2b3 --- a/src/coreclr/jit/codegenxarch.cpp +++ b/src/coreclr/jit/codegenxarch.cpp @@ -4303,33 +4303,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // emits the table and an instruction to get the address of the first element void CodeGen::genJumpTable(GenTree* treeNode) { - noway_assert(compiler->compCurBB->KindIs(BBJ_SWITCH)); - assert(treeNode->OperGet() == GT_JMPTABLE); - - unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; - FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; - unsigned jmpTabOffs; - unsigned jmpTabBase; - - jmpTabBase = GetEmitter()->emitBBTableDataGenBeg(jumpCount, true); - - jmpTabOffs = 0; - - JITDUMP("\n J_M%03u_DS%02u LABEL DWORD\n", compiler->compMethodID, jmpTabBase); - - for (unsigned i = 0; i < jumpCount; i++) - { - BasicBlock* target = (*jumpTable)->getDestinationBlock(); - jumpTable++; - noway_assert(target->HasFlag(BBF_HAS_LABEL)); - - JITDUMP(" DD L_M%03u_" FMT_BB "\n", compiler->compMethodID, target->bbNum); - - GetEmitter()->emitDataGenData(i, target); - }; - - GetEmitter()->emitDataGenEnd(); - + unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); // Access to inline data is 'abstracted' by a special type of static member // (produced by eeFindJitDataOffs) which the emitter recognizes as being a reference // to constant data, not a real static field. From 0a075feda724e6ca0e57c26ee2505fb84d25b68a Mon Sep 17 00:00:00 2001 From: Dawid Jurczak Date: Thu, 29 Feb 2024 14:19:41 +0100 Subject: [PATCH 2/5] Fix formatting --- src/coreclr/jit/codegencommon.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/coreclr/jit/codegencommon.cpp b/src/coreclr/jit/codegencommon.cpp index d9db6f9faa322d..03775502616599 100755 --- a/src/coreclr/jit/codegencommon.cpp +++ b/src/coreclr/jit/codegencommon.cpp @@ -6469,10 +6469,10 @@ unsigned CodeGen::getBaseOffsetOfGeneratedJumpTable(GenTree* treeNode) noway_assert(compiler->compCurBB->KindIs(BBJ_SWITCH)); assert(treeNode->OperGet() == GT_JMPTABLE); - emitter* emit = GetEmitter(); - const unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; - FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; - const unsigned jmpTabBase = emit->emitBBTableDataGenBeg(jumpCount, true); + emitter* emit = GetEmitter(); + const unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; + FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; + const unsigned jmpTabBase = emit->emitBBTableDataGenBeg(jumpCount, true); JITDUMP("\n J_M%03u_DS%02u LABEL DWORD\n", compiler->compMethodID, jmpTabBase); From b7c6f6b81407cc712b45f771f62db003504ef559 Mon Sep 17 00:00:00 2001 From: Dawid Jurczak Date: Thu, 29 Feb 2024 14:41:44 +0100 Subject: [PATCH 3/5] Fix formatting v2 --- src/coreclr/jit/codegencommon.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/coreclr/jit/codegencommon.cpp b/src/coreclr/jit/codegencommon.cpp index 03775502616599..a2e6c2acfdc523 100755 --- a/src/coreclr/jit/codegencommon.cpp +++ b/src/coreclr/jit/codegencommon.cpp @@ -6491,7 +6491,6 @@ unsigned CodeGen::getBaseOffsetOfGeneratedJumpTable(GenTree* treeNode) return jmpTabBase; } - //------------------------------------------------------------------------ // getCallTarget - Get the node that evaluates to the call target // From 9af50b77b6e0bba377511da4a073256aa1383a1d Mon Sep 17 00:00:00 2001 From: Dawid Jurczak Date: Thu, 29 Feb 2024 16:00:40 +0100 Subject: [PATCH 4/5] Fix relative address bug and improve naming --- src/coreclr/jit/codegen.h | 2 +- src/coreclr/jit/codegenarm.cpp | 2 +- src/coreclr/jit/codegenarm64.cpp | 2 +- src/coreclr/jit/codegencommon.cpp | 10 ++++++---- src/coreclr/jit/codegenloongarch64.cpp | 2 +- src/coreclr/jit/codegenriscv64.cpp | 2 +- src/coreclr/jit/codegenxarch.cpp | 2 +- 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/coreclr/jit/codegen.h b/src/coreclr/jit/codegen.h index 36e0f4da8e82e9..7a2359c9fb5fc9 100755 --- a/src/coreclr/jit/codegen.h +++ b/src/coreclr/jit/codegen.h @@ -1260,7 +1260,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX void genCodeForInitBlkLoop(GenTreeBlk* initBlkNode); void genCodeForInitBlkRepStos(GenTreeBlk* initBlkNode); void genCodeForInitBlkUnroll(GenTreeBlk* initBlkNode); - unsigned getBaseOffsetOfGeneratedJumpTable(GenTree* treeNode); + unsigned genEmitJumpTable(GenTree* treeNode, bool relativeAddr); void genJumpTable(GenTree* tree); void genTableBasedSwitch(GenTree* tree); #if defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) diff --git a/src/coreclr/jit/codegenarm.cpp b/src/coreclr/jit/codegenarm.cpp index e1f5da5e4a146f..8cf3ac32b3a329 100755 --- a/src/coreclr/jit/codegenarm.cpp +++ b/src/coreclr/jit/codegenarm.cpp @@ -647,7 +647,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // void CodeGen::genJumpTable(GenTree* treeNode) { - unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); + unsigned jmpTabBase = genEmitJumpTable(treeNode, false); genMov32RelocatableDataLabel(jmpTabBase, treeNode->GetRegNum()); genProduceReg(treeNode); diff --git a/src/coreclr/jit/codegenarm64.cpp b/src/coreclr/jit/codegenarm64.cpp index 3c19d2dfbfc1d6..498f227e48d5be 100755 --- a/src/coreclr/jit/codegenarm64.cpp +++ b/src/coreclr/jit/codegenarm64.cpp @@ -3750,7 +3750,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // emits the table and an instruction to get the address of the first element void CodeGen::genJumpTable(GenTree* treeNode) { - unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); + unsigned jmpTabBase = genEmitJumpTable(treeNode, true); // Access to inline data is 'abstracted' by a special type of static member // (produced by eeFindJitDataOffs) which the emitter recognizes as being a reference // to constant data, not a real static field. diff --git a/src/coreclr/jit/codegencommon.cpp b/src/coreclr/jit/codegencommon.cpp index a2e6c2acfdc523..bf2bfaa28aad47 100755 --- a/src/coreclr/jit/codegencommon.cpp +++ b/src/coreclr/jit/codegencommon.cpp @@ -6453,10 +6453,12 @@ void CodeGen::genFnProlog() #endif //---------------------------------------------------------------------------------- -// getBaseOffsetOfGeneratedJumpTable: get base offset of generated jump table +// genEmitJumpTable: emit jump table and return its base offset // // Arguments: -// treeNode - the GT_JMPTABLE node +// treeNode - the GT_JMPTABLE node +// relativeAddr - if true, references are treated as 4-byte relative addresses, +// otherwise they are absolute pointers // // Return Value: // base offset to jump table @@ -6464,7 +6466,7 @@ void CodeGen::genFnProlog() // Assumption: // The current basic block in process ends with a switch statement // -unsigned CodeGen::getBaseOffsetOfGeneratedJumpTable(GenTree* treeNode) +unsigned CodeGen::genEmitJumpTable(GenTree* treeNode, bool relativeAddr) { noway_assert(compiler->compCurBB->KindIs(BBJ_SWITCH)); assert(treeNode->OperGet() == GT_JMPTABLE); @@ -6472,7 +6474,7 @@ unsigned CodeGen::getBaseOffsetOfGeneratedJumpTable(GenTree* treeNode) emitter* emit = GetEmitter(); const unsigned jumpCount = compiler->compCurBB->GetSwitchTargets()->bbsCount; FlowEdge** jumpTable = compiler->compCurBB->GetSwitchTargets()->bbsDstTab; - const unsigned jmpTabBase = emit->emitBBTableDataGenBeg(jumpCount, true); + const unsigned jmpTabBase = emit->emitBBTableDataGenBeg(jumpCount, relativeAddr); JITDUMP("\n J_M%03u_DS%02u LABEL DWORD\n", compiler->compMethodID, jmpTabBase); diff --git a/src/coreclr/jit/codegenloongarch64.cpp b/src/coreclr/jit/codegenloongarch64.cpp index f9a7ccefec8bd0..01e82be425a3cc 100755 --- a/src/coreclr/jit/codegenloongarch64.cpp +++ b/src/coreclr/jit/codegenloongarch64.cpp @@ -2927,7 +2927,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // emits the table and an instruction to get the address of the first element void CodeGen::genJumpTable(GenTree* treeNode) { - unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); + unsigned jmpTabBase = genEmitJumpTable(treeNode, true); // Access to inline data is 'abstracted' by a special type of static member // (produced by eeFindJitDataOffs) which the emitter recognizes as being a reference // to constant data, not a real static field. diff --git a/src/coreclr/jit/codegenriscv64.cpp b/src/coreclr/jit/codegenriscv64.cpp index 0ebf12d0aba1a3..c66511fa87b8a2 100755 --- a/src/coreclr/jit/codegenriscv64.cpp +++ b/src/coreclr/jit/codegenriscv64.cpp @@ -2850,7 +2850,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // emits the table and an instruction to get the address of the first element void CodeGen::genJumpTable(GenTree* treeNode) { - unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); + unsigned jmpTabBase = genEmitJumpTable(treeNode, true); // Access to inline data is 'abstracted' by a special type of static member // (produced by eeFindJitDataOffs) which the emitter recognizes as being a reference // to constant data, not a real static field. diff --git a/src/coreclr/jit/codegenxarch.cpp b/src/coreclr/jit/codegenxarch.cpp index bd4057a5b8c2b3..223199f35c3276 100755 --- a/src/coreclr/jit/codegenxarch.cpp +++ b/src/coreclr/jit/codegenxarch.cpp @@ -4303,7 +4303,7 @@ void CodeGen::genTableBasedSwitch(GenTree* treeNode) // emits the table and an instruction to get the address of the first element void CodeGen::genJumpTable(GenTree* treeNode) { - unsigned jmpTabBase = getBaseOffsetOfGeneratedJumpTable(treeNode); + unsigned jmpTabBase = genEmitJumpTable(treeNode, true); // Access to inline data is 'abstracted' by a special type of static member // (produced by eeFindJitDataOffs) which the emitter recognizes as being a reference // to constant data, not a real static field. From 9cbe25c95877cf6704cefa3979f30cf329148f2a Mon Sep 17 00:00:00 2001 From: Dawid Jurczak Date: Thu, 29 Feb 2024 16:15:11 +0100 Subject: [PATCH 5/5] Revert file mode change --- src/coreclr/jit/codegen.h | 0 src/coreclr/jit/codegenarm.cpp | 0 src/coreclr/jit/codegenarm64.cpp | 0 src/coreclr/jit/codegencommon.cpp | 0 src/coreclr/jit/codegenloongarch64.cpp | 0 src/coreclr/jit/codegenriscv64.cpp | 0 src/coreclr/jit/codegenxarch.cpp | 0 7 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 src/coreclr/jit/codegen.h mode change 100755 => 100644 src/coreclr/jit/codegenarm.cpp mode change 100755 => 100644 src/coreclr/jit/codegenarm64.cpp mode change 100755 => 100644 src/coreclr/jit/codegencommon.cpp mode change 100755 => 100644 src/coreclr/jit/codegenloongarch64.cpp mode change 100755 => 100644 src/coreclr/jit/codegenriscv64.cpp mode change 100755 => 100644 src/coreclr/jit/codegenxarch.cpp diff --git a/src/coreclr/jit/codegen.h b/src/coreclr/jit/codegen.h old mode 100755 new mode 100644 diff --git a/src/coreclr/jit/codegenarm.cpp b/src/coreclr/jit/codegenarm.cpp old mode 100755 new mode 100644 diff --git a/src/coreclr/jit/codegenarm64.cpp b/src/coreclr/jit/codegenarm64.cpp old mode 100755 new mode 100644 diff --git a/src/coreclr/jit/codegencommon.cpp b/src/coreclr/jit/codegencommon.cpp old mode 100755 new mode 100644 diff --git a/src/coreclr/jit/codegenloongarch64.cpp b/src/coreclr/jit/codegenloongarch64.cpp old mode 100755 new mode 100644 diff --git a/src/coreclr/jit/codegenriscv64.cpp b/src/coreclr/jit/codegenriscv64.cpp old mode 100755 new mode 100644 diff --git a/src/coreclr/jit/codegenxarch.cpp b/src/coreclr/jit/codegenxarch.cpp old mode 100755 new mode 100644