blob: ad736bb6ebf0122ecff6588d7edd9d3c612e1643 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S -passes=mergefunc %s | FileCheck %s
define internal <2 x i32> @whole_vector_load(ptr %p) {
; CHECK-LABEL: define internal <2 x i32> @whole_vector_load(
; CHECK-SAME: ptr [[P:%.*]]) {
; CHECK-NEXT: [[VALUE:%.*]] = load atomic <2 x i32>, ptr [[P]] monotonic, align 4
; CHECK-NEXT: ret <2 x i32> [[VALUE]]
;
%value = load atomic <2 x i32>, ptr %p monotonic, align 4
ret <2 x i32> %value
}
define internal <2 x i32> @elementwise_load(ptr %p) {
; CHECK-LABEL: define internal <2 x i32> @elementwise_load(
; CHECK-SAME: ptr [[P:%.*]]) {
; CHECK-NEXT: [[VALUE:%.*]] = load atomic elementwise <2 x i32>, ptr [[P]] monotonic, align 4
; CHECK-NEXT: ret <2 x i32> [[VALUE]]
;
%value = load atomic elementwise <2 x i32>, ptr %p monotonic, align 4
ret <2 x i32> %value
}
define internal void @whole_vector_store(ptr %p, <2 x i32> %value) {
; CHECK-LABEL: define internal void @whole_vector_store(
; CHECK-SAME: ptr [[P:%.*]], <2 x i32> [[VALUE:%.*]]) {
; CHECK-NEXT: store atomic <2 x i32> [[VALUE]], ptr [[P]] monotonic, align 4
; CHECK-NEXT: ret void
;
store atomic <2 x i32> %value, ptr %p monotonic, align 4
ret void
}
define internal void @elementwise_store(ptr %p, <2 x i32> %value) {
; CHECK-LABEL: define internal void @elementwise_store(
; CHECK-SAME: ptr [[P:%.*]], <2 x i32> [[VALUE:%.*]]) {
; CHECK-NEXT: store atomic elementwise <2 x i32> [[VALUE]], ptr [[P]] monotonic, align 4
; CHECK-NEXT: ret void
;
store atomic elementwise <2 x i32> %value, ptr %p monotonic, align 4
ret void
}
define internal <2 x i32> @whole_vector_atomicrmw(ptr %p, <2 x i32> %value) {
; CHECK-LABEL: define internal <2 x i32> @whole_vector_atomicrmw(
; CHECK-SAME: ptr [[P:%.*]], <2 x i32> [[VALUE:%.*]]) {
; CHECK-NEXT: [[OLD:%.*]] = atomicrmw add ptr [[P]], <2 x i32> [[VALUE]] monotonic, align 8
; CHECK-NEXT: ret <2 x i32> [[OLD]]
;
%old = atomicrmw add ptr %p, <2 x i32> %value monotonic, align 8
ret <2 x i32> %old
}
define internal <2 x i32> @elementwise_atomicrmw(ptr %p, <2 x i32> %value) {
; CHECK-LABEL: define internal <2 x i32> @elementwise_atomicrmw(
; CHECK-SAME: ptr [[P:%.*]], <2 x i32> [[VALUE:%.*]]) {
; CHECK-NEXT: [[OLD:%.*]] = atomicrmw elementwise add ptr [[P]], <2 x i32> [[VALUE]] monotonic, align 8
; CHECK-NEXT: ret <2 x i32> [[OLD]]
;
%old = atomicrmw elementwise add ptr %p, <2 x i32> %value monotonic, align 8
ret <2 x i32> %old
}