; Test 128-bit addition in which the second operand is a zero-extended i32.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s

; Check register additions.  The XOR ensures that we don't instead zero-extend
; %b into a register and use memory addition.
define void @f1(i128 *%aptr, i32 %b) {
; CHECK: f1:
; CHECK: slgfr {{%r[0-5]}}, %r3
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %bext = zext i32 %b to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}

; Like f1, but using an "in-register" extension.
define void @f2(i128 *%aptr, i64 %b) {
; CHECK: f2:
; CHECK: slgfr {{%r[0-5]}}, %r3
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %trunc = trunc i64 %b to i32
  %bext = zext i32 %trunc to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}

; Test register addition in cases where the second operand is zero extended
; from i64 rather than i32, but is later masked to i32 range.
define void @f3(i128 *%aptr, i64 %b) {
; CHECK: f3:
; CHECK: slgfr {{%r[0-5]}}, %r3
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %bext = zext i64 %b to i128
  %and = and i128 %bext, 4294967295
  %sub = sub i128 %xor, %and
  store i128 %sub, i128 *%aptr
  ret void
}

; Test SLGF with no offset.
define void @f4(i128 *%aptr, i32 *%bsrc) {
; CHECK: f4:
; CHECK: slgf {{%r[0-5]}}, 0(%r3)
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %b = load i32 *%bsrc
  %bext = zext i32 %b to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}

; Check the high end of the SLGF range.
define void @f5(i128 *%aptr, i32 *%bsrc) {
; CHECK: f5:
; CHECK: slgf {{%r[0-5]}}, 524284(%r3)
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %ptr = getelementptr i32 *%bsrc, i64 131071
  %b = load i32 *%ptr
  %bext = zext i32 %b to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}

; Check the next word up, which must use separate address logic.
; Other sequences besides this one would be OK.
define void @f6(i128 *%aptr, i32 *%bsrc) {
; CHECK: f6:
; CHECK: agfi %r3, 524288
; CHECK: slgf {{%r[0-5]}}, 0(%r3)
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %ptr = getelementptr i32 *%bsrc, i64 131072
  %b = load i32 *%ptr
  %bext = zext i32 %b to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}

; Check the high end of the negative aligned SLGF range.
define void @f7(i128 *%aptr, i32 *%bsrc) {
; CHECK: f7:
; CHECK: slgf {{%r[0-5]}}, -4(%r3)
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %ptr = getelementptr i32 *%bsrc, i128 -1
  %b = load i32 *%ptr
  %bext = zext i32 %b to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}

; Check the low end of the SLGF range.
define void @f8(i128 *%aptr, i32 *%bsrc) {
; CHECK: f8:
; CHECK: slgf {{%r[0-5]}}, -524288(%r3)
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %ptr = getelementptr i32 *%bsrc, i128 -131072
  %b = load i32 *%ptr
  %bext = zext i32 %b to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}

; Check the next word down, which needs separate address logic.
; Other sequences besides this one would be OK.
define void @f9(i128 *%aptr, i32 *%bsrc) {
; CHECK: f9:
; CHECK: agfi %r3, -524292
; CHECK: slgf {{%r[0-5]}}, 0(%r3)
; CHECK: slbgr
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %ptr = getelementptr i32 *%bsrc, i128 -131073
  %b = load i32 *%ptr
  %bext = zext i32 %b to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}

; Check that SLGF allows an index.
define void @f10(i128 *%aptr, i64 %src, i64 %index) {
; CHECK: f10:
; CHECK: slgf {{%r[0-5]}}, 524284({{%r4,%r3|%r3,%r4}})
; CHECK: br %r14
  %a = load i128 *%aptr
  %xor = xor i128 %a, 127
  %add1 = add i64 %src, %index
  %add2 = add i64 %add1, 524284
  %ptr = inttoptr i64 %add2 to i32 *
  %b = load i32 *%ptr
  %bext = zext i32 %b to i128
  %sub = sub i128 %xor, %bext
  store i128 %sub, i128 *%aptr
  ret void
}
