1 ; RUN: llc -mtriple=arm64-linux-gnu -o - %s | FileCheck %s
3 define i32 @test1(i32 %x) {
5 ; CHECK: add w8, w0, #7
7 ; CHECK: csel w8, w8, w0, lt
8 ; CHECK: asr w0, w8, #3
13 define i32 @test2(i32 %x) {
15 ; CHECK: add w8, w0, #7
17 ; CHECK: csel w8, w8, w0, lt
18 ; CHECK: neg w0, w8, asr #3
19 %div = sdiv i32 %x, -8
23 define i32 @test3(i32 %x) {
25 ; CHECK: add w8, w0, #31
27 ; CHECK: csel w8, w8, w0, lt
28 ; CHECK: asr w0, w8, #5
29 %div = sdiv i32 %x, 32
33 define i64 @test4(i64 %x) {
35 ; CHECK: add x8, x0, #7
37 ; CHECK: csel x8, x8, x0, lt
38 ; CHECK: asr x0, x8, #3
43 define i64 @test5(i64 %x) {
45 ; CHECK: add x8, x0, #7
47 ; CHECK: csel x8, x8, x0, lt
48 ; CHECK: neg x0, x8, asr #3
49 %div = sdiv i64 %x, -8
53 define i64 @test6(i64 %x) {
55 ; CHECK: add x8, x0, #63
57 ; CHECK: csel x8, x8, x0, lt
58 ; CHECK: asr x0, x8, #6
59 %div = sdiv i64 %x, 64