Skip to content

Commit 05df435

Browse files
committed
Merge remote-tracking branch 'origin/master' into alex/opaque-ptr
2 parents e3b43d1 + 43cfa8c commit 05df435

File tree

6 files changed

+32
-25
lines changed

6 files changed

+32
-25
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
matrix:
2424
image:
2525
- { name: 'ubuntu', tag: '20.04' }
26-
llvm: ['12', '13']
26+
llvm: ['13', '14']
2727

2828
runs-on: ubuntu-20.04
2929
container:
@@ -36,10 +36,10 @@ jobs:
3636
- uses: actions/checkout@v2
3737
with:
3838
fetch-depth: 0
39-
4039
- name: Build with build script
4140
shell: bash
4241
run: |
42+
git config --global --add safe.directory "$GITHUB_WORKSPACE"
4343
sudo apt-get update && sudo apt-get install g++-8
4444
./scripts/build.sh --llvm-version ${{ matrix.llvm }}
4545
- name: Build with build-presets script
@@ -94,7 +94,7 @@ jobs:
9494
fail-fast: false
9595
matrix:
9696
os: ['macos-11']
97-
llvm: ['12', '13']
97+
llvm: ['13', '14']
9898

9999
runs-on: ${{ matrix.os }}
100100

@@ -104,7 +104,9 @@ jobs:
104104
fetch-depth: 0
105105
- name: Build with build script
106106
shell: bash
107-
run: ./scripts/build.sh --llvm-version ${{ matrix.llvm }}
107+
run: |
108+
git config --global --add safe.directory "$GITHUB_WORKSPACE"
109+
./scripts/build.sh --llvm-version ${{ matrix.llvm }}
108110
- name: Build with build-presets script
109111
shell: bash
110112
run: |
@@ -215,7 +217,7 @@ jobs:
215217
runs-on: ubuntu-latest
216218
strategy:
217219
matrix:
218-
llvm: ["12", "13"]
220+
llvm: ["13", "14"]
219221
ubuntu: ["20.04"]
220222
steps:
221223
- uses: actions/checkout@v2

