misaligned-vector-ldst.ll 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s
  2. target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"
  3. target triple = "nvptx64-nvidia-cuda"
  4. ; CHECK-LABEL: t1
  5. define <4 x float> @t1(i8* %p1) {
  6. ; CHECK-NOT: ld.v4
  7. ; CHECK-NOT: ld.v2
  8. ; CHECK-NOT: ld.f32
  9. ; CHECK: ld.u8
  10. %cast = bitcast i8* %p1 to <4 x float>*
  11. %r = load <4 x float>, <4 x float>* %cast, align 1
  12. ret <4 x float> %r
  13. }
  14. ; CHECK-LABEL: t2
  15. define <4 x float> @t2(i8* %p1) {
  16. ; CHECK-NOT: ld.v4
  17. ; CHECK-NOT: ld.v2
  18. ; CHECK: ld.f32
  19. %cast = bitcast i8* %p1 to <4 x float>*
  20. %r = load <4 x float>, <4 x float>* %cast, align 4
  21. ret <4 x float> %r
  22. }
  23. ; CHECK-LABEL: t3
  24. define <4 x float> @t3(i8* %p1) {
  25. ; CHECK-NOT: ld.v4
  26. ; CHECK: ld.v2
  27. %cast = bitcast i8* %p1 to <4 x float>*
  28. %r = load <4 x float>, <4 x float>* %cast, align 8
  29. ret <4 x float> %r
  30. }
  31. ; CHECK-LABEL: t4
  32. define <4 x float> @t4(i8* %p1) {
  33. ; CHECK: ld.v4
  34. %cast = bitcast i8* %p1 to <4 x float>*
  35. %r = load <4 x float>, <4 x float>* %cast, align 16
  36. ret <4 x float> %r
  37. }
  38. ; CHECK-LABEL: s1
  39. define void @s1(<4 x float>* %p1, <4 x float> %v) {
  40. ; CHECK-NOT: st.v4
  41. ; CHECK-NOT: st.v2
  42. ; CHECK-NOT: st.f32
  43. ; CHECK: st.u8
  44. store <4 x float> %v, <4 x float>* %p1, align 1
  45. ret void
  46. }
  47. ; CHECK-LABEL: s2
  48. define void @s2(<4 x float>* %p1, <4 x float> %v) {
  49. ; CHECK-NOT: st.v4
  50. ; CHECK-NOT: st.v2
  51. ; CHECK: st.f32
  52. store <4 x float> %v, <4 x float>* %p1, align 4
  53. ret void
  54. }
  55. ; CHECK-LABEL: s3
  56. define void @s3(<4 x float>* %p1, <4 x float> %v) {
  57. ; CHECK-NOT: st.v4
  58. store <4 x float> %v, <4 x float>* %p1, align 8
  59. ret void
  60. }
  61. ; CHECK-LABEL: s4
  62. define void @s4(<4 x float>* %p1, <4 x float> %v) {
  63. ; CHECK: st.v4
  64. store <4 x float> %v, <4 x float>* %p1, align 16
  65. ret void
  66. }