66 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=aarch64-none-linux-gnu %s -o - | FileCheck %s3 4define void @func_set_rounding_dyn(i32 %rm) {5; CHECK-LABEL: func_set_rounding_dyn:6; CHECK: // %bb.0:7; CHECK-NEXT: lsl w9, w0, #228; CHECK-NEXT: mrs x8, FPCR9; CHECK-NEXT: and x8, x8, #0xffffffffff3fffff10; CHECK-NEXT: sub w9, w9, #1024, lsl #12 // =419430411; CHECK-NEXT: and w9, w9, #0xc0000012; CHECK-NEXT: orr x8, x8, x913; CHECK-NEXT: msr FPCR, x814; CHECK-NEXT: ret15 call void @llvm.set.rounding(i32 %rm)16 ret void17}18 19define void @func_set_rounding_toward_zero() {20; CHECK-LABEL: func_set_rounding_toward_zero:21; CHECK: // %bb.0:22; CHECK-NEXT: mrs x8, FPCR23; CHECK-NEXT: orr x8, x8, #0xc0000024; CHECK-NEXT: msr FPCR, x825; CHECK-NEXT: ret26 call void @llvm.set.rounding(i32 0)27 ret void28}29 30define void @func_set_rounding_tonearest_even() {31; CHECK-LABEL: func_set_rounding_tonearest_even:32; CHECK: // %bb.0:33; CHECK-NEXT: mrs x8, FPCR34; CHECK-NEXT: and x8, x8, #0xffffffffff3fffff35; CHECK-NEXT: msr FPCR, x836; CHECK-NEXT: ret37 call void @llvm.set.rounding(i32 1)38 ret void39}40 41define void @func_set_rounding_upward() {42; CHECK-LABEL: func_set_rounding_upward:43; CHECK: // %bb.0:44; CHECK-NEXT: mrs x8, FPCR45; CHECK-NEXT: and x8, x8, #0xffffffffff3fffff46; CHECK-NEXT: orr x8, x8, #0x40000047; CHECK-NEXT: msr FPCR, x848; CHECK-NEXT: ret49 call void @llvm.set.rounding(i32 2)50 ret void51}52 53define void @func_set_rounding_downward() {54; CHECK-LABEL: func_set_rounding_downward:55; CHECK: // %bb.0:56; CHECK-NEXT: mrs x8, FPCR57; CHECK-NEXT: and x8, x8, #0xffffffffff3fffff58; CHECK-NEXT: orr x8, x8, #0x80000059; CHECK-NEXT: msr FPCR, x860; CHECK-NEXT: ret61 call void @llvm.set.rounding(i32 3)62 ret void63}64 65declare void @llvm.set.rounding(i32)66