Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1318)

Unified Diff: test/NaCl/X86/pnacl-avoids-r11-x86-64.ll

Issue 939073008: Rebased PNaCl localmods in LLVM to 223109 (Closed)
Patch Set: undo localmod Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/NaCl/X86/pnacl-avoids-r11-x86-64.c ('k') | test/NaCl/X86/pnacl-hides-sandbox-x86-64.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/NaCl/X86/pnacl-avoids-r11-x86-64.ll
diff --git a/test/NaCl/X86/pnacl-avoids-r11-x86-64.ll b/test/NaCl/X86/pnacl-avoids-r11-x86-64.ll
new file mode 100644
index 0000000000000000000000000000000000000000..72ecdb35fb68c244a4aaf9eaf0bebafba32b3222
--- /dev/null
+++ b/test/NaCl/X86/pnacl-avoids-r11-x86-64.ll
@@ -0,0 +1,131 @@
+; The NACLON test verifies that %r11 and %r11d are not used except as
+; part of the return sequence.
+;
+; RUN: pnacl-llc -O2 -mtriple=x86_64-none-nacl < %s | \
+; RUN: FileCheck %s --check-prefix=NACLON
+;
+; The NACLOFF test verifies that %r11 would normally be used if PNaCl
+; weren't reserving r11 for its own uses, to be sure NACLON is a
+; valid test.
+;
+; RUN: pnacl-llc -O2 -mtriple=x86_64-linux < %s | \
+; RUN: FileCheck %s --check-prefix=NACLOFF
+;
+; NACLON: RegisterPressure:
+; NACLON-NOT: %r11
+; NACLON: popq %r11
+; NACLON: nacljmp %r11d, %r15
+;
+; NACLOFF: RegisterPressure:
+; NACLOFF: %r11
+; NACLOFF: ret
+; ModuleID = 'pnacl-avoids-r11-x86-64.c'
+target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:32"
+target triple = "le32-unknown-nacl"
+
+@v1a = external global i32
+@v1b = external global i32
+@v2a = external global i32
+@v2b = external global i32
+@v3a = external global i32
+@v3b = external global i32
+@v4a = external global i32
+@v4b = external global i32
+
+; Function Attrs: nounwind
+define void @RegisterPressure() #0 {
+entry:
+ %call = tail call i32 @GetValue() #2
+ %call1 = tail call i32 @GetValue() #2
+ %call2 = tail call i32 @GetValue() #2
+ %call3 = tail call i32 @GetValue() #2
+ %call4 = tail call i32 @GetValue() #2
+ %call5 = tail call i32 @GetValue() #2
+ %call6 = tail call i32 @GetValue() #2
+ %call7 = tail call i32 @GetValue() #2
+ %call8 = tail call i32 @GetValue() #2
+ %call9 = tail call i32 @GetValue() #2
+ %call10 = tail call i32 @GetValue() #2
+ %call11 = tail call i32 @GetValue() #2
+ %call12 = tail call i32 @GetValue() #2
+ %call13 = tail call i32 @GetValue() #2
+ %call14 = tail call i32 @GetValue() #2
+ %call15 = tail call i32 @GetValue() #2
+ tail call void @Use(i32 %call, i32 %call1, i32 %call2, i32 %call3, i32 %call4, i32 %call5, i32 %call6, i32 %call7, i32 %call8, i32 %call9, i32 %call10, i32 %call11, i32 %call12, i32 %call13, i32 %call14, i32 %call15) #2
+ tail call void @Use(i32 %call, i32 %call1, i32 %call2, i32 %call3, i32 %call4, i32 %call5, i32 %call6, i32 %call7, i32 %call8, i32 %call9, i32 %call10, i32 %call11, i32 %call12, i32 %call13, i32 %call14, i32 %call15) #2
+ %add = add nsw i32 %call1, %call
+ %add16 = add nsw i32 %add, %call2
+ %add17 = add nsw i32 %add16, %call3
+ %add18 = add nsw i32 %add17, %call4
+ %add19 = add nsw i32 %add18, %call5
+ %add20 = add nsw i32 %add19, %call6
+ %add21 = add nsw i32 %add20, %call7
+ store volatile i32 %add21, i32* @v1a, align 4, !tbaa !0
+ %add22 = add nsw i32 %call9, %call8
+ %add23 = add nsw i32 %add22, %call10
+ %add24 = add nsw i32 %add23, %call11
+ %add25 = add nsw i32 %add24, %call12
+ %add26 = add nsw i32 %add25, %call13
+ %add27 = add nsw i32 %add26, %call14
+ %add28 = add nsw i32 %add27, %call15
+ store volatile i32 %add28, i32* @v1b, align 4, !tbaa !0
+ %add32 = add nsw i32 %call8, %add17
+ %add33 = add nsw i32 %add32, %call9
+ %add34 = add nsw i32 %add33, %call10
+ %add35 = add nsw i32 %add34, %call11
+ store volatile i32 %add35, i32* @v2a, align 4, !tbaa !0
+ %add36 = add nsw i32 %call5, %call4
+ %add37 = add nsw i32 %add36, %call6
+ %add38 = add nsw i32 %add37, %call7
+ %add39 = add nsw i32 %add38, %call12
+ %add40 = add nsw i32 %add39, %call13
+ %add41 = add nsw i32 %add40, %call14
+ %add42 = add nsw i32 %add41, %call15
+ store volatile i32 %add42, i32* @v2b, align 4, !tbaa !0
+ %add44 = add nsw i32 %call4, %add
+ %add45 = add nsw i32 %add44, %call5
+ %add46 = add nsw i32 %add45, %call8
+ %add47 = add nsw i32 %add46, %call9
+ %add48 = add nsw i32 %add47, %call12
+ %add49 = add nsw i32 %add48, %call13
+ store volatile i32 %add49, i32* @v3a, align 4, !tbaa !0
+ %add50 = add nsw i32 %call3, %call2
+ %add51 = add nsw i32 %add50, %call6
+ %add52 = add nsw i32 %add51, %call7
+ %add53 = add nsw i32 %add52, %call10
+ %add54 = add nsw i32 %add53, %call11
+ %add55 = add nsw i32 %add54, %call14
+ %add56 = add nsw i32 %add55, %call15
+ store volatile i32 %add56, i32* @v3b, align 4, !tbaa !0
+ %add57 = add nsw i32 %call2, %call
+ %add58 = add nsw i32 %add57, %call4
+ %add59 = add nsw i32 %add58, %call6
+ %add60 = add nsw i32 %add59, %call8
+ %add61 = add nsw i32 %add60, %call10
+ %add62 = add nsw i32 %add61, %call12
+ %add63 = add nsw i32 %add62, %call14
+ store volatile i32 %add63, i32* @v4a, align 4, !tbaa !0
+ %add64 = add nsw i32 %call3, %call1
+ %add65 = add nsw i32 %add64, %call5
+ %add66 = add nsw i32 %add65, %call7
+ %add67 = add nsw i32 %add66, %call9
+ %add68 = add nsw i32 %add67, %call11
+ %add69 = add nsw i32 %add68, %call13
+ %add70 = add nsw i32 %add69, %call15
+ store volatile i32 %add70, i32* @v4b, align 4, !tbaa !0
+ tail call void @Use(i32 %call, i32 %call1, i32 %call2, i32 %call3, i32 %call4, i32 %call5, i32 %call6, i32 %call7, i32 %call8, i32 %call9, i32 %call10, i32 %call11, i32 %call12, i32 %call13, i32 %call14, i32 %call15) #2
+ tail call void @Use(i32 %call, i32 %call1, i32 %call2, i32 %call3, i32 %call4, i32 %call5, i32 %call6, i32 %call7, i32 %call8, i32 %call9, i32 %call10, i32 %call11, i32 %call12, i32 %call13, i32 %call14, i32 %call15) #2
+ ret void
+}
+
+declare i32 @GetValue() #1
+
+declare void @Use(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) #1
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #2 = { nounwind }
+
+!0 = metadata !{metadata !"int", metadata !1}
+!1 = metadata !{metadata !"omnipotent char", metadata !2}
+!2 = metadata !{metadata !"Simple C/C++ TBAA"}
« no previous file with comments | « test/NaCl/X86/pnacl-avoids-r11-x86-64.c ('k') | test/NaCl/X86/pnacl-hides-sandbox-x86-64.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698