46 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64 -mattr=+sve -verify-machineinstrs < %s | FileCheck %s3 4define i64 @vscale_lshr(i64 %TC) {5; CHECK-LABEL: vscale_lshr:6; CHECK: // %bb.0:7; CHECK-NEXT: rdvl x8, #18; CHECK-NEXT: lsr x8, x8, #49; CHECK-NEXT: lsr x8, x8, #310; CHECK-NEXT: sub x8, x8, #111; CHECK-NEXT: and x0, x0, x812; CHECK-NEXT: ret13 %vscale = call i64 @llvm.vscale.i64()14 %shifted = lshr i64 %vscale, 315 %urem = urem i64 %TC, %shifted16 ret i64 %urem17}18 19define i64 @vscale(i64 %TC) {20; CHECK-LABEL: vscale:21; CHECK: // %bb.0:22; CHECK-NEXT: rdvl x8, #123; CHECK-NEXT: lsr x8, x8, #424; CHECK-NEXT: sub x8, x8, #125; CHECK-NEXT: and x0, x0, x826; CHECK-NEXT: ret27 %vscale = call i64 @llvm.vscale.i64()28 %urem = urem i64 %TC, %vscale29 ret i64 %urem30}31 32define i64 @vscale_shl(i64 %TC) {33; CHECK-LABEL: vscale_shl:34; CHECK: // %bb.0:35; CHECK-NEXT: cnth x836; CHECK-NEXT: sub x8, x8, #137; CHECK-NEXT: and x0, x0, x838; CHECK-NEXT: ret39 %vscale = call i64 @llvm.vscale.i64()40 %shifted = shl i64 %vscale, 341 %urem = urem i64 %TC, %shifted42 ret i64 %urem43}44 45declare i64 @llvm.vscale.i64()46