// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py // REQUIRES: aarch64-registered-target // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -o /dev/null %s #include // CHECK-LABEL: @test_svptrue_b8( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 31) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z15test_svptrue_b8v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 31) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_b8() { return svptrue_b8(); } // CHECK-LABEL: @test_svptrue_b16( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) // CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv8i1( [[TMP0]]) // CHECK-NEXT: ret [[TMP1]] // // CPP-CHECK-LABEL: @_Z16test_svptrue_b16v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv8i1( [[TMP0]]) // CPP-CHECK-NEXT: ret [[TMP1]] // svbool_t test_svptrue_b16() { return svptrue_b16(); } // CHECK-LABEL: @test_svptrue_b32( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) // CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( [[TMP0]]) // CHECK-NEXT: ret [[TMP1]] // // CPP-CHECK-LABEL: @_Z16test_svptrue_b32v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( [[TMP0]]) // CPP-CHECK-NEXT: ret [[TMP1]] // svbool_t test_svptrue_b32() { return svptrue_b32(); } // CHECK-LABEL: @test_svptrue_b64( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) // CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( [[TMP0]]) // CHECK-NEXT: ret [[TMP1]] // // CPP-CHECK-LABEL: @_Z16test_svptrue_b64v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( [[TMP0]]) // CPP-CHECK-NEXT: ret [[TMP1]] // svbool_t test_svptrue_b64() { return svptrue_b64(); } // CHECK-LABEL: @test_svptrue_pat_b8( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 0) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z19test_svptrue_pat_b8v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 0) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8() { return svptrue_pat_b8(SV_POW2); } // CHECK-LABEL: @test_svptrue_pat_b8_1( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 1) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_1v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 1) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_1() { return svptrue_pat_b8(SV_VL1); } // CHECK-LABEL: @test_svptrue_pat_b8_2( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 2) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_2v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 2) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_2() { return svptrue_pat_b8(SV_VL2); } // CHECK-LABEL: @test_svptrue_pat_b8_3( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 3) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_3v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 3) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_3() { return svptrue_pat_b8(SV_VL3); } // CHECK-LABEL: @test_svptrue_pat_b8_4( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 4) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_4v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 4) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_4() { return svptrue_pat_b8(SV_VL4); } // CHECK-LABEL: @test_svptrue_pat_b8_5( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 5) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_5v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 5) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_5() { return svptrue_pat_b8(SV_VL5); } // CHECK-LABEL: @test_svptrue_pat_b8_6( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 6) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_6v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 6) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_6() { return svptrue_pat_b8(SV_VL6); } // CHECK-LABEL: @test_svptrue_pat_b8_7( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 7) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_7v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 7) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_7() { return svptrue_pat_b8(SV_VL7); } // CHECK-LABEL: @test_svptrue_pat_b8_8( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 8) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_8v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 8) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_8() { return svptrue_pat_b8(SV_VL8); } // CHECK-LABEL: @test_svptrue_pat_b8_9( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 9) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_9v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 9) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_9() { return svptrue_pat_b8(SV_VL16); } // CHECK-LABEL: @test_svptrue_pat_b8_10( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 10) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_10v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 10) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_10() { return svptrue_pat_b8(SV_VL32); } // CHECK-LABEL: @test_svptrue_pat_b8_11( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 11) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_11v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 11) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_11() { return svptrue_pat_b8(SV_VL64); } // CHECK-LABEL: @test_svptrue_pat_b8_12( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 12) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_12v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 12) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_12() { return svptrue_pat_b8(SV_VL128); } // CHECK-LABEL: @test_svptrue_pat_b8_13( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 13) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_13v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 13) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_13() { return svptrue_pat_b8(SV_VL256); } // CHECK-LABEL: @test_svptrue_pat_b8_14( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 29) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_14v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 29) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_14() { return svptrue_pat_b8(SV_MUL4); } // CHECK-LABEL: @test_svptrue_pat_b8_15( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 30) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_15v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 30) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_15() { return svptrue_pat_b8(SV_MUL3); } // CHECK-LABEL: @test_svptrue_pat_b8_16( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 31) // CHECK-NEXT: ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_16v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv16i1(i32 31) // CPP-CHECK-NEXT: ret [[TMP0]] // svbool_t test_svptrue_pat_b8_16() { return svptrue_pat_b8(SV_ALL); } // CHECK-LABEL: @test_svptrue_pat_b16( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 0) // CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv8i1( [[TMP0]]) // CHECK-NEXT: ret [[TMP1]] // // CPP-CHECK-LABEL: @_Z20test_svptrue_pat_b16v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 0) // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv8i1( [[TMP0]]) // CPP-CHECK-NEXT: ret [[TMP1]] // svbool_t test_svptrue_pat_b16() { return svptrue_pat_b16(SV_POW2); } // CHECK-LABEL: @test_svptrue_pat_b32( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 1) // CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( [[TMP0]]) // CHECK-NEXT: ret [[TMP1]] // // CPP-CHECK-LABEL: @_Z20test_svptrue_pat_b32v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 1) // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv4i1( [[TMP0]]) // CPP-CHECK-NEXT: ret [[TMP1]] // svbool_t test_svptrue_pat_b32() { return svptrue_pat_b32(SV_VL1); } // CHECK-LABEL: @test_svptrue_pat_b64( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 2) // CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( [[TMP0]]) // CHECK-NEXT: ret [[TMP1]] // // CPP-CHECK-LABEL: @_Z20test_svptrue_pat_b64v( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 2) // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call @llvm.aarch64.sve.convert.to.svbool.nxv2i1( [[TMP0]]) // CPP-CHECK-NEXT: ret [[TMP1]] // svbool_t test_svptrue_pat_b64() { return svptrue_pat_b64(SV_VL2); }