Files
clang-p2996/llvm/test/CodeGen/SystemZ/int-add-09.ll
Kai Nacke a1710eb3cd [SystemZ][NFC] Opaque pointer migration.
The LIT test cases were migrated with the script provided by
Nikita Popov.

No manual changes were made. Committed without review since
no functional changes, after consultation with uweigand.
2022-10-11 21:09:43 +00:00

57 lines
1.3 KiB
LLVM

; Test 128-bit addition in which the second operand is constant.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s
; Check additions of 1. The XOR ensures that we don't instead load the
; constant into a register and use memory addition.
define void @f1(ptr %aptr) {
; CHECK-LABEL: f1:
; CHECK: algfi {{%r[0-5]}}, 1
; CHECK: alcg
; CHECK: br %r14
%a = load i128, ptr %aptr
%xor = xor i128 %a, 128
%add = add i128 %xor, 1
store i128 %add, ptr %aptr
ret void
}
; Check the high end of the ALGFI range.
define void @f2(ptr %aptr) {
; CHECK-LABEL: f2:
; CHECK: algfi {{%r[0-5]}}, 4294967295
; CHECK: alcg
; CHECK: br %r14
%a = load i128, ptr %aptr
%xor = xor i128 %a, 128
%add = add i128 %xor, 4294967295
store i128 %add, ptr %aptr
ret void
}
; Check the next value up, which must use register addition.
define void @f3(ptr %aptr) {
; CHECK-LABEL: f3:
; CHECK: algr
; CHECK: alcg
; CHECK: br %r14
%a = load i128, ptr %aptr
%xor = xor i128 %a, 128
%add = add i128 %xor, 4294967296
store i128 %add, ptr %aptr
ret void
}
; Check addition of -1, which must also use register addition.
define void @f4(ptr %aptr) {
; CHECK-LABEL: f4:
; CHECK: algr
; CHECK: alcg
; CHECK: br %r14
%a = load i128, ptr %aptr
%xor = xor i128 %a, 128
%add = add i128 %xor, -1
store i128 %add, ptr %aptr
ret void
}