1+ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
12; RUN: llc -march=hexagon < %s | FileCheck %s
23;
34; Check if we generate rounding-asr instruction. It is equivalent to
@@ -6,8 +7,19 @@ target triple = "hexagon"
67
78; Function Attrs: nounwind
89define i32 @f0 (i32 %a0 ) #0 {
10+ ; CHECK-LABEL: f0:
11+ ; CHECK: // %bb.0: // %b0
12+ ; CHECK-NEXT: {
13+ ; CHECK-NEXT: r0 = asr(r0,#10):rnd
14+ ; CHECK-NEXT: r1 = r0
15+ ; CHECK-NEXT: r29 = add(r29,#-8)
16+ ; CHECK-NEXT: }
17+ ; CHECK-NEXT: {
18+ ; CHECK-NEXT: r29 = add(r29,#8)
19+ ; CHECK-NEXT: jumpr r31
20+ ; CHECK-NEXT: memw(r29+#4) = r1
21+ ; CHECK-NEXT: }
922b0:
10- ; CHECK: asr{{.*}}:rnd
1123 %v0 = alloca i32 , align 4
1224 store i32 %a0 , ptr %v0 , align 4
1325 %v1 = load i32 , ptr %v0 , align 4
1931
2032; Function Attrs: nounwind
2133define i64 @f1 (i64 %a0 ) #0 {
34+ ; CHECK-LABEL: f1:
35+ ; CHECK: // %bb.0: // %b0
36+ ; CHECK-NEXT: {
37+ ; CHECK-NEXT: r1:0 = asr(r1:0,#17):rnd
38+ ; CHECK-NEXT: r3:2 = combine(r1,r0)
39+ ; CHECK-NEXT: r29 = add(r29,#-8)
40+ ; CHECK-NEXT: }
41+ ; CHECK-NEXT: {
42+ ; CHECK-NEXT: r29 = add(r29,#8)
43+ ; CHECK-NEXT: jumpr r31
44+ ; CHECK-NEXT: memd(r29+#0) = r3:2
45+ ; CHECK-NEXT: }
2246b0:
23- ; CHECK: asr{{.*}}:rnd
2447 %v0 = alloca i64 , align 8
2548 store i64 %a0 , ptr %v0 , align 8
2649 %v1 = load i64 , ptr %v0 , align 8
0 commit comments