Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
9f32f89
[Xtensa] Add definition of S3 output registers.
maciej-czekaj Sep 11, 2023
5450533
[Xtensa] Add Boolean Extension feature
maciej-czekaj Mar 27, 2023
8f6b9f8
[Xtensa] Refactor loadImmediate
maciej-czekaj Mar 27, 2023
014a410
[Xtensa] Implement BRegFixupPass
maciej-czekaj Mar 27, 2023
f3a6f4d
[Xtensa] Add LLVM tests for Boolean Extension
maciej-czekaj Mar 27, 2023
b1b3106
[Xtensa] Separate directory for Clang CodeGen tests
maciej-czekaj Mar 27, 2023
a9d7c74
[Xtensa] Add ABI test for xtbool
maciej-czekaj Mar 27, 2023
ff2eaf9
[Xtensa] Implement conditional move instrinsics
maciej-czekaj Mar 27, 2023
e0da627
[Xtensa] Add basic float intrinsics
maciej-czekaj Mar 27, 2023
521343d
[Xtensa] Implement remaining floating point intrinsics
maciej-czekaj Mar 27, 2023
85f7da5
[Xtensa] Add Cannonlake CPU
maciej-czekaj Mar 27, 2023
dcaa04d
[Xtensa] Make assembler output compatible with GAS
maciej-czekaj Mar 27, 2023
cb095d0
[Xtensa] Add HIFI3 intrinsic functions
maciej-czekaj Jun 29, 2023
491cc86
[Xtensa] Add HIFI3 register classes
maciej-czekaj Jun 29, 2023
17bcd89
[Xtensa] Add HIFI3 target feature
maciej-czekaj Jun 29, 2023
cd77791
[Xtensa] Add HIFI3 instructions
maciej-czekaj Nov 13, 2023
998d1e5
[Xtensa] Add support for boolean vectors
maciej-czekaj Jun 29, 2023
70f33b6
[Xtensa] Add HIFI3 instruction lowering
maciej-czekaj Jun 30, 2023
ee06de9
[Xtensa] Fix alignment in LowerVACOPY()
maciej-czekaj Jun 30, 2023
0da25d8
[Xtensa] Add HIFI3 instruction selection patterns
maciej-czekaj Jun 29, 2023
8374bed
[Xtensa] Add codegen tests for vector operators
maciej-czekaj Jun 29, 2023
b0ccc60
[Xtensa] Add codegen support for HIFI3 intrinsics
maciej-czekaj Jun 29, 2023
35d773f
[Xtensa] Support bit vectors in BRegFixupPass
maciej-czekaj Jun 29, 2023
eb653c2
[Xtensa] Add codegen tests for bit vectors
maciej-czekaj Jun 29, 2023
527f678
[Xtensa] Remove unsspported intrinsic xt_conjc_s
maciej-czekaj Jun 29, 2023
ead3bdb
[Xtensa] Add HIFI3 intrinsic definitions to clang
maciej-czekaj Jun 29, 2023
8febe91
[Xtensa] Add constant checks for HIFI3 intrinsics
maciej-czekaj Jun 29, 2023
96577cc
[Xtensa] Support HIFI3 vectors in LLVM calls
maciej-czekaj Jun 29, 2023
047b189
[Xtensa] Add HIFI3 intrinsics to Clang codegen
maciej-czekaj Jun 29, 2023
41b186d
[Xtensa] Fix xt_lsxp builtin definition
maciej-czekaj Jun 29, 2023
12ef2c8
[Xtensa] Support bool vectors in LLVM calls
maciej-czekaj Jun 29, 2023
1e0c154
[Xtensa] Add --text-section-literals option
maciej-czekaj Jun 29, 2023
3b50ef9
[Xtensa] Add vector conversion builtins
maciej-czekaj Aug 4, 2023
aab53d5
[Xtensa] Add HIFI3 C types and intrinsics
maciej-czekaj Jun 29, 2023
63a0d01
[Xtensa] Add support for decoding from HIFI namespace
maciej-czekaj Oct 16, 2023
b2511b3
tmp: Fix [Xtensa] Add Boolean Extension feature
gerekon Jan 9, 2024
a4be468
tmp: Fix [Xtensa] Add HIFI3 intrinsic functions
gerekon Jan 9, 2024
f09a807
tmp: Fix [Xtensa] Add vector conversion builtins
gerekon Jan 9, 2024
b448dd6
tmp: Fix [Xtensa] Add HIFI3 intrinsics to Clang codegen
gerekon Jan 9, 2024
424838f
tmp: Fix [Xtensa] Implement Xtensa ABI lowering.
gerekon Jan 9, 2024
05a738c
DROPME: esp/ci: Adds GH PR workflow to run tests
gerekon Dec 28, 2023
6ae38f3
DROPME: [Toolchain][Xtensa][Tests] Fix calling clang++ in tests
gerekon Dec 29, 2023
e3f239d
tmp: Fix [Xtensa] Add basic float intrinsics
gerekon Jan 9, 2024
3dc2319
[Xtensa] Fix LLVM argument size for bool vectors.
maciej-czekaj Jan 15, 2024
e89f8ed
[Xtensa] Fix reg scavenging in XtensaRegisterInfo
maciej-czekaj Jan 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/esp-clang-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Clang Tests

