43 lines · plain
1; Test integer negation.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4 5; Test i32->i32 negation.6define i32 @f1(i32 %val) {7; CHECK-LABEL: f1:8; CHECK: lcr %r2, %r29; CHECK: br %r1410 %neg = sub i32 0, %val11 ret i32 %neg12}13 14; Test i32->i64 negation.15define i64 @f2(i32 %val) {16; CHECK-LABEL: f2:17; CHECK: lcgfr %r2, %r218; CHECK: br %r1419 %ext = sext i32 %val to i6420 %neg = sub i64 0, %ext21 ret i64 %neg22}23 24; Test i32->i64 negation that uses an "in-register" form of sign extension.25define i64 @f3(i64 %val) {26; CHECK-LABEL: f3:27; CHECK: lcgfr %r2, %r228; CHECK: br %r1429 %trunc = trunc i64 %val to i3230 %ext = sext i32 %trunc to i6431 %neg = sub i64 0, %ext32 ret i64 %neg33}34 35; Test i64 negation.36define i64 @f4(i64 %val) {37; CHECK-LABEL: f4:38; CHECK: lcgr %r2, %r239; CHECK: br %r1440 %neg = sub i64 0, %val41 ret i64 %neg42}43