2
0

load-combine-aa.ll 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. ; RUN: opt -basicaa -load-combine -instcombine -S < %s | FileCheck %s
  2. target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  3. target triple = "x86_64-unknown-linux-gnu"
  4. define i64 @test1(i32* nocapture readonly noalias %a, i32* nocapture readonly noalias %b) {
  5. ; CHECK-LABEL: @test1
  6. ; CHECK: load i64, i64*
  7. ; CHECK: ret i64
  8. %load1 = load i32, i32* %a, align 4
  9. %conv = zext i32 %load1 to i64
  10. %arrayidx1 = getelementptr inbounds i32, i32* %a, i64 1
  11. store i32 %load1, i32* %b, align 4
  12. %load2 = load i32, i32* %arrayidx1, align 4
  13. %conv2 = zext i32 %load2 to i64
  14. %shl = shl nuw i64 %conv2, 32
  15. %add = or i64 %shl, %conv
  16. ret i64 %add
  17. }
  18. define i64 @test2(i32* nocapture readonly %a, i32* nocapture readonly %b) {
  19. ; CHECK-LABEL: @test2
  20. ; CHECK: load i32, i32*
  21. ; CHECK: load i32, i32*
  22. ; CHECK: ret i64
  23. %load1 = load i32, i32* %a, align 4
  24. %conv = zext i32 %load1 to i64
  25. %arrayidx1 = getelementptr inbounds i32, i32* %a, i64 1
  26. store i32 %load1, i32* %b, align 4
  27. %load2 = load i32, i32* %arrayidx1, align 4
  28. %conv2 = zext i32 %load2 to i64
  29. %shl = shl nuw i64 %conv2, 32
  30. %add = or i64 %shl, %conv
  31. ret i64 %add
  32. }