diff --git a/llvm/lib/ExecutionEngine/JITLink/ELF_riscv.cpp b/llvm/lib/ExecutionEngine/JITLink/ELF_riscv.cpp --- a/llvm/lib/ExecutionEngine/JITLink/ELF_riscv.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/ELF_riscv.cpp @@ -227,11 +227,10 @@ if (AlignmentIssue) { return AlignmentIssue; } - uint32_t Hi = Value >> 12; - uint32_t Imm20 = extractBits(Hi, 20, 1) << 31; - uint32_t Imm10_1 = extractBits(Hi, 1, 10) << 21; - uint32_t Imm11 = extractBits(Hi, 11, 1) << 20; - uint32_t Imm19_12 = extractBits(Hi, 12, 8) << 12; + uint32_t Imm20 = extractBits(Value, 20, 1) << 31; + uint32_t Imm10_1 = extractBits(Value, 1, 10) << 21; + uint32_t Imm11 = extractBits(Value, 11, 1) << 20; + uint32_t Imm19_12 = extractBits(Value, 12, 8) << 12; uint32_t RawInstr = *(little32_t *)FixupPtr; *(little32_t *)FixupPtr = RawInstr | Imm20 | Imm10_1 | Imm11 | Imm19_12; break; diff --git a/llvm/test/ExecutionEngine/JITLink/RISCV/ELF_jal.s b/llvm/test/ExecutionEngine/JITLink/RISCV/ELF_jal.s --- a/llvm/test/ExecutionEngine/JITLink/RISCV/ELF_jal.s +++ b/llvm/test/ExecutionEngine/JITLink/RISCV/ELF_jal.s @@ -27,7 +27,7 @@ # Test R_RISCV_JAL -# jitlink-check: decode_operand(test_jal, 1)[19:0] = (external_func - test_jal)[31:12] +# jitlink-check: decode_operand(test_jal, 1)[31:12] = (external_func - test_jal)[31:12] .globl test_jal .p2align 1 .type test_jal,@function