Kai Nacke a1710eb3cd [SystemZ][NFC] Opaque pointer migration.
The LIT test cases were migrated with the script provided by
Nikita Popov.

No manual changes were made. Committed without review since
no functional changes, after consultation with uweigand.
2022-10-11 21:09:43 +00:00

68 lines
1.3 KiB
LLVM

; Test floating-point control register intrinsics.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
declare void @llvm.s390.sfpc(i32)
declare i32 @llvm.s390.efpc()
; SFPC.
define void @test_sfpc(i32 %fpc) {
; CHECK-LABEL: test_sfpc:
; CHECK: sfpc %r2
; CHECK: br %r14
call void @llvm.s390.sfpc(i32 %fpc)
ret void
}
; EFPC.
define i32 @test_efpc() {
; CHECK-LABEL: test_efpc:
; CHECK: efpc %r2
; CHECK: br %r14
%res = call i32 @llvm.s390.efpc()
ret i32 %res
}
; LFPC.
define void @test_lfpc1(ptr %ptr) {
; CHECK-LABEL: test_lfpc1:
; CHECK: lfpc 0(%r2)
; CHECK: br %r14
%fpc = load i32, ptr %ptr
call void @llvm.s390.sfpc(i32 %fpc)
ret void
}
; LFPC with offset.
define void @test_lfpc2(ptr %ptr) {
; CHECK-LABEL: test_lfpc2:
; CHECK: lfpc 4092(%r2)
; CHECK: br %r14
%ptr1 = getelementptr i32, ptr %ptr, i32 1023
%fpc = load i32, ptr %ptr1
call void @llvm.s390.sfpc(i32 %fpc)
ret void
}
; STFPC.
define void @test_stfpc1(ptr %ptr) {
; CHECK-LABEL: test_stfpc1:
; CHECK: stfpc 0(%r2)
; CHECK: br %r14
%fpc = call i32 @llvm.s390.efpc()
store i32 %fpc, ptr %ptr
ret void
}
; STFPC with offset.
define void @test_stfpc2(ptr %ptr) {
; CHECK-LABEL: test_stfpc2:
; CHECK: stfpc 4092(%r2)
; CHECK: br %r14
%fpc = call i32 @llvm.s390.efpc()
%ptr1 = getelementptr i32, ptr %ptr, i32 1023
store i32 %fpc, ptr %ptr1
ret void
}