lib/Arch/X86/Semantics/CONVERT.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ IF_AVX(IF_64BIT(
307307
namespace {
308308

309309
template <typename S1>
310-
DEF_SEM(CVTSD2SS, V128W dst, S1 src) {
310+
DEF_SEM(CVTSD2SS, V128W dst, V128 _nop_read, S1 src) {
311311
FWriteV32(dst, FInsertV32(FReadV32(dst), 0,
312312
Float32(FExtractV64(FReadV64(src), 0))));
313313
return memory;
@@ -349,7 +349,7 @@ DEF_SEM(CVTSI2SD, V128W dst, V128 src1, S2 src2) {
349349
}
350350

351351
template <typename S2>
352-
DEF_SEM(CVTSS2SD, VV128W dst_src1, S2 src2) {
352+
DEF_SEM(CVTSS2SD, VV128W dst_src1, V128 _nop_read, S2 src2) {
353353
auto src1_vec = FReadV64(dst_src1);
354354
auto src2_vec = FReadV32(src2);
355355
auto conv_val = Float64(FExtractV32(src2_vec, 0));

lib/Arch/X86/Semantics/DATAXFER.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,16 @@ DEF_SEM(MOVDQx, D dst, S src) {
8484
return memory;
8585
}
8686

87-
template <typename D, typename S>
88-
DEF_SEM(MOVLPS, D dst, S src) {
87+
template <typename D, typename S, typename... Fs>
88+
DEF_SEM(MOVLPS, D dst, Fs... _nop_fillers, S src) {
8989
auto src_vec = FReadV32(src);
9090
auto low1 = FExtractV32(src_vec, 0);
9191
auto low2 = FExtractV32(src_vec, 1);
9292
FWriteV32(dst, FInsertV32(FInsertV32(FReadV32(dst), 0, low1), 1, low2));
9393
return memory;
9494
}
9595

96-
DEF_SEM(MOVLHPS, V128W dst, V128 src) {
96+
DEF_SEM(MOVLHPS, V128W dst, V128 _noop_read, V128 src) {
9797
auto res = FReadV32(dst);
9898
auto src1 = FReadV32(src);
9999
res = FInsertV32(res, 2, FExtractV32(src1, 0));
@@ -102,7 +102,7 @@ DEF_SEM(MOVLHPS, V128W dst, V128 src) {
102102
return memory;
103103
}
104104

105-
DEF_SEM(MOVHLPS, V128W dst, V128 src) {
105+
DEF_SEM(MOVHLPS, V128W dst, V128 _nop_read, V128 src) {
106106
auto res = FReadV32(dst);
107107
auto src1 = FReadV32(src);
108108
res = FInsertV32(res, 0, FExtractV32(src1, 2));
@@ -111,8 +111,8 @@ DEF_SEM(MOVHLPS, V128W dst, V128 src) {
111111
return memory;
112112
}
113113

114-
template <typename D, typename S>
115-
DEF_SEM(MOVLPD, D dst, S src) {
114+
template <typename D, typename S, typename... Fs>
115+
DEF_SEM(MOVLPD, D dst, Fs... fargs, S src) {
116116
FWriteV64(dst, FInsertV64(FReadV64(dst), 0, FExtractV64(FReadV64(src), 0)));
117117
return memory;
118118
}
@@ -466,8 +466,8 @@ DEF_ISEL(VMOVDQA_MEMqq_YMMqq) = MOVDQx<MV256W, VV256>;
466466
DEF_ISEL(VMOVDQA_YMMqq_YMMqq_7F) = MOVDQx<VV256W, VV256>;
467467
#endif // HAS_FEATURE_AVX
468468

469-
DEF_ISEL(MOVLPS_MEMq_XMMps) = MOVLPS<MV64W, V128>;
470-
DEF_ISEL(MOVLPS_XMMq_MEMq) = MOVLPS<V128W, MV64>;
469+
DEF_ISEL(MOVLPS_MEMq_XMMq) = MOVLPS<MV64W, V128>;
470+
DEF_ISEL(MOVLPS_XMMq_MEMq) = MOVLPS<V128W, MV64, V128>;
471471
IF_AVX(DEF_ISEL(VMOVLPS_MEMq_XMMq) = MOVLPS<MV64W, VV128>;)
472472
IF_AVX(DEF_ISEL(VMOVLPS_XMMdq_XMMdq_MEMq) = VMOVLPS;)
473473

@@ -487,7 +487,7 @@ IF_AVX(DEF_ISEL(VMOVLHPS_XMMdq_XMMdq_XMMdq) = VMOVLHPS;)
487487
# endif // HAS_FEATURE_AVX512
488488
#endif // HAS_FEATURE_AVX
489489

490-
DEF_ISEL(MOVLPD_XMMsd_MEMq) = MOVLPD<V128W, MV64>;
490+
DEF_ISEL(MOVLPD_XMMsd_MEMq) = MOVLPD<V128W, MV64, V128>;
491491
DEF_ISEL(MOVLPD_MEMq_XMMsd) = MOVLPD<MV64W, V128>;
492492
IF_AVX(DEF_ISEL(VMOVLPD_MEMq_XMMq) = MOVLPD<MV64W, VV128>;)
493493
IF_AVX(DEF_ISEL(VMOVLPD_XMMdq_XMMdq_MEMq) = VMOVLPD;)
@@ -585,7 +585,8 @@ DEF_ISEL(MOVNTSS_MEMd_XMMd) = MOVSS_MEM<MV32W, V128>;
585585

586586
namespace {
587587

588-
DEF_SEM(MOVHPD, V128W dst, MV64 src) {
588+
// NOTE(Ian): Latest xed adds a read operand referring to the read of lower bits.
589+
DEF_SEM(MOVHPD, V128W dst, V128 _nop_read, MV64 src) {
589590
FWriteV64(dst, FInsertV64(FReadV64(dst), 1, FExtractV64(FReadV64(src), 0)));
590591
return memory;
591592
}
@@ -616,7 +617,8 @@ IF_AVX(DEF_ISEL(VMOVHPD_MEMq_XMMdq) = MOVHPD_STORE;)
616617

617618
namespace {
618619

619-
DEF_SEM(MOVHPS, V128W dst, MV64 src) {
620+
// NOTE(Ian): Xed adds a read op for the bits read but not written to.
621+
DEF_SEM(MOVHPS, V128W dst, V128 _nop_read, MV64 src) {
620622
auto dst_vec = FReadV32(dst);
621623
auto src_vec = FReadV32(src);
622624
auto low_entry = FExtractV32(src_vec, 0);

lib/Arch/X86/Semantics/SSE.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1616,7 +1616,7 @@ DEF_SEM(MOVDDUP, D dst, S1 src) {
16161616
DEF_ISEL(MOVDDUP_XMMdq_MEMq) = MOVDDUP<V128W, MV64>;
16171617
DEF_ISEL(MOVDDUP_XMMdq_XMMq) = MOVDDUP<V128W, V128>;
16181618
IF_AVX(DEF_ISEL(VMOVDDUP_XMMdq_MEMq) = MOVDDUP<VV128W, MV64>;)
1619-
IF_AVX(DEF_ISEL(VMOVDDUP_XMMdq_XMMdq) = MOVDDUP<VV128W, V128>;)
1619+
IF_AVX(DEF_ISEL(VMOVDDUP_XMMdq_XMMq) = MOVDDUP<VV128W, V128>;)
16201620
/*
16211621
2320 VMOVDDUP VMOVDDUP_YMMqq_MEMqq DATAXFER AVX AVX ATTRIBUTES:
16221622
2321 VMOVDDUP VMOVDDUP_YMMqq_YMMqq DATAXFER AVX AVX ATTRIBUTES:

scripts/build.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ DOWNLOAD_DIR="$( cd "$( dirname "${SRC_DIR}" )" && pwd )/lifting-bits-downloads"
2323
CURR_DIR=$( pwd )
2424
BUILD_DIR="${CURR_DIR}/remill-build"
2525
INSTALL_DIR=/usr/local
26-
LLVM_VERSION=llvm-13
26+
LLVM_VERSION=llvm-14
2727
OS_VERSION=
2828
ARCH_VERSION=
2929
BUILD_FLAGS=
30-
CXX_COMMON_VERSION="v0.1.8"
30+
CXX_COMMON_VERSION="v0.2.7"
3131

3232
# There are pre-build versions of various libraries for specific
3333
# Ubuntu releases.
@@ -272,14 +272,14 @@ function Package
272272
function GetLLVMVersion
273273
{
274274
case ${1} in
275-
12)
276-
LLVM_VERSION=llvm-12
277-
return 0
278-
;;
279275
13)
280276
LLVM_VERSION=llvm-13
281277
return 0
282278
;;
279+
14)
280+
LLVM_VERSION=llvm-14
281+
return 0
282+
;;
283283
*)
284284
# unknown option
285285
echo "[x] Unknown or unsupported LLVM version ${1}. You may be able to manually build it with cxx-common."

scripts/docker-lifter-entrypoint.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ case ${LLVM_VERSION} in
4949
llvm13*)
5050
V=13
5151
;;
52+
llvm14*)
53+
V=14
54+
;;
5255
*)
5356
echo "Unknown LLVM version: ${LLVM_VERSION}"
5457
exit 1

0 commit comments

Comments
 (0)