Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • M mu-impl-fast
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 40
    • Issues 40
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar

GitLab will be upgraded on 30 Jan 2023 from 2.00 pm (AEDT) to 3.00 pm (AEDT). During the update, GitLab and Mattermost services will not be available. If you have any concerns with this, please talk to us at N110 (b) CSIT building.

  • mu
  • mu-impl-fast
  • Issues
  • #60

Closed
Open
Created Jul 10, 2017 by Isaac Gariano@igariano01Maintainer22 of 53 tasks completed22/53 tasks

[aarch64] Unimplemented Backend Features

I noticed there are lots of things that zebu doesn't implement, so I decided to make a list, and will try and keep it up to do (I would like to implement stuff here specifically the mu specific things like traps, watch points, threads and stack related things, as I feel currently Zebu is mostly just LLVM with exceptions and a garbage collector that doesn't collect..)

I'm not entirely sure what the x86-64 backend implements, so i've only listed things for aarch64: (note features with a * next to them haven't been tested properly yet), I have also included things I believe are not implemented on x86-64 but are on aarch64:

Types:

  • int<n>:
  • n = 1 (some arithmetic)
  • * n <= 64 and n != 8, 16, 32, or 64
  • * n = 128, floating point conversions
  • n > 64 and n != 128
  • struct SSA variables
  • hybrid SSA variables
  • array SSA variables
  • tagref64
  • threadref
  • `stackref``
  • framecursorref
  • irbuilderref
  • vector<t n>

Instruction Clauses:

  • keep Alive Clauses
  • Exception clauses
  • CALL
  • binop (divison by zero)
  • NEW/NEYHYBRID (allocation failure)
  • LOAD/STORE/CMPXCHG (null referenced)
  • CCALL (implementation defined)

Instructions:

  • TAILCALL:
    • When the callee's stack argument size is less than or equal to the caller's
    • When the callee's stack argument size is greater than the caller's
  • For unimplemented types:
    • EXTRACTVALUE/INSERTVALUE
    • EXTRACTELEMENT/INSERTELEMENT
    • SHUFFLEVECTOR
  • Memory
  • ALLOCA/ALLOCAHYBRID
  • * CMPXCHG
  • * FENCE
  • ATOMICRMW
  • Traps/watchpoints
  • TRAP
  • WATCHPOINT
  • WPBRANCH
  • Thread/stack instructions
  • NEWTHREAD
  • SWAPTSTACK

Common Instructions

  • thread and stack things:
  • new_stack
  • kill_stack
  • thread_exit
  • current_stack
  • set_threadlocal
  • get_threadlocal
  • tr64.*
  • futex.*
  • kill_dependency
  • native.* (except nativ.pin and nativ.unpnin)
  • meta.*
  • irbuilder.*
Edited Aug 19, 2017 by Isaac Gariano
Assignee
Assign to
Time tracking