permissions:
contents: read

on:
workflow_dispatch:
push:
ignore-forks: true
branches:
- '**_release_**'
paths:
- 'clang/**'
- '.github/workflows/esp-clang-tests.yml'
- '.github/workflows/llvm-project-tests.yml'
- '!llvm/**'
pull_request:
ignore-forks: true
branches:
- '**_release_**'
paths:
- 'clang/**'
- '.github/workflows/esp-clang-tests.yml'
- '.github/workflows/llvm-project-tests.yml'
- '!llvm/**'

concurrency:
# Skip intermediate builds: always.
# Cancel intermediate builds: only if it is a pull request build.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}

jobs:
check_clang:
if: github.repository_owner == 'espressif'
name: Test clang
uses: ./.github/workflows/llvm-project-tests.yml
with:
build_target: check-clang
projects: clang
46 changes: 46 additions & 0 deletions .github/workflows/esp-llvm-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: LLVM Tests

permissions:
contents: read

on:
workflow_dispatch:
push:
ignore-forks: true
branches:
- '**_release_**'
paths:
- 'llvm/**'
- '.github/workflows/esp-llvm-tests.yml'
- '.github/workflows/llvm-project-tests.yml'
pull_request:
ignore-forks: true
branches:
- '**_release_**'
paths:
- 'llvm/**'
- '.github/workflows/esp-llvm-tests.yml'
- '.github/workflows/llvm-project-tests.yml'

concurrency:
# Skip intermediate builds: always.
# Cancel intermediate builds: only if it is a pull request build.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}

jobs:
check_all:
if: github.repository_owner == 'espressif'
name: Test llvm,clang
uses: ./.github/workflows/llvm-project-tests.yml
with:
build_target: check-all
projects: clang

check_lld:
if: github.repository_owner == 'espressif'
name: Test lld
uses: ./.github/workflows/llvm-project-tests.yml
with:
build_target: check-lld
projects: lld
160 changes: 159 additions & 1 deletion clang/include/clang/Basic/BuiltinsXtensa.def
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,165 @@ BUILTIN(__builtin_xtensa_wsr_m3, "vUi", "n")
BUILTIN(__builtin_xtensa_rsr_m3, "Ui", "n")
BUILTIN(__builtin_xtensa_xsr_m3, "vUi*", "n")

// Float intrinsics

// float __builtin_xtensa_xt_movt_s(float frr, float frs, xtbool bt)
BUILTIN(__builtin_xtensa_xt_movt_s, "fffE1b", "n")

// float __builtin_xtensa_xt_movf_s(float frr, float frs, xtbool bt)
BUILTIN(__builtin_xtensa_xt_movf_s, "fffE1b", "n")

// xtbool __builtin_xtensa_xt_oeq_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_oeq_s, "E1bff", "n")

// xtbool __builtin_xtensa_xt_ole_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_ole_s, "E1bff", "n")

// xtbool __builtin_xtensa_xt_olt_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_olt_s, "E1bff", "n")

// xtbool __builtin_xtensa_xt_ueq_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_ueq_s, "E1bff", "n")

// xtbool __builtin_xtensa_xt_ule_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_ule_s, "E1bff", "n")

// xtbool __builtin_xtensa_xt_ult_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_ult_s, "E1bff", "n")

// xtbool __builtin_xtensa_xt_un_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_un_s, "E1bff", "n")

// xtfloat __builtin_xtensa_xt_sub_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_sub_s, "fff", "n")

// xtfloat __builtin_xtensa_xt_add_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_add_s, "fff", "n")

// xtfloat __builtin_xtensa_xt_abs_s(xtfloat frs)
BUILTIN(__builtin_xtensa_xt_abs_s, "ff", "n")

// xtfloat __builtin_xtensa_xt_mul_s(xtfloat frs,xtfloat frt)
BUILTIN(__builtin_xtensa_xt_mul_s, "fff", "n")

// int __builtin_xtensa_xt_trunc_s(xtfloat frs,immediate imm_t)
BUILTIN(__builtin_xtensa_xt_trunc_s, "ifi", "n")

// int __builtin_xtensa_xt_utrunc_s(xtfloat frs,immediate imm_t)
BUILTIN(__builtin_xtensa_xt_utrunc_s, "ifi", "n")

// xtfloat __builtin_xtensa_xt_float_s(int ars,immediate imm_t)
BUILTIN(__builtin_xtensa_xt_float_s, "fii", "n")

