about summary refs log tree commit diff
path: root/tests/run-make
diff options
context:
space:
mode:
authorKaran Janthe <karanjanthe@gmail.com>2025-08-23 20:17:32 +0000
committerKaran Janthe <karanjanthe@gmail.com>2025-09-19 04:02:19 +0000
commite1258e79d6cb709b26ded97d32de6c55f355e2aa (patch)
tree120c3432caefd49bd9b4227318c70c2519c346dc /tests/run-make
parent2f4dfc753fd86c672aa4145940db075a8a149f17 (diff)
downloadrust-e1258e79d6cb709b26ded97d32de6c55f355e2aa.tar.gz
rust-e1258e79d6cb709b26ded97d32de6c55f355e2aa.zip
autodiff: Add basic TypeTree with NoTT flag
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
Diffstat (limited to 'tests/run-make')
-rw-r--r--tests/run-make/autodiff/type-trees/nott-flag/nott.check3
-rw-r--r--tests/run-make/autodiff/type-trees/nott-flag/rmake.rs38
-rw-r--r--tests/run-make/autodiff/type-trees/nott-flag/test.rs15
-rw-r--r--tests/run-make/autodiff/type-trees/nott-flag/with_tt.check3
4 files changed, 59 insertions, 0 deletions
diff --git a/tests/run-make/autodiff/type-trees/nott-flag/nott.check b/tests/run-make/autodiff/type-trees/nott-flag/nott.check
new file mode 100644
index 00000000000..56ef2f0bdf3
--- /dev/null
+++ b/tests/run-make/autodiff/type-trees/nott-flag/nott.check
@@ -0,0 +1,3 @@
+// TODO(KMJ-007): Update this test when TypeTree integration is complete
+// CHECK: square - {[-1]:Float@double} |{[-1]:Pointer}:{}
+// CHECK: ptr %{{[0-9]+}}: {[-1]:Pointer, [-1,0]:Float@double}
\ No newline at end of file
diff --git a/tests/run-make/autodiff/type-trees/nott-flag/rmake.rs b/tests/run-make/autodiff/type-trees/nott-flag/rmake.rs
new file mode 100644
index 00000000000..536164192dc
--- /dev/null
+++ b/tests/run-make/autodiff/type-trees/nott-flag/rmake.rs
@@ -0,0 +1,38 @@
+//@ needs-enzyme
+//@ ignore-cross-compile
+
+use run_make_support::{llvm_filecheck, rfs, rustc};
+
+fn main() {
+    // Test with NoTT flag - should not generate TypeTree metadata
+    let output_nott = rustc()
+        .input("test.rs")
+        .arg("-Zautodiff=Enable,NoTT,PrintTAFn=square")
+        .arg("-Zautodiff=NoPostopt")
+        .opt_level("3")
+        .arg("-Clto=fat")
+        .arg("-g")
+        .run();
+
+    // Write output for NoTT case
+    rfs::write("nott.stdout", output_nott.stdout_utf8());
+    
+    // Test without NoTT flag - should generate TypeTree metadata
+    let output_with_tt = rustc()
+        .input("test.rs")
+        .arg("-Zautodiff=Enable,PrintTAFn=square")
+        .arg("-Zautodiff=NoPostopt")
+        .opt_level("3")
+        .arg("-Clto=fat")
+        .arg("-g")
+        .run();
+
+    // Write output for TypeTree case  
+    rfs::write("with_tt.stdout", output_with_tt.stdout_utf8());
+
+    // Verify NoTT output has minimal TypeTree info
+    llvm_filecheck().patterns("nott.check").stdin_buf(rfs::read("nott.stdout")).run();
+    
+    // Verify normal output will have TypeTree info (once implemented)
+    llvm_filecheck().patterns("with_tt.check").stdin_buf(rfs::read("with_tt.stdout")).run();
+}
\ No newline at end of file
diff --git a/tests/run-make/autodiff/type-trees/nott-flag/test.rs b/tests/run-make/autodiff/type-trees/nott-flag/test.rs
new file mode 100644
index 00000000000..5c634eea035
--- /dev/null
+++ b/tests/run-make/autodiff/type-trees/nott-flag/test.rs
@@ -0,0 +1,15 @@
+#![feature(autodiff)]
+
+use std::autodiff::autodiff_reverse;
+
+#[autodiff_reverse(d_square, Duplicated, Active)]
+#[no_mangle]
+fn square(x: &f64) -> f64 {
+    x * x
+}
+
+fn main() {
+    let x = 2.0;
+    let mut dx = 0.0;
+    let _result = d_square(&x, &mut dx, 1.0);
+}
\ No newline at end of file
diff --git a/tests/run-make/autodiff/type-trees/nott-flag/with_tt.check b/tests/run-make/autodiff/type-trees/nott-flag/with_tt.check
new file mode 100644
index 00000000000..56ef2f0bdf3
--- /dev/null
+++ b/tests/run-make/autodiff/type-trees/nott-flag/with_tt.check
@@ -0,0 +1,3 @@
+// TODO(KMJ-007): Update this test when TypeTree integration is complete
+// CHECK: square - {[-1]:Float@double} |{[-1]:Pointer}:{}
+// CHECK: ptr %{{[0-9]+}}: {[-1]:Pointer, [-1,0]:Float@double}
\ No newline at end of file