87 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc < %s -mtriple=riscv64 -mattr=+m,+zba,+zbb,+zcb | FileCheck %s3 4define i64 @c_not(i64 %x, i64 %y, i64 %z) {5; CHECK-LABEL: c_not:6; CHECK: # %bb.0:7; CHECK-NEXT: not a1, a18; CHECK-NEXT: li a0, 12349; CHECK-NEXT: mul a0, a0, a110; CHECK-NEXT: ret11 %a = xor i64 %y, -112 %b = mul i64 %a, 123413 ret i64 %b14}15 16define i64 @c_mul(i64 %x, i64 %y, i64 %z, i64 %w) {17; CHECK-LABEL: c_mul:18; CHECK: # %bb.0:19; CHECK-NEXT: mul a1, a1, a220; CHECK-NEXT: lui a0, 121; CHECK-NEXT: or a0, a0, a122; CHECK-NEXT: ret23 %a = mul i64 %y, %z24 %b = or i64 %a, 409625 ret i64 %b26}27 28define i64 @c_sext_b(i64 %x, i8 %y, i64 %z) {29; CHECK-LABEL: c_sext_b:30; CHECK: # %bb.0:31; CHECK-NEXT: sext.b a1, a132; CHECK-NEXT: lui a0, 133; CHECK-NEXT: or a0, a0, a134; CHECK-NEXT: ret35 %a = sext i8 %y to i6436 %b = or i64 %a, 409637 ret i64 %b38}39 40define i64 @c_sext_h(i64 %x, i16 %y, i64 %z) {41; CHECK-LABEL: c_sext_h:42; CHECK: # %bb.0:43; CHECK-NEXT: sext.h a1, a144; CHECK-NEXT: lui a0, 145; CHECK-NEXT: or a0, a0, a146; CHECK-NEXT: ret47 %a = sext i16 %y to i6448 %b = or i64 %a, 409649 ret i64 %b50}51 52define i64 @c_zext_b(i64 %x, i8 %y, i64 %z) {53; CHECK-LABEL: c_zext_b:54; CHECK: # %bb.0:55; CHECK-NEXT: zext.b a1, a156; CHECK-NEXT: lui a0, 157; CHECK-NEXT: or a0, a0, a158; CHECK-NEXT: ret59 %a = zext i8 %y to i6460 %b = or i64 %a, 409661 ret i64 %b62}63 64define i64 @c_zext_h(i64 %x, i16 %y) {65; CHECK-LABEL: c_zext_h:66; CHECK: # %bb.0:67; CHECK-NEXT: zext.h a1, a168; CHECK-NEXT: lui a0, 409669; CHECK-NEXT: or a0, a0, a170; CHECK-NEXT: ret71 %a = zext i16 %y to i6472 %b = or i64 %a, 1677721673 ret i64 %b74}75 76define i64 @c_zext_w(i64 %x, i32 %y) {77; CHECK-LABEL: c_zext_w:78; CHECK: # %bb.0:79; CHECK-NEXT: zext.w a1, a180; CHECK-NEXT: li a0, 123481; CHECK-NEXT: mul a0, a0, a182; CHECK-NEXT: ret83 %a = zext i32 %y to i6484 %b = mul i64 %a, 123485 ret i64 %b86}87