aboutsummaryrefslogtreecommitdiff
path: root/llvm/test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Transforms/LoopVectorize/AArch64/reg-usage.ll27
-rw-r--r--llvm/test/tools/llc/save-stats.ll15
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/octal-in-range.rc4
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/octal-out-of-range.rc4
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/tokens.rc2
-rw-r--r--llvm/test/tools/llvm-rc/octal.test38
-rw-r--r--llvm/test/tools/llvm-rc/tokenizer.test5
7 files changed, 93 insertions, 2 deletions
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/reg-usage.ll b/llvm/test/Transforms/LoopVectorize/AArch64/reg-usage.ll
index 70685c1..d4fb3d7 100644
--- a/llvm/test/Transforms/LoopVectorize/AArch64/reg-usage.ll
+++ b/llvm/test/Transforms/LoopVectorize/AArch64/reg-usage.ll
@@ -248,3 +248,30 @@ exit: ; preds = %for.body
%result = add nsw i32 %result0, %result1
ret i32 %result
}
+
+define i64 @loop_reduction_and_store_last_element(ptr %src, ptr writeonly %dst) {
+; CHECK-LABEL: LV: Checking a loop in 'loop_reduction_and_store_last_element'
+; CHECK: LV(REG): VF = 16
+; CHECK-NEXT: LV(REG): Found max usage: 2 item
+; CHECK-NEXT: LV(REG): RegisterClass: Generic::ScalarRC, 2 registers
+; CHECK-NEXT: LV(REG): RegisterClass: Generic::VectorRC, 16 registers
+; CHECK-NEXT: LV(REG): Found invariant usage: 1 item
+entry:
+ br label %loop
+
+loop:
+ %iv = phi i32 [ 1, %entry ], [ %iv.next, %loop ]
+ %red = phi i64 [ 0, %entry ], [ %red.next, %loop ]
+ %ptr = phi ptr [ %src, %entry ], [ %ptr.next, %loop ]
+ %iv.next = add nuw i32 %iv, 1
+ %ptr.next = getelementptr i8, ptr %ptr, i64 1
+ store ptr %ptr, ptr %dst, align 8
+ %val = load i8, ptr %ptr, align 1
+ %val.ext = zext i8 %val to i64
+ %red.next = or i64 %red, %val.ext
+ %ec = icmp eq i32 %iv.next, 1000
+ br i1 %ec, label %exit, label %loop
+
+exit:
+ ret i64 %red.next
+}
diff --git a/llvm/test/tools/llc/save-stats.ll b/llvm/test/tools/llc/save-stats.ll
new file mode 100644
index 0000000..94b17e5
--- /dev/null
+++ b/llvm/test/tools/llc/save-stats.ll
@@ -0,0 +1,15 @@
+; REQUIRES: asserts
+
+; RUN: llc -mtriple=arm64-apple-macosx --save-stats=obj -o %t.s %s && cat %t.stats | FileCheck %s
+; RUN: llc -mtriple=arm64-apple-macosx --save-stats=cwd -o %t.s %s && cat %{t:stem}.tmp.stats | FileCheck %s
+; RUN: llc -mtriple=arm64-apple-macosx --save-stats -o %t.s %s && cat %{t:stem}.tmp.stats | FileCheck %s
+; RUN: not llc -mtriple=arm64-apple-macosx --save-stats=invalid -o %t.s %s 2>&1 | FileCheck %s --check-prefix=INVALID_ARG
+
+; CHECK: {
+; CHECK: "asm-printer.EmittedInsts":
+; CHECK: }
+
+; INVALID_ARG: {{.*}}llc{{.*}}: for the --save-stats option: Cannot find option named 'invalid'!
+define i32 @func() {
+ ret i32 0
+}
diff --git a/llvm/test/tools/llvm-rc/Inputs/octal-in-range.rc b/llvm/test/tools/llvm-rc/Inputs/octal-in-range.rc
new file mode 100644
index 0000000..8327ef9
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/Inputs/octal-in-range.rc
@@ -0,0 +1,4 @@
+1 VERSIONINFO
+FILEVERSION 0010,0010,0010,0010
+BEGIN
+END
diff --git a/llvm/test/tools/llvm-rc/Inputs/octal-out-of-range.rc b/llvm/test/tools/llvm-rc/Inputs/octal-out-of-range.rc
new file mode 100644
index 0000000..ce520f2
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/Inputs/octal-out-of-range.rc
@@ -0,0 +1,4 @@
+1 VERSIONINFO
+FILEVERSION 9,08,09,1
+BEGIN
+END
diff --git a/llvm/test/tools/llvm-rc/Inputs/tokens.rc b/llvm/test/tools/llvm-rc/Inputs/tokens.rc
index 20f7791..caf01ae 100644
--- a/llvm/test/tools/llvm-rc/Inputs/tokens.rc
+++ b/llvm/test/tools/llvm-rc/Inputs/tokens.rc
@@ -1,4 +1,4 @@
-1 + 2 - 3214L & 0x120894 032173 2|&~+(-7){0xabcdef 0xABCDEFl} Begin End
+1 + 2 - 3214L & 0x120894 032173 -0042 009 2|&~+(-7){0xabcdef 0xABCDEFl} Begin End
1*3/4
He11o LLVM
identifier-with-dashes
diff --git a/llvm/test/tools/llvm-rc/octal.test b/llvm/test/tools/llvm-rc/octal.test
new file mode 100644
index 0000000..686c1fc
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/octal.test
@@ -0,0 +1,38 @@
+; RUN: llvm-rc -no-preprocess /FO %t.in-range-rc.res -- %p/Inputs/octal-in-range.rc
+; RUN: llvm-readobj %t.in-range-rc.res | FileCheck %s --check-prefix=IN-RANGE-RC
+; RUN: llvm-windres --no-preprocess %p/Inputs/octal-in-range.rc %t.in-range-windres.res
+; RUN: llvm-readobj %t.in-range-windres.res | FileCheck %s --check-prefix=IN-RANGE-WINDRES
+
+; IN-RANGE-RC: Data: (
+; IN-RANGE-RC-NEXT: 0000: 5C003400 00005600 53005F00 56004500 |\.4...V.S._.V.E.|
+; IN-RANGE-RC-NEXT: 0010: 52005300 49004F00 4E005F00 49004E00 |R.S.I.O.N._.I.N.|
+; IN-RANGE-RC-NEXT: 0020: 46004F00 00000000 BD04EFFE 00000100 |F.O.............|
+; IN-RANGE-RC-NEXT: 0030: 0A000A00 0A000A00 00000000 00000000 |................|
+; IN-RANGE-RC-NEXT: 0040: 00000000 00000000 00000000 00000000 |................|
+; IN-RANGE-RC-NEXT: 0050: 00000000 00000000 00000000 |............|
+; IN-RANGE-RC-NEXT: )
+
+; IN-RANGE-WINDRES: Data: (
+; IN-RANGE-WINDRES-NEXT: 0000: 5C003400 00005600 53005F00 56004500 |\.4...V.S._.V.E.|
+; IN-RANGE-WINDRES-NEXT: 0010: 52005300 49004F00 4E005F00 49004E00 |R.S.I.O.N._.I.N.|
+; IN-RANGE-WINDRES-NEXT: 0020: 46004F00 00000000 BD04EFFE 00000100 |F.O.............|
+; IN-RANGE-WINDRES-NEXT: 0030: 08000800 08000800 00000000 00000000 |................|
+; IN-RANGE-WINDRES-NEXT: 0040: 00000000 00000000 00000000 00000000 |................|
+; IN-RANGE-WINDRES-NEXT: 0050: 00000000 00000000 00000000 |............|
+; IN-RANGE-WINDRES-NEXT: )
+
+; RUN: llvm-rc -no-preprocess /FO %t.out-of-range-rc.res -- %p/Inputs/octal-out-of-range.rc
+; RUN: llvm-readobj %t.out-of-range-rc.res | FileCheck %s --check-prefix=OUT-OF-RANGE-RC
+; RUN: not llvm-windres --no-preprocess %p/Inputs/octal-out-of-range.rc %t.out-of-range-windres.res 2>&1 | FileCheck %s --check-prefix OUT-OF-RANGE-WINDRES
+
+; OUT-OF-RANGE-RC: Data: (
+; OUT-OF-RANGE-RC-NEXT: 0000: 5C003400 00005600 53005F00 56004500 |\.4...V.S._.V.E.|
+; OUT-OF-RANGE-RC-NEXT: 0010: 52005300 49004F00 4E005F00 49004E00 |R.S.I.O.N._.I.N.|
+; OUT-OF-RANGE-RC-NEXT: 0020: 46004F00 00000000 BD04EFFE 00000100 |F.O.............|
+; OUT-OF-RANGE-RC-NEXT: 0030: 08000900 01000900 00000000 00000000 |................|
+; OUT-OF-RANGE-RC-NEXT: 0040: 00000000 00000000 00000000 00000000 |................|
+; OUT-OF-RANGE-RC-NEXT: 0050: 00000000 00000000 00000000 |............|
+; OUT-OF-RANGE-RC-NEXT: )
+
+
+; OUT-OF-RANGE-WINDRES: llvm-rc: Error parsing file: Integer invalid or too large: 08
diff --git a/llvm/test/tools/llvm-rc/tokenizer.test b/llvm/test/tools/llvm-rc/tokenizer.test
index 3062e2b..953b0ca 100644
--- a/llvm/test/tools/llvm-rc/tokenizer.test
+++ b/llvm/test/tools/llvm-rc/tokenizer.test
@@ -9,7 +9,10 @@
; CHECK-NEXT: Int: 3214L; int value = 3214
; CHECK-NEXT: Amp: &
; CHECK-NEXT: Int: 0x120894; int value = 1181844
-; CHECK-NEXT: Int: 032173; int value = 13435
+; CHECK-NEXT: Int: 32173; int value = 32173
+; CHECK-NEXT: Minus: -
+; CHECK-NEXT: Int: 42; int value = 42
+; CHECK-NEXT: Int: 9; int value = 9
; CHECK-NEXT: Int: 2; int value = 2
; CHECK-NEXT: Pipe: |
; CHECK-NEXT: Amp: &