brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 3257970 Raw
68 lines · plain
1; Test floating-point control register intrinsics.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4 5declare void @llvm.s390.sfpc(i32)6declare i32 @llvm.s390.efpc()7 8; SFPC.9define void @test_sfpc(i32 %fpc) {10; CHECK-LABEL: test_sfpc:11; CHECK: sfpc %r212; CHECK: br %r1413  call void @llvm.s390.sfpc(i32 %fpc)14  ret void15}16 17; EFPC.18define i32 @test_efpc() {19; CHECK-LABEL: test_efpc:20; CHECK: efpc %r221; CHECK: br %r1422  %res = call i32 @llvm.s390.efpc()23  ret i32 %res24}25 26; LFPC.27define void @test_lfpc1(ptr %ptr) {28; CHECK-LABEL: test_lfpc1:29; CHECK: lfpc 0(%r2)30; CHECK: br %r1431  %fpc = load i32, ptr %ptr32  call void @llvm.s390.sfpc(i32 %fpc)33  ret void34}35 36; LFPC with offset.37define void @test_lfpc2(ptr %ptr) {38; CHECK-LABEL: test_lfpc2:39; CHECK: lfpc 4092(%r2)40; CHECK: br %r1441  %ptr1 = getelementptr i32, ptr %ptr, i32 102342  %fpc = load i32, ptr %ptr143  call void @llvm.s390.sfpc(i32 %fpc)44  ret void45}46 47; STFPC.48define void @test_stfpc1(ptr %ptr) {49; CHECK-LABEL: test_stfpc1:50; CHECK: stfpc 0(%r2)51; CHECK: br %r1452  %fpc = call i32 @llvm.s390.efpc()53  store i32 %fpc, ptr %ptr54  ret void55}56 57; STFPC with offset.58define void @test_stfpc2(ptr %ptr) {59; CHECK-LABEL: test_stfpc2:60; CHECK: stfpc 4092(%r2)61; CHECK: br %r1462  %fpc = call i32 @llvm.s390.efpc()63  %ptr1 = getelementptr i32, ptr %ptr, i32 102364  store i32 %fpc, ptr %ptr165  ret void66}67 68