1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 2# RUN: llc -mtriple=aarch64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s 3 4--- | 5 target triple = "aarch64-unknown-linux-gnu" 6 7 declare i32 @llvm.get.fpmode.i32() 8 declare void @llvm.set.fpmode.i32(i32) 9 declare void @llvm.reset.fpmode() 10 11 define i32 @func_get_fpmode() #0 { 12 entry: 13 %fpmode = call i32 @llvm.get.fpmode.i32() 14 ret i32 %fpmode 15 } 16 17 define void @func_set_fpmode(i32 %fpmode) #0 { 18 entry: 19 call void @llvm.set.fpmode.i32(i32 %fpmode) 20 ret void 21 } 22 23 define void @func_reset() #0 { 24 entry: 25 call void @llvm.reset.fpmode() 26 ret void 27 } 28 29 attributes #0 = { nounwind "use-soft-float"="true" } 30 31... 32--- 33name: func_get_fpmode 34tracksRegLiveness: true 35body: | 36 bb.1.entry: 37 ; CHECK-LABEL: name: func_get_fpmode 38 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0 39 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 40 ; CHECK-NEXT: $x0 = COPY [[FRAME_INDEX]](p0) 41 ; CHECK-NEXT: BL &fegetmode, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $x0 42 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 43 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %stack.0) 44 ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32) 45 ; CHECK-NEXT: RET_ReallyLR implicit $w0 46 %0:_(s32) = G_GET_FPMODE 47 $w0 = COPY %0(s32) 48 RET_ReallyLR implicit $w0 49 50... 51--- 52name: func_set_fpmode 53tracksRegLiveness: true 54body: | 55 bb.1.entry: 56 liveins: $w0 57 58 ; CHECK-LABEL: name: func_set_fpmode 59 ; CHECK: liveins: $w0 60 ; CHECK-NEXT: {{ $}} 61 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0 62 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0 63 ; CHECK-NEXT: G_STORE [[COPY]](s32), [[FRAME_INDEX]](p0) :: (store (s32) into %stack.0) 64 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 65 ; CHECK-NEXT: $x0 = COPY [[FRAME_INDEX]](p0) 66 ; CHECK-NEXT: BL &fesetmode, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $x0 67 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 68 ; CHECK-NEXT: RET_ReallyLR 69 %0:_(s32) = COPY $w0 70 G_SET_FPMODE %0(s32) 71 RET_ReallyLR 72 73... 74--- 75name: func_reset 76tracksRegLiveness: true 77body: | 78 bb.1.entry: 79 ; CHECK-LABEL: name: func_reset 80 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1 81 ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[C]](s64) 82 ; CHECK-NEXT: $x0 = COPY [[INTTOPTR]](p0) 83 ; CHECK-NEXT: TCRETURNdi &fesetmode, 0, csr_aarch64_aapcs, implicit $sp, implicit $x0 84 G_RESET_FPMODE 85 RET_ReallyLR 86 87... 88