@@ -27,6 +27,18 @@ define void @plain(ptr %a, ptr %b, ptr %c, ptr %d) local_unnamed_addr {
27
27
; CHECK: st.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
28
28
store i64 %d.add , ptr %d
29
29
30
+ ; CHECK: ld.f32 %f{{[0-9]+}}, [%rd{{[0-9]+}}]
31
+ %e.load = load float , ptr %c
32
+ %e.add = fadd float %e.load , 1 .
33
+ ; CHECK: st.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
34
+ store float %e.add , ptr %c
35
+
36
+ ; CHECK: ld.f64 %fd{{[0-9]+}}, [%rd{{[0-9]+}}]
37
+ %f.load = load double , ptr %c
38
+ %f.add = fadd double %f.load , 1 .
39
+ ; CHECK: st.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
40
+ store double %f.add , ptr %c
41
+
30
42
ret void
31
43
}
32
44
@@ -56,6 +68,18 @@ define void @volatile(ptr %a, ptr %b, ptr %c, ptr %d) local_unnamed_addr {
56
68
; CHECK: st.volatile.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
57
69
store volatile i64 %d.add , ptr %d
58
70
71
+ ; CHECK: ld.volatile.f32 %f{{[0-9]+}}, [%rd{{[0-9]+}}]
72
+ %e.load = load volatile float , ptr %c
73
+ %e.add = fadd float %e.load , 1 .
74
+ ; CHECK: st.volatile.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
75
+ store volatile float %e.add , ptr %c
76
+
77
+ ; CHECK: ld.volatile.f64 %fd{{[0-9]+}}, [%rd{{[0-9]+}}]
78
+ %f.load = load volatile double , ptr %c
79
+ %f.add = fadd double %f.load , 1 .
80
+ ; CHECK: st.volatile.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
81
+ store volatile double %f.add , ptr %c
82
+
59
83
ret void
60
84
}
61
85
@@ -91,5 +115,11 @@ define void @monotonic(ptr %a, ptr %b, ptr %c, ptr %d, ptr %e) local_unnamed_add
91
115
; CHECK: st.volatile.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
92
116
store atomic float %e.add , ptr %e monotonic , align 4
93
117
118
+ ; CHECK: ld.volatile.f64 %fd{{[0-9]+}}, [%rd{{[0-9]+}}]
119
+ %f.load = load atomic double , ptr %e monotonic , align 8
120
+ %f.add = fadd double %f.load , 1 .
121
+ ; CHECK: st.volatile.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
122
+ store atomic double %f.add , ptr %e monotonic , align 8
123
+
94
124
ret void
95
125
}
0 commit comments