@@ -7339,47 +7339,52 @@ SDValue RISCVTargetLowering::lowerINIT_TRAMPOLINE(SDValue Op,
7339
7339
7340
7340
// auipc t2, 0
7341
7341
// Loads the current PC into t2.
7342
- MCInst AUIPC_X7_0_Inst =
7343
- MCInstBuilder(RISCV::AUIPC).addReg(RISCV::X7).addImm(0);
7344
- uint32_t AUIPC_X7_0 = GetEncoding(AUIPC_X7_0_Inst);
7345
- OutChains[0] =
7346
- DAG.getTruncStore(Root, dl, DAG.getConstant(AUIPC_X7_0, dl, MVT::i64),
7347
- Addr, MachinePointerInfo(TrmpAddr), MVT::i32);
7342
+ OutChains[0] = DAG.getTruncStore(
7343
+ Root, dl,
7344
+ DAG.getConstant(
7345
+ GetEncoding(MCInstBuilder(RISCV::AUIPC).addReg(RISCV::X7).addImm(0)),
7346
+ dl, MVT::i64),
7347
+ Addr, MachinePointerInfo(TrmpAddr), MVT::i32);
7348
7348
7349
7349
// ld t0, 24(t2)
7350
7350
// Loads the function address into t0. Note that we are using offsets
7351
7351
// pc-relative to the first instruction of the trampoline.
7352
- MCInst LD_X5_TargetFunctionOffset_Inst =
7353
- MCInstBuilder(RISCV::LD).addReg(RISCV::X5).addReg(RISCV::X7).addImm(FunctionAddressOffset);
7354
- uint32_t LD_X5_TargetFunctionOffset =
7355
- GetEncoding(LD_X5_TargetFunctionOffset_Inst);
7356
7352
Addr = DAG.getNode(ISD::ADD, dl, MVT::i64, Trmp,
7357
7353
DAG.getConstant(4, dl, MVT::i64));
7358
7354
OutChains[1] = DAG.getTruncStore(
7359
- Root, dl, DAG.getConstant(LD_X5_TargetFunctionOffset, dl, MVT::i64), Addr,
7360
- MachinePointerInfo(TrmpAddr, 4), MVT::i32);
7355
+ Root, dl,
7356
+ DAG.getConstant(GetEncoding(MCInstBuilder(RISCV::LD)
7357
+ .addReg(RISCV::X5)
7358
+ .addReg(RISCV::X7)
7359
+ .addImm(FunctionAddressOffset)),
7360
+ dl, MVT::i64),
7361
+ Addr, MachinePointerInfo(TrmpAddr, 4), MVT::i32);
7361
7362
7362
7363
// ld t2, 16(t2)
7363
7364
// Load the value of the static chain.
7364
- MCInst LD_X7_StaticChainOffset_Inst =
7365
- MCInstBuilder(RISCV::LD).addReg(RISCV::X7).addReg(RISCV::X7).addImm(StaticChainOffset);
7366
- uint32_t LD_X7_StaticChainOffset = GetEncoding(LD_X7_StaticChainOffset_Inst);
7367
7365
Addr = DAG.getNode(ISD::ADD, dl, MVT::i64, Trmp,
7368
7366
DAG.getConstant(8, dl, MVT::i64));
7369
7367
OutChains[2] = DAG.getTruncStore(
7370
- Root, dl, DAG.getConstant(LD_X7_StaticChainOffset, dl, MVT::i64), Addr,
7371
- MachinePointerInfo(TrmpAddr, 8), MVT::i32);
7368
+ Root, dl,
7369
+ DAG.getConstant(GetEncoding(MCInstBuilder(RISCV::LD)
7370
+ .addReg(RISCV::X7)
7371
+ .addReg(RISCV::X7)
7372
+ .addImm(StaticChainOffset)),
7373
+ dl, MVT::i64),
7374
+ Addr, MachinePointerInfo(TrmpAddr, 8), MVT::i32);
7372
7375
7373
7376
// jalr t0
7374
7377
// Jump to the function.
7375
- MCInst JALR_X5_Inst =
7376
- MCInstBuilder(RISCV::JALR).addReg(RISCV::X0).addReg(RISCV::X5).addImm(0);
7377
- uint32_t JALR_X5 = GetEncoding(JALR_X5_Inst);
7378
7378
Addr = DAG.getNode(ISD::ADD, dl, MVT::i64, Trmp,
7379
7379
DAG.getConstant(12, dl, MVT::i64));
7380
7380
OutChains[3] =
7381
- DAG.getTruncStore(Root, dl, DAG.getConstant(JALR_X5, dl, MVT::i64), Addr,
7382
- MachinePointerInfo(TrmpAddr, 12), MVT::i32);
7381
+ DAG.getTruncStore(Root, dl,
7382
+ DAG.getConstant(GetEncoding(MCInstBuilder(RISCV::JALR)
7383
+ .addReg(RISCV::X0)
7384
+ .addReg(RISCV::X5)
7385
+ .addImm(0)),
7386
+ dl, MVT::i64),
7387
+ Addr, MachinePointerInfo(TrmpAddr, 12), MVT::i32);
7383
7388
7384
7389
// Now store the variable part of the trampoline.
7385
7390
SDValue FunctionAddress = Op.getOperand(2);
0 commit comments