// xtfloat __builtin_xtensa_xt_ufloat_s(int ars,immediate imm_t)
BUILTIN(__builtin_xtensa_xt_ufloat_s, "fii", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_addexp_s(xtfloat,xtfloat)
BUILTIN(__builtin_xtensa_xt_addexp_s, "fff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_addexpm_s(xtfloat,xtfloat)
BUILTIN(__builtin_xtensa_xt_addexpm_s, "fff", "n")

// int __builtin_xtensa___builtin_xtensa_xt_ceil_s(xtfloat,immediate)
BUILTIN(__builtin_xtensa_xt_ceil_s, "ifi", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_div0_s(xtfloat)
BUILTIN(__builtin_xtensa_xt_div0_s, "ff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_divn_s(xtfloat,xtfloat,xtfloat)
BUILTIN(__builtin_xtensa_xt_divn_s, "ffff", "n")

// int __builtin_xtensa___builtin_xtensa_xt_floor_s(xtfloat,immediate)
BUILTIN(__builtin_xtensa_xt_floor_s, "ifi", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_lsi(const xtfloat*,immediate)
BUILTIN(__builtin_xtensa_xt_lsi, "ff*i", "n")

BUILTIN(__builtin_xtensa_xt_lsip, "ff**i", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_lsx(const xtfloat*,int)
BUILTIN(__builtin_xtensa_xt_lsx, "ff*i", "n")

BUILTIN(__builtin_xtensa_xt_lsxp, "ff**i", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_madd_s(xtfloat,xtfloat,xtfloat)
BUILTIN(__builtin_xtensa_xt_madd_s, "ffff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_maddn_s(xtfloat,xtfloat,xtfloat)
BUILTIN(__builtin_xtensa_xt_maddn_s, "ffff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_mkdadj_s(xtfloat,xtfloat)
BUILTIN(__builtin_xtensa_xt_mkdadj_s, "fff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_mksadj_s(xtfloat)
BUILTIN(__builtin_xtensa_xt_mksadj_s, "ff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_mov_s(xtfloat)
BUILTIN(__builtin_xtensa_xt_mov_s, "ff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_moveqz_s(xtfloat,xtfloat,int)
BUILTIN(__builtin_xtensa_xt_moveqz_s, "fffi", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_movgez_s(xtfloat,xtfloat,int)
BUILTIN(__builtin_xtensa_xt_movgez_s, "fffi", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_movltz_s(xtfloat,xtfloat,int)
BUILTIN(__builtin_xtensa_xt_movltz_s, "fffi", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_movnez_s(xtfloat,xtfloat,int)
BUILTIN(__builtin_xtensa_xt_movnez_s, "fffi", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_msub_s(xtfloat,xtfloat,xtfloat)
BUILTIN(__builtin_xtensa_xt_msub_s, "ffff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_neg_s(xtfloat)
BUILTIN(__builtin_xtensa_xt_neg_s, "ff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_nexp01_s(xtfloat)
BUILTIN(__builtin_xtensa_xt_nexp01_s, "ff", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_recip0_s(xtfloat)
BUILTIN(__builtin_xtensa_xt_recip0_s, "ff", "n")

// int __builtin_xtensa___builtin_xtensa_xt_rfr(xtfloat)
BUILTIN(__builtin_xtensa_xt_rfr, "if", "n")

// int __builtin_xtensa___builtin_xtensa_xt_round_s(xtfloat,immediate)
BUILTIN(__builtin_xtensa_xt_round_s, "ifi", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_rsqrt0_s(xtfloat)
BUILTIN(__builtin_xtensa_xt_rsqrt0_s, "ff", "n")

// int __builtin_xtensa___builtin_xtensa_xt_rur_fcr()
BUILTIN(__builtin_xtensa_xt_rur_fcr, "i", "n")

// int __builtin_xtensa___builtin_xtensa_xt_rur_fsr()
BUILTIN(__builtin_xtensa_xt_rur_fsr, "i", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_sqrt0_s(xtfloat)
BUILTIN(__builtin_xtensa_xt_sqrt0_s, "ff", "n")

// void __builtin_xtensa___builtin_xtensa_xt_ssi(xtfloat,xtfloat*,immediate)
BUILTIN(__builtin_xtensa_xt_ssi, "vff*i", "n")

// xtfloat* __builtin_xtensa___builtin_xtensa_xt_ssip(xtfloat,xtfloat*,immediate)
BUILTIN(__builtin_xtensa_xt_ssip, "f*ff*i", "n")

// void __builtin_xtensa___builtin_xtensa_xt_ssx(xtfloat,xtfloat*,int)
BUILTIN(__builtin_xtensa_xt_ssx, "vff*i", "n")

// xtfloat* __builtin_xtensa___builtin_xtensa_xt_ssxp(xtfloat,xtfloat*,int)
BUILTIN(__builtin_xtensa_xt_ssxp, "f*ff*i", "n")

// xtfloat __builtin_xtensa___builtin_xtensa_xt_wfr(int)
BUILTIN(__builtin_xtensa_xt_wfr, "fi", "n")

// void __builtin_xtensa___builtin_xtensa_xt_wur_fcr(int)
BUILTIN(__builtin_xtensa_xt_wur_fcr, "vi", "n")

// void __builtin_xtensa___builtin_xtensa_xt_wur_fsr(int)
BUILTIN(__builtin_xtensa_xt_wur_fsr, "vi", "n")

// generated code
#include "clang/Basic/BuiltinsXtensaESP32S3.def"

#undef BUILTIN
Loading