The issue that caused the revert has been fixed in:
44bd807512
-----
This switches Hexagon intrinsics to use the default attributes
(nosync, nofree, nocallback and willreturn). Especially willreturn
is needed to prevent optimization regressions in the future.
The only intrinsics I've excluded here are the load/store locked
intrinsics, which presumably aren't nosync.
Differential Revision: https://reviews.llvm.org/D137623
19 lines
472 B
LLVM
19 lines
472 B
LLVM
; RUN: llc -march=hexagon < %s | FileCheck %s
|
|
; CHECK: = memw{{.*}}circ
|
|
|
|
target triple = "hexagon"
|
|
|
|
@l = external global i32, align 4
|
|
|
|
; Function Attrs: nounwind optsize
|
|
define void @circ2() #0 {
|
|
entry:
|
|
store i32 0, i32* @l, align 4
|
|
%0 = tail call i8* @llvm.hexagon.circ.ldw(i8* undef, i8* undef, i32 150995968, i32 4)
|
|
ret void
|
|
}
|
|
|
|
declare i8* @llvm.hexagon.circ.ldw(i8*, i8*, i32, i32) #1
|
|
attributes #0 = { nounwind optsize }
|
|
attributes #1 = { argmemonly nounwind }
|