IBM XL C/C++ Compilers

Last updated
XL C/C++ Compilers and Open XL C/C++ Compilers
Developer(s) IBM
Stable release
17.1.1 (AIX on Power, Linux on Power), 1.1 (z/OS) / September 2022;1 year ago (2022-09) (Linux on Power), November 2022;1 year ago (2022-11) (AIX on Power), May 2022;1 year ago (2022-05) (z/OS)
Operating system Cross-platform: Linux (POWER and z architectures), AIX, Blue Gene/Q, z/OS, and z/VM
Available inMultilingual
Type Software development
License Proprietary
Website www.ibm.com/products/c-and-c-plus-plus-compiler-family

XL C/C++ is the name of IBM's proprietary optimizing C/C++ compilers for IBM-supported environments.

Contents

Compiler

The IBM XL compilers are built from modularized components consisting of front ends (for different programming languages), a platform-agnostic high-level optimizer, and platform-specific low-level optimizers/code generators to target specific hardware and operating systems. The XL C/C++ compilers target POWER, BlueGene/Q, and IBM Z hardware architectures.

Optimization

A common high level optimizer across the POWER and z/OS XL C/C++ [1] compilers optimizes the source program using platform-agnostic optimizations such as interprocedural analysis, profile-directed feedback, and loop and vector optimizations.

A low-level optimizer on each platform performs function-level optimizations and generates optimized code for a specific operating system and hardware platforms.

The particular optimizations performed for any given compilation depend upon the optimization level chosen under option control (O2 to O5) along with any other optimization-related options, such as those for interprocedural analysis or loop optimizations.

The XL compilers on AIX have delivered, for example, SPEC CPU2006 Floating Point score of 71.5 in May 2010 [2] and score of 4051 in August 2006. [3]

IBM i

The XL compiler on IBM i series for C/C++, is called ixlc. It is a qsh CLI based on the same assets than the CRTCPPMOD / CRTPGM system commands. Is is compatible with C++98, and partially with C++11. It was discontinued in 2011.

IBM AIX and Linux on Power

Current versions of XL C/C++ for AIX on Power (17.1.1) and XL C/C++ for Linux on Power (17.1.1), [4] are based on open-source Clang front end (part of the Clang/LLVM open source project). In particular, XL C/C++ for AIX 17.1.0 is based on LLVM Clang 13. [5] Both compilers provide support for C11, C++03, C++11, and C++14. Note that while XL C/C++ for Linux on Power supports at least C++17 [4] , some library features later than C++14 may be unavailable under XL C/C++ for AIX on Power. [6]

Licensing

A 60-day installable evaluation version is available for download for XL C/C++ for AIX. [7] In June 2016, IBM introduced XL C/C++ for Linux Community Edition, which is a no-charge and fully functional edition for unlimited production use. [8]

A new monthly pricing option is offered in XL C/C++ for AIX 16.1 and XL Fortran for AIX 16.1 to provide more flexibility for cloud-based use cases. This pricing model is on a term or subscription basis, with Software Subscription and Support included.

IBM Open XL compilers offer monthly licenses (per Virtual Processor Core); meanwhile, user-based licenses (i.e. Authorized user and Concurrent user licenses) are still available.

IBM Z

The z/OS XL C/C++ compiler exploits the IBM Z® systems. It enables the development of high-performing business applications and system programs on z/OS while maximizing hardware use and improving application performance. IBM z/OS XL C/C++ uses services provided by the z/OS Language Environment® and Runtime Library Extensions base elements. It supports embedded CICS® and SQL statements in the C/C++ source, which simplifies the operation of C/C++ within CICS and Db2® environments. It works in concert with the IBM Application Delivery Foundation for z/OS.

IBM® Open XL C/C++ 1.1 for z/OS® is the newest C/C++ compiler on z/OS that is fully based on the open source LLVM infrastructure. Open XL C/C++ 1.1 supports up to C17/C18 and C++17 language standard features and leverages the features of the IBM z16™ mainframe, ideal for z/OS UNIX System Services users porting applications from distributed platforms. Open XL C/C++ 1.1 is available as a no-charge add-on feature for users who have enabled the z/OS XL C/C++ (an optionally priced feature) on z/OS 2.4 or z/OS 2.5.

Products

XL C/C++ and Open XL C/C++ compiler families consist of the following products, with most recent version and release dates where known:

See also

Related Research Articles

<span class="mw-page-title-main">IBM AIX</span> Series of Unix operating systems from IBM

AIX is a series of proprietary Unix operating systems developed and sold by IBM for several of its computer platforms.

z/OS 64-bit operating system for IBM mainframes

z/OS is a 64-bit operating system for IBM z/Architecture mainframes, introduced by IBM in October 2000. It derives from and is the successor to OS/390, which in turn was preceded by a string of MVS versions. Like OS/390, z/OS combines a number of formerly separate, related products, some of which are still optional. z/OS has the attributes of modern operating systems but also retains much of the older functionality originated in the 1960s and still in regular use—z/OS is designed for backward compatibility.

<span class="mw-page-title-main">Single instruction, multiple data</span> Type of parallel processing

