1 ; RUN: llc < %s -march=arm64 | FileCheck %s
2 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
4 %divovf32 = type { i32, i1 }
6 declare %divovf32 @llvm.safe.sdiv.i32(i32, i32) nounwind readnone
7 declare %divovf32 @llvm.safe.udiv.i32(i32, i32) nounwind readnone
9 ; CHECK-LABEL: sdiv32_results_unused
12 define void @sdiv32_results_unused(i32 %x, i32 %y) {
14 %divr = call %divovf32 @llvm.safe.sdiv.i32(i32 %x, i32 %y)
18 ; CHECK-LABEL: sdiv32_div_result_unused
19 ; CHECK-NOT: sdiv{{[ ]}}
20 define i1 @sdiv32_div_result_unused(i32 %x, i32 %y) {
22 %divr = call %divovf32 @llvm.safe.sdiv.i32(i32 %x, i32 %y)
23 %bit = extractvalue %divovf32 %divr, 1
27 ; CHECK-LABEL: sdiv32_flag_result_unused
30 define i32 @sdiv32_flag_result_unused(i32 %x, i32 %y) {
32 %divr = call %divovf32 @llvm.safe.sdiv.i32(i32 %x, i32 %y)
33 %div = extractvalue %divovf32 %divr, 0
37 ; CHECK-LABEL: sdiv32_result_returned
39 define %divovf32 @sdiv32_result_returned(i32 %x, i32 %y) {
41 %divr = call %divovf32 @llvm.safe.sdiv.i32(i32 %x, i32 %y)
45 ; CHECK-LABEL: sdiv32_trap_relinked
46 ; CHECK-NOT: %div.divmin
47 ; CHECK-NOT: %div.divz
48 define i32 @sdiv32_trap_relinked(i32 %x, i32 %y) {
50 %divr = call %divovf32 @llvm.safe.sdiv.i32(i32 %x, i32 %y)
51 %div = extractvalue %divovf32 %divr, 0
52 %bit = extractvalue %divovf32 %divr, 1
53 br i1 %bit, label %trap.bb, label %ok.bb
60 ; CHECK-LABEL: udiv32_results_unused
63 define void @udiv32_results_unused(i32 %x, i32 %y) {
65 %divr = call %divovf32 @llvm.safe.udiv.i32(i32 %x, i32 %y)
69 ; CHECK-LABEL: udiv32_div_result_unused
70 ; CHECK-NOT: udiv{{[ ]}}
71 define i1 @udiv32_div_result_unused(i32 %x, i32 %y) {
73 %divr = call %divovf32 @llvm.safe.udiv.i32(i32 %x, i32 %y)
74 %bit = extractvalue %divovf32 %divr, 1
78 ; CHECK-LABEL: udiv32_flag_result_unused
81 define i32 @udiv32_flag_result_unused(i32 %x, i32 %y) {
83 %divr = call %divovf32 @llvm.safe.udiv.i32(i32 %x, i32 %y)
84 %div = extractvalue %divovf32 %divr, 0
88 ; CHECK-LABEL: udiv32_result_returned
90 define %divovf32 @udiv32_result_returned(i32 %x, i32 %y) {
92 %divr = call %divovf32 @llvm.safe.udiv.i32(i32 %x, i32 %y)
96 ; CHECK-LABEL: udiv32_trap_relinked
97 ; CHECK-NOT: %div.divz
98 define i32 @udiv32_trap_relinked(i32 %x, i32 %y) {
100 %divr = call %divovf32 @llvm.safe.udiv.i32(i32 %x, i32 %y)
101 %div = extractvalue %divovf32 %divr, 0
102 %bit = extractvalue %divovf32 %divr, 1
103 br i1 %bit, label %trap.bb, label %ok.bb
112 !0 = metadata !{metadata !"clang version 3.5.0 "}