@@ -27,6 +27,18 @@ define void @plain(ptr %a, ptr %b, ptr %c, ptr %d) local_unnamed_addr {
2727 ; CHECK: st.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
2828 store i64 %d.add , ptr %d
2929
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+
3042 ret void
3143}
3244
@@ -56,6 +68,18 @@ define void @volatile(ptr %a, ptr %b, ptr %c, ptr %d) local_unnamed_addr {
5668 ; CHECK: st.volatile.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
5769 store volatile i64 %d.add , ptr %d
5870
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+
5983 ret void
6084}
6185
@@ -91,5 +115,11 @@ define void @monotonic(ptr %a, ptr %b, ptr %c, ptr %d, ptr %e) local_unnamed_add
91115 ; CHECK: st.volatile.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
92116 store atomic float %e.add , ptr %e monotonic , align 4
93117
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+
94124 ret void
95125}
0 commit comments