;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
-declare i32 @foo();
+declare i32 @foo()
define void @f1(i32 %target) {
; CHECK: f1:
;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
-declare i64 @foo();
+declare i64 @foo()
define void @f1(i64 %target) {
; CHECK: f1:
define i32 @f1(i32 %a) {
; CHECK: f1:
; CHECK: lrvr [[REGISTER:%r[0-5]]], %r2
-; CHECk: br %r14
+; CHECK: br %r14
%swapped = call i32 @llvm.bswap.i32(i32 %a)
ret i32 %swapped
}
define i64 @f2(i64 %a) {
; CHECK: f2:
; CHECK: lrvgr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%swapped = call i64 @llvm.bswap.i64(i64 %a)
ret i64 %swapped
}
define double @f2(i64 %i) {
; CHECK: f2:
; CHECK: ldgr
-; CHECL: adbr
+; CHECK: adbr
; CHECK: br %r14
%conv = uitofp i64 %i to double
ret double %conv
define i32 @f1(i32 %a) {
; CHECK: f1:
; CHECK: lbr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%byte = trunc i32 %a to i8
%ext = sext i8 %byte to i32
ret i32 %ext
define i32 @f2(i64 %a) {
; CHECK: f2:
; CHECK: lbr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%byte = trunc i64 %a to i8
%ext = sext i8 %byte to i32
ret i32 %ext
define i32 @f1(i32 %a) {
; CHECK: f1:
; CHECK: llcr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%byte = trunc i32 %a to i8
%ext = zext i8 %byte to i32
ret i32 %ext
define i32 @f2(i64 %a) {
; CHECK: f2:
; CHECK: llcr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%byte = trunc i64 %a to i8
%ext = zext i8 %byte to i32
ret i32 %ext
define i32 @f3(i32 %a) {
; CHECK: f3:
; CHECK: llcr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%ext = and i32 %a, 255
ret i32 %ext
}
define i64 @f1(i32 %a) {
; CHECK: f1:
; CHECK: lgbr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%byte = trunc i32 %a to i8
%ext = sext i8 %byte to i64
ret i64 %ext
define i64 @f2(i64 %a) {
; CHECK: f2:
; CHECK: lgbr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%byte = trunc i64 %a to i8
%ext = sext i8 %byte to i64
ret i64 %ext
define i64 @f1(i32 %a) {
; CHECK: f1:
; CHECK: llgcr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%byte = trunc i32 %a to i8
%ext = zext i8 %byte to i64
ret i64 %ext
define i64 @f2(i64 %a) {
; CHECK: f2:
; CHECK: llgcr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%byte = trunc i64 %a to i8
%ext = zext i8 %byte to i64
ret i64 %ext
define i64 @f3(i64 %a) {
; CHECK: f3:
; CHECK: llgcr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%ext = and i64 %a, 255
ret i64 %ext
}
define i32 @f1(i32 %a) {
; CHECK: f1:
; CHECK: lhr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%half = trunc i32 %a to i16
%ext = sext i16 %half to i32
ret i32 %ext
define i32 @f2(i64 %a) {
; CHECK: f2:
; CHECK: lhr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%half = trunc i64 %a to i16
%ext = sext i16 %half to i32
ret i32 %ext
define i32 @f1(i32 %a) {
; CHECK: f1:
; CHECK: llhr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%half = trunc i32 %a to i16
%ext = zext i16 %half to i32
ret i32 %ext
define i32 @f2(i64 %a) {
; CHECK: f2:
; CHECK: llhr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%half = trunc i64 %a to i16
%ext = zext i16 %half to i32
ret i32 %ext
define i32 @f3(i32 %a) {
; CHECK: f3:
; CHECK: llhr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%ext = and i32 %a, 65535
ret i32 %ext
}
define i64 @f1(i64 %a) {
; CHECK: f1:
; CHECK: lghr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%half = trunc i64 %a to i16
%ext = sext i16 %half to i64
ret i64 %ext
define i64 @f2(i32 %a) {
; CHECK: f2:
; CHECK: lghr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%half = trunc i32 %a to i16
%ext = sext i16 %half to i64
ret i64 %ext
define i64 @f1(i32 %a) {
; CHECK: f1:
; CHECK: llghr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%half = trunc i32 %a to i16
%ext = zext i16 %half to i64
ret i64 %ext
define i64 @f2(i64 %a) {
; CHECK: f2:
; CHECK: llghr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%half = trunc i64 %a to i16
%ext = zext i16 %half to i64
ret i64 %ext
define i64 @f3(i64 %a) {
; CHECK: f3:
; CHECK: llghr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%ext = and i64 %a, 65535
ret i64 %ext
}
define i64 @f1(i32 %a) {
; CHECK: f1:
; CHECK: lgfr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%ext = sext i32 %a to i64
ret i64 %ext
}
define i64 @f2(i64 %a) {
; CHECK: f2:
; CHECK: lgfr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%word = trunc i64 %a to i32
%ext = sext i32 %word to i64
ret i64 %ext
define i64 @f1(i32 %a) {
; CHECK: f1:
; CHECK: llgfr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%ext = zext i32 %a to i64
ret i64 %ext
}
define i64 @f2(i64 %a) {
; CHECK: f2:
; CHECK: llgfr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%word = trunc i64 %a to i32
%ext = zext i32 %word to i64
ret i64 %ext
define i64 @f3(i64 %a) {
; CHECK: f3:
; CHECK: llgfr %r2, %r2
-; CHECk: br %r14
+; CHECK: br %r14
%ext = and i64 %a, 4294967295
ret i64 %ext
}