61 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=aarch64-- | FileCheck %s3 4define zeroext i32 @trunc_nuw_nsw_urem(i64 %x) nounwind {5; CHECK-LABEL: trunc_nuw_nsw_urem:6; CHECK: // %bb.0: // %entry7; CHECK-NEXT: mov w8, #5977 // =0x17598; CHECK-NEXT: mov w9, #10000 // =0x27109; CHECK-NEXT: movk w8, #53687, lsl #1610; CHECK-NEXT: mul x8, x0, x811; CHECK-NEXT: lsr x8, x8, #4512; CHECK-NEXT: msub w0, w8, w9, w013; CHECK-NEXT: ret14entry:15 %trunc = trunc nuw nsw i64 %x to i3216 %rem = urem i32 %trunc, 1000017 ret i32 %rem18}19 20define i64 @zext_nneg_udiv_trunc_nuw(i64 %x) nounwind {21; CHECK-LABEL: zext_nneg_udiv_trunc_nuw:22; CHECK: // %bb.0: // %entry23; CHECK-NEXT: mov w8, #52429 // =0xcccd24; CHECK-NEXT: mul w8, w0, w825; CHECK-NEXT: lsr w0, w8, #2326; CHECK-NEXT: ret27entry:28 %trunc = trunc nuw i64 %x to i1629 %div = udiv i16 %trunc, 16030 %ext = zext nneg i16 %div to i6431 ret i64 %ext32}33 34define i64 @sext_udiv_trunc_nuw(i64 %x) nounwind {35; CHECK-LABEL: sext_udiv_trunc_nuw:36; CHECK: // %bb.0: // %entry37; CHECK-NEXT: mov w8, #52429 // =0xcccd38; CHECK-NEXT: mul w8, w0, w839; CHECK-NEXT: lsr w0, w8, #2340; CHECK-NEXT: ret41entry:42 %trunc = trunc nuw i64 %x to i1643 %div = udiv i16 %trunc, 16044 %ext = sext i16 %div to i6445 ret i64 %ext46}47 48define ptr @gep_nusw_zext_nneg_add_trunc_nuw_nsw(ptr %p, i64 %x) nounwind {49; CHECK-LABEL: gep_nusw_zext_nneg_add_trunc_nuw_nsw:50; CHECK: // %bb.0: // %entry51; CHECK-NEXT: add w8, w1, #552; CHECK-NEXT: add x0, x0, w8, uxtw #253; CHECK-NEXT: ret54entry:55 %trunc = trunc nuw nsw i64 %x to i3256 %add = add nuw nsw i32 %trunc, 557 %offset = zext nneg i32 %add to i6458 %gep = getelementptr nusw float, ptr %p, i64 %offset59 ret ptr %gep60}61