Single instruction, multiple data (SIMD) is a type of parallel processing in Flynn's taxonomy. SIMD can be internal and it can be directly accessible through an instruction set architecture (ISA), but it should not be confused with an ISA. SIMD describes computers with multiple processing elements that perform the same operation on multiple data points simultaneously.

<span class="mw-page-title-main">IBM i</span> Operating system

IBM i is an operating system developed by IBM for IBM Power Systems. It was originally released in 1988 as OS/400, as the sole operating system of the IBM AS/400 line of systems. It was renamed to i5/OS in 2004, before being renamed a second time to IBM i in 2008. It is an evolution of the System/38 CPF operating system, with compatibility layers for System/36 SSP and AIX applications. It inherits a number of distinctive features from the System/38 platform, including the Machine Interface, the implementation of object-based addressing on top of a single-level store, and the tight integration of a relational database into the operating system.

<span class="mw-page-title-main">Xcode</span> IDE including tools for developing software for Apple platforms

Xcode is Apple's integrated development environment (IDE) for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, tvOS, and visionOS. It was initially released in late 2003; the latest stable release is version 15, released on September 18, 2023, and is available free of charge via the Mac App Store and the Apple Developer website. Registered developers can also download preview releases and prior versions of the suite through the Apple Developer website. Xcode includes command-line tools that enable UNIX-style development via the Terminal app in macOS. They can also be downloaded and installed without the GUI.

<span class="mw-page-title-main">OpenMP</span> Open standard for parallelizing

OpenMP is an application programming interface (API) that supports multi-platform shared-memory multiprocessing programming in C, C++, and Fortran, on many platforms, instruction-set architectures and operating systems, including Solaris, AIX, FreeBSD, HP-UX, Linux, macOS, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior.

<span class="mw-page-title-main">LLVM</span> Compiler backend for multiple programming languages

LLVM is a set of compiler and toolchain technologies that can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes. The name LLVM originally stood for Low Level Virtual Machine, though the project has expanded and the name is no longer officially an initialism.

VisualAge is a family of computer integrated development environments from IBM, which supports multiple programming languages. VisualAge was first released in October 1993 and was discontinued April 30, 2007 and its web page removed in September 2011. VisualAge was also marketed as VisualAge Smalltalk, and in 2005, Instantiations, Inc. acquired the worldwide rights to this product. IBM has stated that XL C/C++ is the followup product to VisualAge.

In computer software, in compiler theory, an intrinsic function, also called built-in function or builtin function, is a function (subroutine) available for use in a given programming language whose implementation is handled specially by the compiler. Typically, it may substitute a sequence of automatically generated instructions for the original function call, similar to an inline function. Unlike an inline function, the compiler has an intimate knowledge of an intrinsic function and can thus better integrate and optimize it for a given situation.

Intel oneAPI DPC++/C++ Compiler and Intel C++ Compiler Classic are Intel’s C, C++, SYCL, and Data Parallel C++ (DPC++) compilers for Intel processor-based systems, available for Windows, Linux, and macOS operating systems.

Oracle Developer Studio, formerly named Oracle Solaris Studio, Sun Studio, Sun WorkShop, Forte Developer, and SunPro Compilers, is the Oracle Corporation's flagship software development product for the Solaris and Linux operating systems. It includes optimizing C, C++, and Fortran compilers, libraries, and performance analysis and debugging tools, for Solaris on SPARC and x86 platforms, and Linux on x86/x64 platforms, including multi-core systems.

<span class="mw-page-title-main">OpenCL</span> Open standard for programming heterogenous computing systems, such as CPUs or GPUs

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators. OpenCL specifies programming languages for programming these devices and application programming interfaces (APIs) to control the platform and execute programs on the compute devices. OpenCL provides a standard interface for parallel computing using task- and data-based parallelism.

Profile-guided optimization, also known as profile-directed feedback (PDF), and feedback-directed optimization (FDO) is a compiler optimization technique in computer programming that uses profiling to improve program runtime performance.

<span class="mw-page-title-main">IBM COBOL</span>

IBM has offered the computer programming language COBOL on many platforms, starting with the IBM 1400 series and IBM 7000 series, continuing into the industry-dominant IBM System/360 and IBM System/370 mainframe systems, and then through Power Systems (AIX) and IBM Z.

XL Fortran is the name of IBM's proprietary optimizing Fortran compiler for IBM-supported environments, including Linux for little-endian distributions and AIX.

<span class="mw-page-title-main">ROCm</span> Parallel computing platform: GPGPU libraries and application programming interface

ROCm is an Advanced Micro Devices (AMD) software stack for graphics processing unit (GPU) programming. ROCm spans several domains: general-purpose computing on graphics processing units (GPGPU), high performance computing (HPC), heterogeneous computing. It offers several programming models: HIP, OpenMP/Message Passing Interface (MPI), OpenCL.

References

  1. z/OS XL C/C++
  2. CPU2006 Floating Point
  3. SPEC CPU2000 Floating Point
  4. 1 2 IBM Open XL C/C++ for Linux on Power 17.1.1
  5. Migrating to the new LLVM and Clang compiler infrastructure
  6. "IBM Open XL C/C++ for AIX" - 17.1.0 - Language support
  7. XL C/C++ for AIX evaluation version
  8. XL C/C++ for Linux Community Edition